< prev index next >
src/hotspot/share/jvmci/jvmciRuntime.cpp
Print this page
*** 392,412 ****
if (PrintBiasedLockingStatistics) {
Atomic::inc(BiasedLocking::slow_path_entry_count_addr());
}
Handle h_obj(thread, obj);
assert(oopDesc::is_oop(h_obj()), "must be NULL or an object");
! if (UseBiasedLocking) {
! // Retry fast entry if bias is revoked to avoid unnecessary inflation
! ObjectSynchronizer::fast_enter(h_obj, lock, true, CHECK);
! } else {
! if (JVMCIUseFastLocking) {
! // When using fast locking, the compiled code has already tried the fast case
! ObjectSynchronizer::slow_enter(h_obj, lock, THREAD);
! } else {
! ObjectSynchronizer::fast_enter(h_obj, lock, false, THREAD);
! }
! }
TRACE_jvmci_3("%s: exiting locking slow with obj=" INTPTR_FORMAT, thread->name(), p2i(obj));
JRT_END
JRT_LEAF(void, JVMCIRuntime::monitorexit(JavaThread* thread, oopDesc* obj, BasicLock* lock))
assert(thread == JavaThread::current(), "threads must correspond");
--- 392,402 ----
if (PrintBiasedLockingStatistics) {
Atomic::inc(BiasedLocking::slow_path_entry_count_addr());
}
Handle h_obj(thread, obj);
assert(oopDesc::is_oop(h_obj()), "must be NULL or an object");
! ObjectSynchronizer::enter(h_obj, lock, THREAD);
TRACE_jvmci_3("%s: exiting locking slow with obj=" INTPTR_FORMAT, thread->name(), p2i(obj));
JRT_END
JRT_LEAF(void, JVMCIRuntime::monitorexit(JavaThread* thread, oopDesc* obj, BasicLock* lock))
assert(thread == JavaThread::current(), "threads must correspond");
*** 424,439 ****
thread->print_stack_on(tty);
assert(false, "invalid lock object pointer dected");
}
#endif
! if (JVMCIUseFastLocking) {
! // When using fast locking, the compiled code has already tried the fast case
! ObjectSynchronizer::slow_exit(obj, lock, THREAD);
! } else {
! ObjectSynchronizer::fast_exit(obj, lock, THREAD);
! }
IF_TRACE_jvmci_3 {
char type[O_BUFLEN];
obj->klass()->name()->as_C_string(type, O_BUFLEN);
TRACE_jvmci_3("%s: exited locking slow case with obj=" INTPTR_FORMAT ", type=%s, mark=" INTPTR_FORMAT ", lock=" INTPTR_FORMAT, thread->name(), p2i(obj), type, obj->mark().value(), p2i(lock));
tty->flush();
--- 414,424 ----
thread->print_stack_on(tty);
assert(false, "invalid lock object pointer dected");
}
#endif
! ObjectSynchronizer::exit(obj, lock, THREAD);
IF_TRACE_jvmci_3 {
char type[O_BUFLEN];
obj->klass()->name()->as_C_string(type, O_BUFLEN);
TRACE_jvmci_3("%s: exited locking slow case with obj=" INTPTR_FORMAT ", type=%s, mark=" INTPTR_FORMAT ", lock=" INTPTR_FORMAT, thread->name(), p2i(obj), type, obj->mark().value(), p2i(lock));
tty->flush();
< prev index next >