151 // Set _map to NULL, signalling a stop to further bytecode execution. |
151 // Set _map to NULL, signalling a stop to further bytecode execution. |
152 // First smash the current map's control to a constant, to mark it dead. |
152 // First smash the current map's control to a constant, to mark it dead. |
153 void GraphKit::stop_and_kill_map() { |
153 void GraphKit::stop_and_kill_map() { |
154 SafePointNode* dead_map = stop(); |
154 SafePointNode* dead_map = stop(); |
155 if (dead_map != NULL) { |
155 if (dead_map != NULL) { |
156 dead_map->disconnect_inputs(NULL); // Mark the map as killed. |
156 dead_map->disconnect_inputs(NULL, C); // Mark the map as killed. |
157 assert(dead_map->is_killed(), "must be so marked"); |
157 assert(dead_map->is_killed(), "must be so marked"); |
158 } |
158 } |
159 } |
159 } |
160 |
160 |
161 |
161 |
1809 C->gvn_replace_by(callprojs.exobj, ex_oop); |
1809 C->gvn_replace_by(callprojs.exobj, ex_oop); |
1810 } |
1810 } |
1811 } |
1811 } |
1812 |
1812 |
1813 // Disconnect the call from the graph |
1813 // Disconnect the call from the graph |
1814 call->disconnect_inputs(NULL); |
1814 call->disconnect_inputs(NULL, C); |
1815 C->gvn_replace_by(call, C->top()); |
1815 C->gvn_replace_by(call, C->top()); |
1816 |
1816 |
1817 // Clean up any MergeMems that feed other MergeMems since the |
1817 // Clean up any MergeMems that feed other MergeMems since the |
1818 // optimizer doesn't like that. |
1818 // optimizer doesn't like that. |
1819 if (final_mem->is_MergeMem()) { |
1819 if (final_mem->is_MergeMem()) { |