382 methodHandle h_method (thread, method(thread)); |
382 methodHandle h_method (thread, method(thread)); |
383 constantPoolHandle h_constants(thread, h_method->constants()); |
383 constantPoolHandle h_constants(thread, h_method->constants()); |
384 bool should_repeat; |
384 bool should_repeat; |
385 int handler_bci; |
385 int handler_bci; |
386 int current_bci = bci(thread); |
386 int current_bci = bci(thread); |
|
387 |
|
388 if (thread->frames_to_pop_failed_realloc() > 0) { |
|
389 // Allocation of scalar replaced object used in this frame |
|
390 // failed. Unconditionally pop the frame. |
|
391 thread->dec_frames_to_pop_failed_realloc(); |
|
392 thread->set_vm_result(h_exception()); |
|
393 // If the method is synchronized we already unlocked the monitor |
|
394 // during deoptimization so the interpreter needs to skip it when |
|
395 // the frame is popped. |
|
396 thread->set_do_not_unlock_if_synchronized(true); |
|
397 return Interpreter::remove_activation_entry(); |
|
398 } |
387 |
399 |
388 // Need to do this check first since when _do_not_unlock_if_synchronized |
400 // Need to do this check first since when _do_not_unlock_if_synchronized |
389 // is set, we don't want to trigger any classloading which may make calls |
401 // is set, we don't want to trigger any classloading which may make calls |
390 // into java, or surprisingly find a matching exception handler for bci 0 |
402 // into java, or surprisingly find a matching exception handler for bci 0 |
391 // since at this moment the method hasn't been "officially" entered yet. |
403 // since at this moment the method hasn't been "officially" entered yet. |