summaryrefslogtreecommitdiff
path: root/V2VM.java
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-22 23:12:05 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-22 23:12:05 -0600
commitdf648047d1899345dd8b2d82f78b480712d4d8d6 (patch)
treebb001bc35ad42409287bc1c8bb470255d03bde4c /V2VM.java
parent110b4f031aea36445250d79c7257a57f15fb7b82 (diff)
Implement register allocation (no spill)
Diffstat (limited to 'V2VM.java')
-rw-r--r--V2VM.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/V2VM.java b/V2VM.java
index f34f5fd..1dfa4cf 100644
--- a/V2VM.java
+++ b/V2VM.java
@@ -12,6 +12,7 @@ import cs132.vapor.ast.VInstr;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
+import java.util.Arrays;
import cfg.*;
import misc.*;
@@ -30,11 +31,15 @@ public class V2VM {
VaporProgram prog = parseVapor(System.in, System.out);
- MinimalLogger.info(String.format("Generating CFGs..."));
+ MinimalLogger.info(String.format("Generating Intervals..."));
LIRVisitor lv = new LIRVisitor(prog, strProg);
ArrayList<LIRDict> lvs = lv.getLIRs();
- // MinimalLogger.info(String.format("Spilling Everywhere..."));
- // SpillEverywhere spill = new SpillEverywhere(prog, strProg);
+
+ for (LIRDict interval : lvs) {
+ MinimalLogger.info(String.format("Starting Linear Allocation for %s...",
+ interval.getFunction()));
+ new RegisterAlloc(interval, Arrays.copyOfRange(prog.registers, 6, 22));
+ }
} catch (IOException e) {
System.out.println(e.toString());