comparison src/share/vm/opto/macro.cpp @ 20452:f8afcfbdbf1c

8046698: assert(false) failed: only Initialize or AddP expected macro.cpp:943 Summary: PhiNode inserted between AllocateNode and Initialization node confuses allocation elimination Reviewed-by: kvn
author roland
date Sat, 02 Aug 2014 07:06:08 +0200
parents 62c54fcc0a35
children e7b3d177adda
comparison
equal deleted inserted replaced
20450:fa6c442c59ee 20452:f8afcfbdbf1c
697 int element_size; 697 int element_size;
698 BasicType basic_elem_type; 698 BasicType basic_elem_type;
699 ciType* elem_type; 699 ciType* elem_type;
700 700
701 Node* res = alloc->result_cast(); 701 Node* res = alloc->result_cast();
702 assert(res == NULL || res->is_CheckCastPP(), "unexpected AllocateNode result");
702 const TypeOopPtr* res_type = NULL; 703 const TypeOopPtr* res_type = NULL;
703 if (res != NULL) { // Could be NULL when there are no users 704 if (res != NULL) { // Could be NULL when there are no users
704 res_type = _igvn.type(res)->isa_oopptr(); 705 res_type = _igvn.type(res)->isa_oopptr();
705 } 706 }
706 707
1028 bool PhaseMacroExpand::eliminate_boxing_node(CallStaticJavaNode *boxing) { 1029 bool PhaseMacroExpand::eliminate_boxing_node(CallStaticJavaNode *boxing) {
1029 // EA should remove all uses of non-escaping boxing node. 1030 // EA should remove all uses of non-escaping boxing node.
1030 if (!C->eliminate_boxing() || boxing->proj_out(TypeFunc::Parms) != NULL) { 1031 if (!C->eliminate_boxing() || boxing->proj_out(TypeFunc::Parms) != NULL) {
1031 return false; 1032 return false;
1032 } 1033 }
1034
1035 assert(boxing->result_cast() == NULL, "unexpected boxing node result");
1033 1036
1034 extract_call_projections(boxing); 1037 extract_call_projections(boxing);
1035 1038
1036 const TypeTuple* r = boxing->tf()->range(); 1039 const TypeTuple* r = boxing->tf()->range();
1037 assert(r->cnt() > TypeFunc::Parms, "sanity"); 1040 assert(r->cnt() > TypeFunc::Parms, "sanity");