Lines Matching refs:ex_map

144 void GraphKit::verify_exception_state(SafePointNode* ex_map) {
145 assert(ex_map->next_exception() == NULL, "not already part of a chain");
146 assert(has_saved_ex_oop(ex_map), "every exception state has an ex_oop");
184 void GraphKit::set_saved_ex_oop(SafePointNode* ex_map, Node* ex_oop) {
185 assert(!has_saved_ex_oop(ex_map), "clear ex-oop before setting again");
186 ex_map->add_req(ex_oop);
187 debug_only(verify_exception_state(ex_map));
190 inline static Node* common_saved_ex_oop(SafePointNode* ex_map, bool clear_it) {
191 assert(GraphKit::has_saved_ex_oop(ex_map), "ex_oop must be there");
192 Node* ex_oop = ex_map->in(ex_map->req()-1);
193 if (clear_it) ex_map->del_req(ex_map->req()-1);
199 Node* GraphKit::saved_ex_oop(SafePointNode* ex_map) {
200 return common_saved_ex_oop(ex_map, false);
205 Node* GraphKit::clear_saved_ex_oop(SafePointNode* ex_map) {
206 return common_saved_ex_oop(ex_map, true);
212 bool GraphKit::has_saved_ex_oop(SafePointNode* ex_map) {
213 return ex_map->req() == ex_map->jvms()->endoff()+1;
221 SafePointNode* ex_map = stop(); // do not manipulate this map any more
222 set_saved_ex_oop(ex_map, ex_oop);
223 return ex_map;
229 void GraphKit::add_exception_state(SafePointNode* ex_map) {
230 if (ex_map == NULL || ex_map->control() == top()) {
234 verify_exception_state(ex_map);
236 assert(ex_map->jvms()->same_calls_as(_exceptions->jvms()), "all collected exceptions must come from the same place");
242 Node* ex_oop = saved_ex_oop(ex_map);
254 && e2->_jvms->sp() == ex_map->_jvms->sp()) {
255 combine_exception_states(ex_map, e2);
261 push_exception_state(ex_map);
266 SafePointNode* ex_map = jvms->map()->next_exception();
267 if (ex_map != NULL) {
269 for (SafePointNode* next_map; ex_map != NULL; ex_map = next_map) {
270 next_map = ex_map->next_exception();
271 ex_map->set_next_exception(NULL);
272 add_exception_state(ex_map);
329 void GraphKit::combine_exception_states(SafePointNode* ex_map, SafePointNode* phi_map) {
331 JVMState* ex_jvms = ex_map->_jvms;
336 assert(ex_map->req() == phi_map->req(), "matching maps");
341 MergeMemNode* ex_mem = ex_map->merged_memory();
363 // Either or both of phi_map and ex_map might already be converted into phis.
364 Node* ex_control = ex_map->control();
365 // if there is special marking on ex_map also, we add multiple edges from src
372 add_n_reqs(phi_map->i_o(), ex_map->i_o());
374 // ex_map has no merges, so we just add single edges everywhere
376 add_one_req(phi_map->i_o(), ex_map->i_o());
388 // Append stuff from ex_map:
395 uint limit = ex_map->req();
399 Node* src = ex_map->in(i);
1814 SafePointNode* ex_map = ekit.combine_and_pop_all_exception_states();
1816 Node* ex_oop = ekit.use_exception_state(ex_map);