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