Mercurial > hg > graal-jvmci-8
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"); |