< prev index next >
src/share/vm/prims/unsafe.cpp
Print this page
@@ -26,21 +26,21 @@
#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 "trace/tracing.hpp"
#include "utilities/copy.hpp"
#include "utilities/dtrace.hpp"
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
@@ -1234,10 +1234,19 @@
return success;
}
#endif
UNSAFE_END
+static void post_thread_park_event(EventThreadPark* event, const oop obj, jlong timeout) {
+ assert(event != NULL, "invariant");
+ assert(event->should_commit(), "invariant");
+ event->set_parkedClass((obj != NULL) ? obj->klass() : NULL);
+ event->set_timeout(timeout);
+ 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,15 +1261,11 @@
#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();
+ post_thread_park_event(&event, thread->current_park_blocker(), time);
}
UNSAFE_END
UNSAFE_ENTRY(void, Unsafe_Unpark(JNIEnv *env, jobject unsafe, jobject jthread))
UnsafeWrapper("Unsafe_Unpark");
< prev index next >