# HG changeset patch
# User egahlin
# Date 1544636126 -3600
# Node ID 5a83b721510765746ba10a64c65c778e518a03ef
# Parent f066260954ae90fa3a6fbb664725655ab7348f64
8165675: Trace event for thread park has incorrect unit for timeout
Reviewed-by: mgronlun
diff -r f066260954ae -r 5a83b7215107 src/share/vm/jfr/metadata/metadata.xml
--- a/src/share/vm/jfr/metadata/metadata.xml Tue Feb 13 15:48:23 2018 +0100
+++ b/src/share/vm/jfr/metadata/metadata.xml Wed Dec 12 18:35:26 2018 +0100
@@ -40,7 +40,8 @@
-
+
+
@@ -1134,5 +1135,6 @@
-
+
+
diff -r f066260954ae -r 5a83b7215107 src/share/vm/prims/unsafe.cpp
--- a/src/share/vm/prims/unsafe.cpp Tue Feb 13 15:48:23 2018 +0100
+++ b/src/share/vm/prims/unsafe.cpp Wed Dec 12 18:35:26 2018 +0100
@@ -1236,11 +1236,12 @@
#endif
UNSAFE_END
-static void post_thread_park_event(EventThreadPark* event, const oop obj, jlong timeout) {
+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);
+ event->set_timeout(timeout_nanos);
+ event->set_until(until_epoch_millis);
event->set_address((obj != NULL) ? (u8)cast_from_oop(obj) : 0);
event->commit();
}
@@ -1263,7 +1264,16 @@
(uintptr_t) thread->parker());
#endif /* USDT2 */
if (event.should_commit()) {
- post_thread_park_event(&event, thread->current_park_blocker(), time);
+ 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