src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/Range.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/Range.java Mon Mar 20 17:39:51 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/Range.java Mon Mar 20 17:39:51 2017
*** 25,36 ****
--- 25,34 ----
/**
* Represents a range of integers from a start (inclusive) to an end (exclusive.
*/
public final class Range {
public static final Range EndMarker = new Range(Integer.MAX_VALUE, Integer.MAX_VALUE, null);
/**
* The start of the range, inclusive.
*/
public int from;
*** 59,105 ****
--- 57,108 ----
this.from = from;
this.to = to;
this.next = next;
}
+ public boolean isEndMarker() {
+ assert from != Integer.MAX_VALUE || (to == Integer.MAX_VALUE && next == null);
+ return from == Integer.MAX_VALUE;
+ }
+
int intersectsAt(Range other) {
Range r1 = this;
Range r2 = other;
assert r2 != null : "null ranges not allowed";
! assert r1 != EndMarker && r2 != EndMarker : "empty ranges not allowed";
! assert !r1.isEndMarker() && !r2.isEndMarker() : "empty ranges not allowed";
do {
if (r1.from < r2.from) {
if (r1.to <= r2.from) {
r1 = r1.next;
! if (r1 == EndMarker) {
! if (r1.isEndMarker()) {
return -1;
}
} else {
return r2.from;
}
} else {
if (r2.from < r1.from) {
if (r2.to <= r1.from) {
r2 = r2.next;
! if (r2 == EndMarker) {
! if (r2.isEndMarker()) {
return -1;
}
} else {
return r1.from;
}
} else { // r1.from() == r2.from()
if (r1.from == r1.to) {
r1 = r1.next;
! if (r1 == EndMarker) {
! if (r1.isEndMarker()) {
return -1;
}
} else {
if (r2.from == r2.to) {
r2 = r2.next;
! if (r2 == EndMarker) {
! if (r2.isEndMarker()) {
return -1;
}
} else {
return r1.from;
}
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/Range.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File