src/share/vm/opto/subnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/subnode.cpp Thu May 19 23:23:58 2016
--- new/src/share/vm/opto/subnode.cpp Thu May 19 23:23:58 2016
*** 576,587 ****
--- 576,591 ----
if (bot0 || bot1) {
// All unsigned values are LE -1 and GE 0.
if (lo0 == 0 && hi0 == 0) {
return TypeInt::CC_LE; // 0 <= bot
+ } else if ((jint)lo0 == -1 && (jint)hi0 == -1) {
+ return TypeInt::CC_GE; // -1 >= bot
} else if (lo1 == 0 && hi1 == 0) {
return TypeInt::CC_GE; // bot >= 0
+ } else if ((jint)lo1 == -1 && (jint)hi1 == -1) {
+ return TypeInt::CC_LE; // bot <= -1
}
} else {
// We can use ranges of the form [lo..hi] if signs are the same.
assert(lo0 <= hi0 && lo1 <= hi1, "unsigned ranges are valid");
// results are reversed, '-' > '+' for unsigned compare
src/share/vm/opto/subnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File