hotspot/src/share/vm/c1/c1_Runtime1.cpp
changeset 10972 ef164805934c
parent 10508 233d2e7c462d
child 11572 84afef481892
equal deleted inserted replaced
10971:db45f6ab9a75 10972:ef164805934c
   677     // When using fast locking, the compiled code has already tried the fast case
   677     // When using fast locking, the compiled code has already tried the fast case
   678     ObjectSynchronizer::slow_exit(obj, lock->lock(), THREAD);
   678     ObjectSynchronizer::slow_exit(obj, lock->lock(), THREAD);
   679   } else {
   679   } else {
   680     ObjectSynchronizer::fast_exit(obj, lock->lock(), THREAD);
   680     ObjectSynchronizer::fast_exit(obj, lock->lock(), THREAD);
   681   }
   681   }
       
   682 JRT_END
       
   683 
       
   684 // Cf. OptoRuntime::deoptimize_caller_frame
       
   685 JRT_ENTRY(void, Runtime1::deoptimize(JavaThread* thread))
       
   686   // Called from within the owner thread, so no need for safepoint
       
   687   RegisterMap reg_map(thread, false);
       
   688   frame stub_frame = thread->last_frame();
       
   689   assert(stub_frame.is_runtime_frame(), "sanity check");
       
   690   frame caller_frame = stub_frame.sender(&reg_map);
       
   691 
       
   692   // We are coming from a compiled method; check this is true.
       
   693   assert(CodeCache::find_nmethod(caller_frame.pc()) != NULL, "sanity");
       
   694 
       
   695   // Deoptimize the caller frame.
       
   696   Deoptimization::deoptimize_frame(thread, caller_frame.id());
       
   697 
       
   698   // Return to the now deoptimized frame.
   682 JRT_END
   699 JRT_END
   683 
   700 
   684 
   701 
   685 static klassOop resolve_field_return_klass(methodHandle caller, int bci, TRAPS) {
   702 static klassOop resolve_field_return_klass(methodHandle caller, int bci, TRAPS) {
   686   Bytecode_field field_access(caller, bci);
   703   Bytecode_field field_access(caller, bci);