Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/compiler/CodeGen/cpscompile/invokegc.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/CodeGen/cpscompile/invokegc.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 546, Thu Feb 24 14:04:51 2000 UTC revision 555, Fri Mar 3 16:10:30 2000 UTC
# Line 28  Line 28 
28    
29     fun error msg = ErrorMsg.impossible("InvokeGC."^msg)     fun error msg = ErrorMsg.impossible("InvokeGC."^msg)
30    
    type mlrisc = (unit, unit, unit, unit) T.mlrisc  
    type stm    = (unit, unit, unit, unit) T.stm  
    type rexp   = (unit, unit, unit, unit) T.rexp  
    type fexp   = (unit, unit, unit, unit) T.fexp  
   
31     type t = { maxAlloc : int,     type t = { maxAlloc : int,
32                regfmls  : mlrisc list,                regfmls  : T.mlrisc list,
33                regtys   : CPS.cty list,                regtys   : CPS.cty list,
34                return   : stm                return   : T.stm
35              }              }
36    
37     type stream = (stm,Cells.regmap,mlrisc list) T.stream     type stream = (T.stm,Cells.regmap,T.mlrisc list) T.stream
38    
39     val debug = Control.MLRISC.getFlag "debug-gc";     val debug = Control.MLRISC.getFlag "debug-gc";
40    
# Line 62  Line 57 
57          {known     : bool,            (* known function ? *)          {known     : bool,            (* known function ? *)
58           optimized : bool,            (* optimized? *)           optimized : bool,            (* optimized? *)
59           lab       : Label.label ref, (* labels to invoke GC *)           lab       : Label.label ref, (* labels to invoke GC *)
60           boxed     : rexp list,       (* locations with boxed objects *)           boxed     : T.rexp list,     (* locations with boxed objects *)
61           int32     : rexp list,       (* locations with int32 objects *)           int32     : T.rexp list,     (* locations with int32 objects *)
62           float     : fexp list,       (* locations with float objects *)           float     : T.fexp list,     (* locations with float objects *)
63           regfmls   : mlrisc list,     (* all live registers *)           regfmls   : T.mlrisc list,   (* all live registers *)
64           ret       : stm}             (* how to return *)           ret       : T.stm}           (* how to return *)
65      | MODULE of      | MODULE of
66          {info: gcInfo,          {info: gcInfo,
67           addrs: Label.label list ref} (* addrs associated with long jump *)           addrs: Label.label list ref} (* addrs associated with long jump *)
# Line 104  Line 99 
99     local val use = map T.GPR gcParamRegs     local val use = map T.GPR gcParamRegs
100           val def = case C.exhausted of NONE => use           val def = case C.exhausted of NONE => use
101                                       | SOME cc => T.CCR cc::use                                       | SOME cc => T.CCR cc::use
102     in  val gcCall : stm =     in  val gcCall =
103            T.ANNOTATION(            T.ANNOTATION(
104            T.CALL(            T.CALL(
105              T.LOAD(32, T.ADD(addrTy,C.stackptr,T.LI MS.startgcOffset), R.stack),              T.LOAD(32, T.ADD(addrTy,C.stackptr,T.LI MS.startgcOffset), R.stack),
# Line 303  Line 298 
298         datatype binding =         datatype binding =
299           Reg     of Cells.cell               (* integer register *)           Reg     of Cells.cell               (* integer register *)
300         | Freg    of Cells.cell               (* floating point register*)         | Freg    of Cells.cell               (* floating point register*)
301         | Mem     of rexp * R.region          (* integer memory register *)         | Mem     of T.rexp * R.region        (* integer memory register *)
302         | Record  of {boxed: bool,            (* is it a boxed record *)         | Record  of {boxed: bool,            (* is it a boxed record *)
303                       words:int,              (* how many words *)                       words:int,              (* how many words *)
304                       reg: Cells.cell,        (* address of this record *)                       reg: Cells.cell,        (* address of this record *)

Legend:
Removed from v.546  
changed lines
  Added in v.555

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0