136 }
137
138 protected DebugContext getDebug() {
139 return res.getLIR().getDebug();
140 }
141
142 public static boolean isVariableOrRegister(Value value) {
143 return isVariable(value) || isRegister(value);
144 }
145
146 abstract static class IntervalPredicate {
147
148 abstract boolean apply(TraceInterval i);
149 }
150
151 static final IntervalPredicate IS_VARIABLE_INTERVAL = new IntervalPredicate() {
152
153 @Override
154 public boolean apply(TraceInterval i) {
155 // all TraceIntervals are variable intervals
156 return true;
157 }
158 };
159 private static final Comparator<TraceInterval> SORT_BY_FROM_COMP = new Comparator<TraceInterval>() {
160
161 @Override
162 public int compare(TraceInterval a, TraceInterval b) {
163 return a.from() - b.from();
164 }
165 };
166 private static final Comparator<TraceInterval> SORT_BY_SPILL_POS_COMP = new Comparator<TraceInterval>() {
167
168 @Override
169 public int compare(TraceInterval a, TraceInterval b) {
170 return a.spillDefinitionPos() - b.spillDefinitionPos();
171 }
172 };
173
174 public TraceLinearScan createAllocator(Trace trace) {
175 return new TraceLinearScan(trace);
176 }
|
136 }
137
138 protected DebugContext getDebug() {
139 return res.getLIR().getDebug();
140 }
141
142 public static boolean isVariableOrRegister(Value value) {
143 return isVariable(value) || isRegister(value);
144 }
145
146 abstract static class IntervalPredicate {
147
148 abstract boolean apply(TraceInterval i);
149 }
150
151 static final IntervalPredicate IS_VARIABLE_INTERVAL = new IntervalPredicate() {
152
153 @Override
154 public boolean apply(TraceInterval i) {
155 // all TraceIntervals are variable intervals
156 return !i.preSpilledAllocated();
157 }
158 };
159 private static final Comparator<TraceInterval> SORT_BY_FROM_COMP = new Comparator<TraceInterval>() {
160
161 @Override
162 public int compare(TraceInterval a, TraceInterval b) {
163 return a.from() - b.from();
164 }
165 };
166 private static final Comparator<TraceInterval> SORT_BY_SPILL_POS_COMP = new Comparator<TraceInterval>() {
167
168 @Override
169 public int compare(TraceInterval a, TraceInterval b) {
170 return a.spillDefinitionPos() - b.spillDefinitionPos();
171 }
172 };
173
174 public TraceLinearScan createAllocator(Trace trace) {
175 return new TraceLinearScan(trace);
176 }
|