comparison src/share/vm/runtime/stackValue.cpp @ 858:5314d85ffd54

6826736: CMS: core dump with -XX:+UseCompressedOops Summary: Fix deoptimization code and OopMapSet::all_do() to check for oop = narrow_oop_base. Reviewed-by: jcoomes, phh, ysr, never
author kvn
date Wed, 22 Jul 2009 15:48:51 -0700
parents b109e761e927
children 18f526145aea
comparison
equal deleted inserted replaced
857:17173cb6e48d 858:5314d85ffd54
102 Handle h(oopDesc::decode_heap_oop(value.noop)); 102 Handle h(oopDesc::decode_heap_oop(value.noop));
103 return new StackValue(h); 103 return new StackValue(h);
104 } 104 }
105 #endif 105 #endif
106 case Location::oop: { 106 case Location::oop: {
107 Handle h(*(oop *)value_addr); // Wrap a handle around the oop 107 oop val = *(oop *)value_addr;
108 #ifdef _LP64
109 if (Universe::is_narrow_oop_base(val)) {
110 // Compiled code may produce decoded oop = narrow_oop_base
111 // when a narrow oop implicit null check is used.
112 // The narrow_oop_base could be NULL or be the address
113 // of the page below heap. Use NULL value for both cases.
114 val = (oop)NULL;
115 }
116 #endif
117 Handle h(val); // Wrap a handle around the oop
108 return new StackValue(h); 118 return new StackValue(h);
109 } 119 }
110 case Location::addr: { 120 case Location::addr: {
111 ShouldNotReachHere(); // both C1 and C2 now inline jsrs 121 ShouldNotReachHere(); // both C1 and C2 now inline jsrs
112 } 122 }