< prev index next >

src/share/vm/prims/unsafe.cpp

Print this page

        

*** 26,46 **** #include "classfile/vmSymbols.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp" #endif // INCLUDE_ALL_GCS #include "memory/allocation.inline.hpp" #include "prims/jni.h" #include "prims/jvm.h" #include "runtime/globals.hpp" #include "runtime/interfaceSupport.hpp" #include "runtime/prefetch.inline.hpp" #include "runtime/orderAccess.inline.hpp" #include "runtime/reflection.hpp" #include "runtime/synchronizer.hpp" #include "services/threadService.hpp" - #include "trace/tracing.hpp" #include "utilities/copy.hpp" #include "utilities/dtrace.hpp" PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC --- 26,46 ---- #include "classfile/vmSymbols.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp" #endif // INCLUDE_ALL_GCS + #include "jfr/jfrEvents.hpp" #include "memory/allocation.inline.hpp" #include "prims/jni.h" #include "prims/jvm.h" #include "runtime/globals.hpp" #include "runtime/interfaceSupport.hpp" #include "runtime/prefetch.inline.hpp" #include "runtime/orderAccess.inline.hpp" #include "runtime/reflection.hpp" #include "runtime/synchronizer.hpp" #include "services/threadService.hpp" #include "utilities/copy.hpp" #include "utilities/dtrace.hpp" PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
*** 1234,1243 **** --- 1234,1253 ---- return success; } #endif UNSAFE_END + static void post_thread_park_event(EventThreadPark* event, const oop obj, jlong timeout_nanos, jlong until_epoch_millis) { + assert(event != NULL, "invariant"); + assert(event->should_commit(), "invariant"); + event->set_parkedClass((obj != NULL) ? obj->klass() : NULL); + event->set_timeout(timeout_nanos); + event->set_until(until_epoch_millis); + event->set_address((obj != NULL) ? (u8)cast_from_oop<uintptr_t>(obj) : 0); + event->commit(); + } + UNSAFE_ENTRY(void, Unsafe_Park(JNIEnv *env, jobject unsafe, jboolean isAbsolute, jlong time)) UnsafeWrapper("Unsafe_Park"); EventThreadPark event; #ifndef USDT2 HS_DTRACE_PROBE3(hotspot, thread__park__begin, thread->parker(), (int) isAbsolute, time);
*** 1252,1266 **** #else /* USDT2 */ HOTSPOT_THREAD_PARK_END( (uintptr_t) thread->parker()); #endif /* USDT2 */ if (event.should_commit()) { ! oop obj = thread->current_park_blocker(); ! event.set_klass((obj != NULL) ? obj->klass() : NULL); ! event.set_timeout(time); ! event.set_address((obj != NULL) ? (TYPE_ADDRESS) cast_from_oop<uintptr_t>(obj) : 0); ! event.commit(); } UNSAFE_END UNSAFE_ENTRY(void, Unsafe_Unpark(JNIEnv *env, jobject unsafe, jobject jthread)) UnsafeWrapper("Unsafe_Unpark"); --- 1262,1281 ---- #else /* USDT2 */ HOTSPOT_THREAD_PARK_END( (uintptr_t) thread->parker()); #endif /* USDT2 */ if (event.should_commit()) { ! const oop obj = thread->current_park_blocker(); ! if (time == 0) { ! post_thread_park_event(&event, obj, min_jlong, min_jlong); ! } else { ! if (isAbsolute != 0) { ! post_thread_park_event(&event, obj, min_jlong, time); ! } else { ! post_thread_park_event(&event, obj, time, min_jlong); ! } ! } } UNSAFE_END UNSAFE_ENTRY(void, Unsafe_Unpark(JNIEnv *env, jobject unsafe, jobject jthread)) UnsafeWrapper("Unsafe_Unpark");
< prev index next >