Fix Integer.compareUnsigned code to work with Java 1.7
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java b/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java
index c937886..71e0489 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java
@@ -145,7 +145,12 @@
return numSkipped[0] - skipInterval[0] - 1;
}
-
+
+ // Java 1.8 adds this Integer.compareUnsigned method, but we are Java 1.7 here:
+ private static int Integer_compareUnsigned(int x, int y) {
+ return Integer.compare(x + Integer.MIN_VALUE, y + Integer.MIN_VALUE);
+ }
+
private boolean loadNextSkip(int level) throws IOException {
// we have to skip, the target document is greater than the current
// skip list entry
@@ -154,7 +159,7 @@
numSkipped[level] += skipInterval[level];
// numSkipped may overflow a signed int, so compare as unsigned.
- if (Integer.compareUnsigned(numSkipped[level], docCount) > 0) {
+ if (Integer_compareUnsigned(numSkipped[level], docCount) > 0) {
// this skip list is exhausted
skipDoc[level] = Integer.MAX_VALUE;
if (numberOfSkipLevels > level) numberOfSkipLevels = level;