Mercurial > hg > truffle
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)); |