summaryrefslogtreecommitdiff
path: root/vaporize/library/RegisterAlloc.java
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-26 15:50:38 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-26 15:50:38 -0600
commit1851f5e76018ec1df3b55dce6cc9a64c9497bf7a (patch)
tree30f629f7b137a494d4202487f4e22df2d9456481 /vaporize/library/RegisterAlloc.java
parent012298517078170762112abe2654dc69b2f146e1 (diff)
Rearrange directory structure
Diffstat (limited to 'vaporize/library/RegisterAlloc.java')
-rw-r--r--vaporize/library/RegisterAlloc.java71
1 files changed, 0 insertions, 71 deletions
diff --git a/vaporize/library/RegisterAlloc.java b/vaporize/library/RegisterAlloc.java
deleted file mode 100644
index b316b96..0000000
--- a/vaporize/library/RegisterAlloc.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package vaporize.library;
-
-import java.util.*;
-import misc.*;
-
-public class RegisterAlloc {
-
- private LIRDict intervals;
- private String[] all_registers;
- private Stack<String> free_registers;
- private TreeSet<LIRVar> active;
-
- public RegisterAlloc(LIRDict intervals, String[] all_registers) {
- this.intervals = intervals;
- this.all_registers = all_registers;
- this.free_registers = new Stack<String>();
- this.free_registers.addAll(Arrays.asList(this.all_registers));
- this.active = new TreeSet<LIRVar>((v1, v2) -> {
- int ret;
- if (v1.getLastUse() > v2.getLastUse())
- ret = 1;
- else if (v1.getLastUse() < v2.getLastUse())
- ret = -1;
- else if (v1.equals(v2))
- ret = 0;
- else
- ret = 1;
- return ret;
- });
-
- MinimalLogger.info(String.format("Starting allocation with registers %s",
- this.free_registers.toString()));
-
- String register;
- for (LIRVar interval : this.intervals.getIntervals()) {
- this.expireOldIntervals(interval);
- if (this.active.size() >= this.all_registers.length)
- this.spillAtInterval(interval);
- else {
- register = this.free_registers.pop();
- interval.assignRegister(register);
- this.active.add(interval);
- MinimalLogger.info(String.format("Assigning register %s to %s.",
- register,
- interval.toString()));
-
- }
- }
- }
-
- private void expireOldIntervals(LIRVar interval) {
- for (LIRVar active : new TreeSet<LIRVar>(this.active)) {
- if (active.getLastUse() >= interval.getFirstDef())
- return;
- MinimalLogger.info("Register " + active.getAssignedRegister() + " expired!");
- this.active.remove(active);
- this.free_registers.push(active.getAssignedRegister());
- }
- }
-
- private void spillAtInterval(LIRVar interval) {
- MinimalLogger.severe(String.format("Ran out of free registers, but a spill for %s was not performed!",
- interval.toString()));
- this.intervals.addSpilledNum();
- // LIRVar spill = this.active.get(this.active.length()-1);
- // if (spill.getLastUse() > interval.getLastUse()) {
- // ;
- // }
- }
-
-}