comparison src/share/vm/opto/macro.cpp @ 490:dd70dd4c91de

6782820: Server VM fails with "unhandled implicit exception in compiled code" Summary: Restore the code which sets a control edge for a klass load node. Reviewed-by: never
author kvn
date Tue, 16 Dec 2008 12:23:39 -0800
parents 424f9bfe6b96
children 7fe62bb75bf4
comparison
equal deleted inserted replaced
476:7b75310e57e2 490:dd70dd4c91de
1722 // Special-case a fresh allocation to avoid building nodes: 1722 // Special-case a fresh allocation to avoid building nodes:
1723 Node* klass_node = AllocateNode::Ideal_klass(obj, &_igvn); 1723 Node* klass_node = AllocateNode::Ideal_klass(obj, &_igvn);
1724 if (klass_node == NULL) { 1724 if (klass_node == NULL) {
1725 Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes()); 1725 Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes());
1726 klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) ); 1726 klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) );
1727 #ifdef _LP64
1728 if (UseCompressedOops && klass_node->is_DecodeN()) {
1729 assert(klass_node->in(1)->Opcode() == Op_LoadNKlass, "sanity");
1730 klass_node->in(1)->init_req(0, ctrl);
1731 } else
1732 #endif
1733 klass_node->init_req(0, ctrl);
1727 } 1734 }
1728 Node *proto_node = make_load(ctrl, mem, klass_node, Klass::prototype_header_offset_in_bytes() + sizeof(oopDesc), TypeX_X, TypeX_X->basic_type()); 1735 Node *proto_node = make_load(ctrl, mem, klass_node, Klass::prototype_header_offset_in_bytes() + sizeof(oopDesc), TypeX_X, TypeX_X->basic_type());
1729 1736
1730 Node* thread = transform_later(new (C, 1) ThreadLocalNode()); 1737 Node* thread = transform_later(new (C, 1) ThreadLocalNode());
1731 Node* cast_thread = transform_later(new (C, 2) CastP2XNode(ctrl, thread)); 1738 Node* cast_thread = transform_later(new (C, 2) CastP2XNode(ctrl, thread));