mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
6782820: Server VM fails with "unhandled implicit exception in compiled code"
Restore the code which sets a control edge for a klass load node. Reviewed-by: never
This commit is contained in:
parent
6483f9c7f8
commit
29488f1216
2 changed files with 8 additions and 0 deletions
|
@ -2192,6 +2192,7 @@ static void final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &fpu ) {
|
||||||
|
|
||||||
case Op_DecodeN:
|
case Op_DecodeN:
|
||||||
assert(!n->in(1)->is_EncodeP(), "should be optimized out");
|
assert(!n->in(1)->is_EncodeP(), "should be optimized out");
|
||||||
|
assert(n->in(0) == NULL, "no control");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Op_EncodeP: {
|
case Op_EncodeP: {
|
||||||
|
|
|
@ -1724,6 +1724,13 @@ void PhaseMacroExpand::expand_lock_node(LockNode *lock) {
|
||||||
if (klass_node == NULL) {
|
if (klass_node == NULL) {
|
||||||
Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes());
|
Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes());
|
||||||
klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) );
|
klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) );
|
||||||
|
#ifdef _LP64
|
||||||
|
if (UseCompressedOops && klass_node->is_DecodeN()) {
|
||||||
|
assert(klass_node->in(1)->Opcode() == Op_LoadNKlass, "sanity");
|
||||||
|
klass_node->in(1)->init_req(0, ctrl);
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
klass_node->init_req(0, ctrl);
|
||||||
}
|
}
|
||||||
Node *proto_node = make_load(ctrl, mem, klass_node, Klass::prototype_header_offset_in_bytes() + sizeof(oopDesc), TypeX_X, TypeX_X->basic_type());
|
Node *proto_node = make_load(ctrl, mem, klass_node, Klass::prototype_header_offset_in_bytes() + sizeof(oopDesc), TypeX_X, TypeX_X->basic_type());
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue