Mercurial > hg > truffle
comparison src/share/vm/opto/macro.cpp @ 436:87559db65269
6773078: UseCompressedOops: assert(kid == 0L || s->_leaf->in(0) == 0L,"internal operands have no control")
Summary: Don't set the control edge of a klass load node.
Reviewed-by: never
author | kvn |
---|---|
date | Tue, 18 Nov 2008 14:47:36 -0800 |
parents | a1980da045cc |
children | 424f9bfe6b96 |
comparison
equal
deleted
inserted
replaced
435:b1d6a3e95810 | 436:87559db65269 |
---|---|
1671 // Special-case a fresh allocation to avoid building nodes: | 1671 // Special-case a fresh allocation to avoid building nodes: |
1672 Node* klass_node = AllocateNode::Ideal_klass(obj, &_igvn); | 1672 Node* klass_node = AllocateNode::Ideal_klass(obj, &_igvn); |
1673 if (klass_node == NULL) { | 1673 if (klass_node == NULL) { |
1674 Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes()); | 1674 Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes()); |
1675 klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) ); | 1675 klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) ); |
1676 klass_node->init_req(0, ctrl); | |
1677 } | 1676 } |
1678 Node *proto_node = make_load(ctrl, mem, klass_node, Klass::prototype_header_offset_in_bytes() + sizeof(oopDesc), TypeX_X, TypeX_X->basic_type()); | 1677 Node *proto_node = make_load(ctrl, mem, klass_node, Klass::prototype_header_offset_in_bytes() + sizeof(oopDesc), TypeX_X, TypeX_X->basic_type()); |
1679 | 1678 |
1680 Node* thread = transform_later(new (C, 1) ThreadLocalNode()); | 1679 Node* thread = transform_later(new (C, 1) ThreadLocalNode()); |
1681 Node* cast_thread = transform_later(new (C, 2) CastP2XNode(ctrl, thread)); | 1680 Node* cast_thread = transform_later(new (C, 2) CastP2XNode(ctrl, thread)); |