962 _igvn.replace_node(_catchallcatchproj, C->top()); |
962 _igvn.replace_node(_catchallcatchproj, C->top()); |
963 } |
963 } |
964 } |
964 } |
965 |
965 |
966 bool PhaseMacroExpand::eliminate_allocate_node(AllocateNode *alloc) { |
966 bool PhaseMacroExpand::eliminate_allocate_node(AllocateNode *alloc) { |
967 if (!EliminateAllocations || !alloc->_is_non_escaping) { |
967 // Don't do scalar replacement if the frame can be popped by JVMTI: |
|
968 // if reallocation fails during deoptimization we'll pop all |
|
969 // interpreter frames for this compiled frame and that won't play |
|
970 // nice with JVMTI popframe. |
|
971 if (!EliminateAllocations || JvmtiExport::can_pop_frame() || !alloc->_is_non_escaping) { |
968 return false; |
972 return false; |
969 } |
973 } |
970 Node* klass = alloc->in(AllocateNode::KlassNode); |
974 Node* klass = alloc->in(AllocateNode::KlassNode); |
971 const TypeKlassPtr* tklass = _igvn.type(klass)->is_klassptr(); |
975 const TypeKlassPtr* tklass = _igvn.type(klass)->is_klassptr(); |
972 Node* res = alloc->result_cast(); |
976 Node* res = alloc->result_cast(); |