diff options
Diffstat (limited to 'vaporize/SpillEverywhere.java')
-rw-r--r-- | vaporize/SpillEverywhere.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/vaporize/SpillEverywhere.java b/vaporize/SpillEverywhere.java new file mode 100644 index 0000000..317c79d --- /dev/null +++ b/vaporize/SpillEverywhere.java @@ -0,0 +1,92 @@ +package vaporize; + +import cs132.vapor.ast.*; +import st.*; +import misc.*; +import java.util.*; + +public class SpillEverywhere extends VInstr.VisitorPR<String, String, RuntimeException> { + + private VaporProgram vp; + private Kettle kettle; + + public SpillEverywhere(VaporProgram vp, ArrayList<String> vapor) { + this.vp = vp; + this.kettle = new Kettle(vapor); + + for (VFunction f : this.vp.functions) { + MinimalLogger.severe("Num : " + Arrays.toString(f.vars)); + this.kettle.replaceFunctionDeclare(f, 0, 0, 3); // use three registers for "spill everywhere" + for (VInstr s : f.body) { + s.accept("", this); + } + } + MinimalLogger.info(kettle.dump()); + } + + + public String visit(String p, VMemRead n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.getClass().getSimpleName(), + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + + public String visit(String p, VMemWrite n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.getClass().getSimpleName(), + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + + public String visit(String p, VAssign n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.getClass().getSimpleName(), + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + + public String visit(String p, VBranch n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.getClass().getSimpleName(), + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + + public String visit(String p, VGoto n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.getClass().getSimpleName(), + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + + public String visit(String p, VCall n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.getClass().getSimpleName(), + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + + public String visit(String p, VBuiltIn n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.op.name, + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + + public String visit(String p, VReturn n) throws RuntimeException { + MinimalLogger.info(String.format("->%s (%s:%s)", + n.getClass().getSimpleName(), + this.kettle.get(n).trim(), + n.sourcePos.toString())); + return null; + } + +} |