< 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,714 ---- NOT_PRODUCT(_monitorenter_slowcase_cnt++;) if (PrintBiasedLockingStatistics) { Atomic::inc(BiasedLocking::slow_path_entry_count_addr()); } Handle h_obj(thread, 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 --- 717,727 ---- // 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 >