mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 19:44:41 +02:00
6826736: CMS: core dump with -XX:+UseCompressedOops
Fix deoptimization code and OopMapSet::all_do() to check for oop = narrow_oop_base. Reviewed-by: jcoomes, phh, ysr, never
This commit is contained in:
parent
db41917a7e
commit
b0f75657c5
5 changed files with 111 additions and 2 deletions
|
@ -104,7 +104,17 @@ StackValue* StackValue::create_stack_value(const frame* fr, const RegisterMap* r
|
|||
}
|
||||
#endif
|
||||
case Location::oop: {
|
||||
Handle h(*(oop *)value_addr); // Wrap a handle around the oop
|
||||
oop val = *(oop *)value_addr;
|
||||
#ifdef _LP64
|
||||
if (Universe::is_narrow_oop_base(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: {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue