package vaporize; import cs132.vapor.ast.*; import st.*; import misc.*; import java.util.*; public class SpillEverywhere extends VInstr.VisitorPR { private VaporProgram vp; private Kettle kettle; public SpillEverywhere(VaporProgram vp, ArrayList 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; } }