8000623: tools/javac/Diagnostics/6769027/T6769027.java crashes in PSPromotionManager::copy_to_survivor_space
Fix type of method pointer load from vtable. Reviewed-by: twisti, johnc, roland
This commit is contained in:
parent
515f1281e1
commit
2d3b78abcc
@ -3047,9 +3047,9 @@ bool Compile::Constant::operator==(const Constant& other) {
|
||||
case T_LONG:
|
||||
case T_DOUBLE: return (_v._value.j == other._v._value.j);
|
||||
case T_OBJECT:
|
||||
case T_METADATA: return (_v._metadata == other._v._metadata);
|
||||
case T_ADDRESS: return (_v._value.l == other._v._value.l);
|
||||
case T_VOID: return (_v._value.l == other._v._value.l); // jump-table entries
|
||||
case T_METADATA: return (_v._metadata == other._v._metadata);
|
||||
default: ShouldNotReachHere();
|
||||
}
|
||||
return false;
|
||||
|
@ -149,7 +149,7 @@ class Compile : public Phase {
|
||||
private:
|
||||
BasicType _type;
|
||||
union {
|
||||
jvalue _value;
|
||||
jvalue _value;
|
||||
Metadata* _metadata;
|
||||
} _v;
|
||||
int _offset; // offset of this constant (in bytes) relative to the constant table base.
|
||||
|
@ -3830,7 +3830,7 @@ Node* LibraryCallKit::generate_virtual_guard(Node* obj_klass,
|
||||
vtable_index*vtableEntry::size()) * wordSize +
|
||||
vtableEntry::method_offset_in_bytes();
|
||||
Node* entry_addr = basic_plus_adr(obj_klass, entry_offset);
|
||||
Node* target_call = make_load(NULL, entry_addr, TypeInstPtr::NOTNULL, T_OBJECT);
|
||||
Node* target_call = make_load(NULL, entry_addr, TypePtr::NOTNULL, T_ADDRESS);
|
||||
|
||||
// Compare the target method with the expected method (e.g., Object.hashCode).
|
||||
const TypePtr* native_call_addr = TypeMetadataPtr::make(method);
|
||||
|
Loading…
Reference in New Issue
Block a user