< prev index next >

src/share/vm/runtime/objectMonitor.cpp

Print this page
rev 10456 : 8151593: Cleanup definition/usage of INLINE/NOINLINE macros and add xlC support
Contributed-by: matthias.baesken@sap.com

*** 42,59 **** #include "trace/traceMacros.hpp" #include "utilities/dtrace.hpp" #include "utilities/macros.hpp" #include "utilities/preserveException.hpp" - #if defined(__GNUC__) && !defined(IA64) && !defined(PPC64) - // Need to inhibit inlining for older versions of GCC to avoid build-time failures - #define NOINLINE __attribute__((noinline)) - #else - #define NOINLINE - #endif - - #ifdef DTRACE_ENABLED // Only bother with this argument setup if dtrace is available // TODO-FIXME: probes should not fire when caller is _blocked. assert() accordingly. --- 42,51 ----
*** 252,262 **** // ----------------------------------------------------------------------------- // Enter support ! void NOINLINE ObjectMonitor::enter(TRAPS) { // The following code is ordered to check the most common cases first // and to reduce RTS->RTO cache line upgrades on SPARC and IA32 processors. Thread * const Self = THREAD; void * cur = Atomic::cmpxchg_ptr (Self, &_owner, NULL); --- 244,254 ---- // ----------------------------------------------------------------------------- // Enter support ! void ObjectMonitor::enter(TRAPS) { // The following code is ordered to check the most common cases first // and to reduce RTS->RTO cache line upgrades on SPARC and IA32 processors. Thread * const Self = THREAD; void * cur = Atomic::cmpxchg_ptr (Self, &_owner, NULL);
*** 429,439 **** return -1; } #define MAX_RECHECK_INTERVAL 1000 ! void NOINLINE ObjectMonitor::EnterI(TRAPS) { Thread * const Self = THREAD; assert(Self->is_Java_thread(), "invariant"); assert(((JavaThread *) Self)->thread_state() == _thread_blocked, "invariant"); // Try the lock - TATAS --- 421,431 ---- return -1; } #define MAX_RECHECK_INTERVAL 1000 ! void ObjectMonitor::EnterI(TRAPS) { Thread * const Self = THREAD; assert(Self->is_Java_thread(), "invariant"); assert(((JavaThread *) Self)->thread_state() == _thread_blocked, "invariant"); // Try the lock - TATAS
*** 679,689 **** // // In the future we should reconcile EnterI() and ReenterI(), adding // Knob_Reset and Knob_SpinAfterFutile support and restructuring the // loop accordingly. ! void NOINLINE ObjectMonitor::ReenterI(Thread * Self, ObjectWaiter * SelfNode) { assert(Self != NULL, "invariant"); assert(SelfNode != NULL, "invariant"); assert(SelfNode->_thread == Self, "invariant"); assert(_waiters > 0, "invariant"); assert(((oop)(object()))->mark() == markOopDesc::encode(this), "invariant"); --- 671,681 ---- // // In the future we should reconcile EnterI() and ReenterI(), adding // Knob_Reset and Knob_SpinAfterFutile support and restructuring the // loop accordingly. ! void ObjectMonitor::ReenterI(Thread * Self, ObjectWaiter * SelfNode) { assert(Self != NULL, "invariant"); assert(SelfNode != NULL, "invariant"); assert(SelfNode->_thread == Self, "invariant"); assert(_waiters > 0, "invariant"); assert(((oop)(object()))->mark() == markOopDesc::encode(this), "invariant");
*** 892,902 **** // another thread can reacquire the lock immediately, and we can // then wake a thread unnecessarily. This is benign, and we've // structured the code so the windows are short and the frequency // of such futile wakups is low. ! void NOINLINE ObjectMonitor::exit(bool not_suspended, TRAPS) { Thread * const Self = THREAD; if (THREAD != _owner) { if (THREAD->is_lock_owned((address) _owner)) { // Transmute _owner from a BasicLock pointer to a Thread address. // We don't need to hold _mutex for this transition. --- 884,894 ---- // another thread can reacquire the lock immediately, and we can // then wake a thread unnecessarily. This is benign, and we've // structured the code so the windows are short and the frequency // of such futile wakups is low. ! void ObjectMonitor::exit(bool not_suspended, TRAPS) { Thread * const Self = THREAD; if (THREAD != _owner) { if (THREAD->is_lock_owned((address) _owner)) { // Transmute _owner from a BasicLock pointer to a Thread address. // We don't need to hold _mutex for this transition.
< prev index next >