204 |
* Otherwise, we'll just use the normal version. |
* Otherwise, we'll just use the normal version. |
205 |
*) |
*) |
206 |
val gctypes = !gctypes |
val gctypes = !gctypes |
207 |
|
|
208 |
|
val _ = if gctypes then |
209 |
|
let val gcMap = GCCells.newGCMap() |
210 |
|
in enterGC := Intmap.add gcMap; |
211 |
|
GCCells.setGCMap gcMap |
212 |
|
end |
213 |
|
else () |
214 |
|
|
215 |
val (newReg, newRegWithCty, newRegWithKind, newFreg) = |
val (newReg, newRegWithCty, newRegWithKind, newFreg) = |
216 |
if gctypes then |
if gctypes then |
217 |
let val newReg = GCCells.newCell Cells.GP |
let val newReg = GCCells.newCell Cells.GP |
221 |
in (newReg, newRegWithCty, newRegWithKind, newFreg) end |
in (newReg, newRegWithCty, newRegWithKind, newFreg) end |
222 |
else (Cells.newReg, Cells.newReg, Cells.newReg, Cells.newFreg) |
else (Cells.newReg, Cells.newReg, Cells.newReg, Cells.newFreg) |
223 |
|
|
|
val _ = if gctypes then |
|
|
let val gcMap = GCCells.newGCMap() |
|
|
in enterGC := Intmap.add gcMap; |
|
|
GCCells.setGCMap gcMap |
|
|
end |
|
|
else () |
|
224 |
fun markPTR e = if gctypes then M.MARK(e,ptr) else e |
fun markPTR e = if gctypes then M.MARK(e,ptr) else e |
225 |
fun markI32 e = if gctypes then M.MARK(e,i32) else e |
fun markI32 e = if gctypes then M.MARK(e,i32) else e |
226 |
fun markFLT e = if gctypes then M.FMARK(e,flt) else e |
fun markFLT e = if gctypes then M.FMARK(e,flt) else e |