< prev index next >

src/hotspot/share/c1/c1_Runtime1.cpp

Print this page

        

*** 703,725 **** NOT_PRODUCT(_monitorenter_slowcase_cnt++;) if (PrintBiasedLockingStatistics) { Atomic::inc(BiasedLocking::slow_path_entry_count_addr()); } Handle h_obj(thread, obj); ! if (UseBiasedLocking) { ! // Retry fast entry if bias is revoked to avoid unnecessary inflation ! ObjectSynchronizer::fast_enter(h_obj, lock->lock(), true, CHECK); ! } else { ! if (UseFastLocking) { ! // When using fast locking, the compiled code has already tried the fast case ! assert(obj == lock->obj(), "must match"); ! ObjectSynchronizer::slow_enter(h_obj, lock->lock(), THREAD); ! } else { lock->set_obj(obj); - ObjectSynchronizer::fast_enter(h_obj, lock->lock(), false, THREAD); - } } JRT_END JRT_LEAF(void, Runtime1::monitorexit(JavaThread* thread, BasicObjectLock* lock)) NOT_PRODUCT(_monitorexit_slowcase_cnt++;) --- 703,717 ---- NOT_PRODUCT(_monitorenter_slowcase_cnt++;) if (PrintBiasedLockingStatistics) { Atomic::inc(BiasedLocking::slow_path_entry_count_addr()); } Handle h_obj(thread, obj); ! if (!UseFastLocking) { lock->set_obj(obj); } + assert(obj == lock->obj(), "must match"); + ObjectSynchronizer::enter(h_obj, lock->lock(), THREAD); JRT_END JRT_LEAF(void, Runtime1::monitorexit(JavaThread* thread, BasicObjectLock* lock)) NOT_PRODUCT(_monitorexit_slowcase_cnt++;)
*** 728,743 **** // monitorexit is non-blocking (leaf routine) => no exceptions can be thrown EXCEPTION_MARK; oop obj = lock->obj(); assert(oopDesc::is_oop(obj), "must be NULL or an object"); ! if (UseFastLocking) { ! // When using fast locking, the compiled code has already tried the fast case ! ObjectSynchronizer::slow_exit(obj, lock->lock(), THREAD); ! } else { ! ObjectSynchronizer::fast_exit(obj, lock->lock(), THREAD); ! } JRT_END // Cf. OptoRuntime::deoptimize_caller_frame JRT_ENTRY(void, Runtime1::deoptimize(JavaThread* thread, jint trap_request)) // Called from within the owner thread, so no need for safepoint --- 720,730 ---- // monitorexit is non-blocking (leaf routine) => no exceptions can be thrown EXCEPTION_MARK; oop obj = lock->obj(); assert(oopDesc::is_oop(obj), "must be NULL or an object"); ! ObjectSynchronizer::exit(obj, lock->lock(), THREAD); JRT_END // Cf. OptoRuntime::deoptimize_caller_frame JRT_ENTRY(void, Runtime1::deoptimize(JavaThread* thread, jint trap_request)) // Called from within the owner thread, so no need for safepoint
< prev index next >