263 |
263 |
264 |
264 |
265 Node* Compile::call_zap_node(MachSafePointNode* node_to_check, int block_no) { |
265 Node* Compile::call_zap_node(MachSafePointNode* node_to_check, int block_no) { |
266 const TypeFunc *tf = OptoRuntime::zap_dead_locals_Type(); |
266 const TypeFunc *tf = OptoRuntime::zap_dead_locals_Type(); |
267 CallStaticJavaNode* ideal_node = |
267 CallStaticJavaNode* ideal_node = |
268 new (this, tf->domain()->cnt()) CallStaticJavaNode( tf, |
268 new (this) CallStaticJavaNode( tf, |
269 OptoRuntime::zap_dead_locals_stub(_method->flags().is_native()), |
269 OptoRuntime::zap_dead_locals_stub(_method->flags().is_native()), |
270 "call zap dead locals stub", 0, TypePtr::BOTTOM); |
270 "call zap dead locals stub", 0, TypePtr::BOTTOM); |
271 // We need to copy the OopMap from the site we're zapping at. |
271 // We need to copy the OopMap from the site we're zapping at. |
272 // We have to make a copy, because the zap site might not be |
272 // We have to make a copy, because the zap site might not be |
273 // a call site, and zap_dead is a call site. |
273 // a call site, and zap_dead is a call site. |
274 OopMap* clone = node_to_check->oop_map()->deep_copy(); |
274 OopMap* clone = node_to_check->oop_map()->deep_copy(); |
275 |
275 |
2682 if( pinch->Opcode() != Op_Node ) { // Or later-def/kill as pinch-point? |
2682 if( pinch->Opcode() != Op_Node ) { // Or later-def/kill as pinch-point? |
2683 later_def = pinch; // Must be def/kill as optimistic pinch-point |
2683 later_def = pinch; // Must be def/kill as optimistic pinch-point |
2684 if ( _pinch_free_list.size() > 0) { |
2684 if ( _pinch_free_list.size() > 0) { |
2685 pinch = _pinch_free_list.pop(); |
2685 pinch = _pinch_free_list.pop(); |
2686 } else { |
2686 } else { |
2687 pinch = new (_cfg->C, 1) Node(1); // Pinch point to-be |
2687 pinch = new (_cfg->C) Node(1); // Pinch point to-be |
2688 } |
2688 } |
2689 if (pinch->_idx >= _regalloc->node_regs_max_index()) { |
2689 if (pinch->_idx >= _regalloc->node_regs_max_index()) { |
2690 _cfg->C->record_method_not_compilable("too many D-U pinch points"); |
2690 _cfg->C->record_method_not_compilable("too many D-U pinch points"); |
2691 return; |
2691 return; |
2692 } |
2692 } |