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));