Skip to content

Commit 6fea025

Browse files
committed
Tons of bug fixes
1 parent 2cc3f9a commit 6fea025

15 files changed

+1522
-887
lines changed

chp12/color.sml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -278,13 +278,7 @@ struct
278278
alias := TM.insert ((!alias), v, u);
279279
movesMap := TM.insert ((!movesMap), u, TS.union(mvU, mvV));
280280
enableMoves (adjacents v);
281-
print ("merging and printing (" ^ (F.makeString (FG.getNodeID nU)) ^ "," ^ (F.makeString (FG.getNodeID nV)) ^ ")\n");
282-
FG.printGraph (fn (t,x) => F.makeString t) (!graph);
283-
List.app (fn x => print ((F.makeString (FG.getNodeID x))^",")) (FG.nodes (!graph));
284-
print "\n";
285281
graph := FG.mergeNodes (!graph) (nU, nV);
286-
print "AFTER\n";
287-
FG.printGraph (fn (t,x) => F.makeString t) (!graph);
288282
List.app decrementoutDegreeEffects adjsV;
289283

290284
if not (isPrecolored u) andalso
@@ -352,17 +346,11 @@ struct
352346
val nID = List.last (!selectStack)
353347
val actualAdjs = List.map getNodeAlias
354348
(FG.adj (gNode nID))
355-
val _ = print "===================PRINTING ACTUAL ADJS===================\n"
356-
val _ = print ("Node: "^(F.makeString nID)^"\n")
357-
val _ = List.app (fn x => (print ((F.makeString x)^", "))) actualAdjs
358-
val _ = print "\n"
359349
val unavColors =
360350
TS.addList(
361351
TS.empty,
362352
List.mapPartial (fn x => TM.find((!colors), x))
363353
actualAdjs);
364-
val _ = TS.app (fn x => (print ((F.makeString x)^", "))) unavColors
365-
val _ = print "\n"
366354
val avalColors = TS.difference(allColors, unavColors)
367355
(*val _ = print ("Getting " ^ Temp.makeString nID ^ "\nunav\n")*)
368356
(*val _ = TS.app (fn x => print (Temp.makeString x ^ "-")) unavColors*)

chp12/frame.sig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ sig
5454
(* Calls an external function, such as C heap management. *)
5555
val externCallFn : string * Tree.exp list -> Tree.exp
5656

57-
val storeLocal : access -> Temp.temp -> Assem.instr
58-
val loadLocal : access -> Temp.temp -> Assem.instr
57+
val storeLocal : frame -> access -> Temp.temp -> Assem.instr
58+
val loadLocal : frame -> access -> Temp.temp -> Assem.instr
5959
(* Function "decorators" - add prologue and epilogue standard mumbo jumbo *)
6060
val procEntryExit : frame * Tree.stm -> Tree.stm
6161
(* Insert a final "instruction" to make sure that special registers and callee saved

chp12/main.sml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ struct
280280

281281
fun printRuntime out =
282282
let
283-
val read = TextIO.openIn("nr.s")
283+
val read = TextIO.openIn("runtime.s")
284284
val _ = TextIO.output(out, TextIO.inputAll(read))
285285
in
286286
()

chp12/mipsframe.sml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -152,17 +152,21 @@ struct
152152
fun externCallFn (s, args) =
153153
CALL (NAME (Temp.namedlabel s), args)
154154

155-
fun storeLocal (InFrame adr) tmp =
156-
Assem.OPER {assem="sw `s0, " ^ (i2s adr) ^ "(`s1)\n",
157-
src=[tmp, getRegTemp sp], dst=[], jump=NONE}
158-
| storeLocal (InReg reg) tmp =
155+
fun storeLocal (f: frame) (InFrame adr) tmp =
156+
Assem.OPER {assem="sw `s0, " ^
157+
(i2s (adr - wordSize * (!(#maxArgsCall f)))) ^
158+
"(`s1)\n",
159+
src=[tmp, getRegTemp fp], dst=[], jump=NONE}
160+
| storeLocal (f: frame) (InReg reg) tmp =
159161
(ErrorMsg.error 0 "Not a frame value.";
160162
Assem.LABEL {assem="", lab=Temp.newlabel ()})
161163

162-
fun loadLocal (InFrame adr) tmp =
163-
Assem.OPER {assem="lw `d0, " ^ (i2s adr) ^ "(`s0)\n",
164-
src=[getRegTemp sp], dst=[tmp], jump=NONE}
165-
| loadLocal (InReg reg) tmp =
164+
fun loadLocal (f: frame) (InFrame adr) tmp =
165+
Assem.OPER {assem="lw `d0, " ^
166+
(i2s (adr - wordSize * (!(#maxArgsCall f)))) ^
167+
"(`s0)\n",
168+
src=[getRegTemp fp], dst=[tmp], jump=NONE}
169+
| loadLocal (f: frame) (InReg reg) tmp =
166170
(ErrorMsg.error 0 "Not a frame value.";
167171
Assem.LABEL {assem="", lab=Temp.newlabel ()})
168172

0 commit comments

Comments
 (0)