src/share/vm/opto/macro.cpp

changeset 7419
d3f3f7677537
parent 7341
e7b3d177adda
child 7535
7ae4e26cb1e0
child 7605
6e8e0bf87bbe
equal deleted inserted replaced
7418:8c08b28b7eee 7419:d3f3f7677537
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();

mercurial