Tue, 13 Jan 2009 11:43:20 -0800
6791132: bad control in autobox split code
Reviewed-by: kvn
src/share/vm/opto/memnode.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/opto/memnode.cpp Wed Jan 07 11:23:28 2009 -0800 1.2 +++ b/src/share/vm/opto/memnode.cpp Tue Jan 13 11:43:20 2009 -0800 1.3 @@ -1076,13 +1076,14 @@ 1.4 // of the original value. 1.5 Node* mem_phi = in(Memory); 1.6 Node* offset = in(Address)->in(AddPNode::Offset); 1.7 + Node* region = base->in(0); 1.8 1.9 Node* in1 = clone(); 1.10 Node* in1_addr = in1->in(Address)->clone(); 1.11 in1_addr->set_req(AddPNode::Base, base->in(allocation_index)); 1.12 in1_addr->set_req(AddPNode::Address, base->in(allocation_index)); 1.13 in1_addr->set_req(AddPNode::Offset, offset); 1.14 - in1->set_req(0, base->in(allocation_index)); 1.15 + in1->set_req(0, region->in(allocation_index)); 1.16 in1->set_req(Address, in1_addr); 1.17 in1->set_req(Memory, mem_phi->in(allocation_index)); 1.18 1.19 @@ -1091,7 +1092,7 @@ 1.20 in2_addr->set_req(AddPNode::Base, base->in(load_index)); 1.21 in2_addr->set_req(AddPNode::Address, base->in(load_index)); 1.22 in2_addr->set_req(AddPNode::Offset, offset); 1.23 - in2->set_req(0, base->in(load_index)); 1.24 + in2->set_req(0, region->in(load_index)); 1.25 in2->set_req(Address, in2_addr); 1.26 in2->set_req(Memory, mem_phi->in(load_index)); 1.27 1.28 @@ -1100,7 +1101,7 @@ 1.29 in2_addr = phase->transform(in2_addr); 1.30 in2 = phase->transform(in2); 1.31 1.32 - PhiNode* result = PhiNode::make_blank(base->in(0), this); 1.33 + PhiNode* result = PhiNode::make_blank(region, this); 1.34 result->set_req(allocation_index, in1); 1.35 result->set_req(load_index, in2); 1.36 return result;