src/share/vm/runtime/stackValue.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/runtime/stackValue.cpp Wed Jul 22 12:17:29 2009
--- new/src/share/vm/runtime/stackValue.cpp Wed Jul 22 12:17:29 2009
*** 102,112 ****
--- 102,122 ----
Handle h(oopDesc::decode_heap_oop(value.noop));
return new StackValue(h);
}
#endif
case Location::oop: {
Handle h(*(oop *)value_addr); // Wrap a handle around the oop
+ oop val = *(oop *)value_addr;
+ #ifdef _LP64
+ if (Universe::narrow_oop_base() == (address)(void*)val) {
+ // Compiled code may produce decoded oop = narrow_oop_base
+ // when a narrow oop implicit null check is used.
+ // The narrow_oop_base could be NULL or be the address
+ // of the page below heap. Use NULL value for both cases.
+ val = (oop)NULL;
+ }
+ #endif
+ Handle h(val); // Wrap a handle around the oop
return new StackValue(h);
}
case Location::addr: {
ShouldNotReachHere(); // both C1 and C2 now inline jsrs
}
src/share/vm/runtime/stackValue.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File