hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
changeset 28039 bf5a8340bf8a
parent 27420 04e6f914cce1
child 28196 6ba2bd76ea84
equal deleted inserted replaced
28038:76e7ca4c8b6e 28039:bf5a8340bf8a
   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.