8165675: Trace event for thread park has incorrect unit for timeout

Wed, 12 Dec 2018 18:35:26 +0100

author
egahlin
date
Wed, 12 Dec 2018 18:35:26 +0100
changeset 9865
5a83b7215107
parent 9864
f066260954ae
child 9866
41515291559a

8165675: Trace event for thread park has incorrect unit for timeout
Reviewed-by: mgronlun

src/share/vm/jfr/metadata/metadata.xml file | annotate | diff | comparison | revisions
src/share/vm/prims/unsafe.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/jfr/metadata/metadata.xml	Tue Feb 13 15:48:23 2018 +0100
     1.2 +++ b/src/share/vm/jfr/metadata/metadata.xml	Wed Dec 12 18:35:26 2018 +0100
     1.3 @@ -40,7 +40,8 @@
     1.4  
     1.5    <Event name="ThreadPark" category="Java Application" label="Java Thread Park" thread="true" stackTrace="true">
     1.6      <Field type="Class" name="parkedClass" label="Class Parked On" />
     1.7 -    <Field type="long" contentType="millis" name="timeout" label="Park Timeout" />
     1.8 +    <Field type="long" contentType="nanos" name="timeout" label="Park Timeout" />
     1.9 +    <Field type="long" contentType="epochmillis" name="until" label="Park Until" />
    1.10      <Field type="ulong" contentType="address" name="address" label="Address of Object Parked" relation="JavaMonitorAddress" />
    1.11    </Event>
    1.12  
    1.13 @@ -1134,5 +1135,6 @@
    1.14    <XmlContentType name="address" annotationType="jdk.jfr.MemoryAddress" />
    1.15    <XmlContentType name="percentage" annotationType="jdk.jfr.Percentage" />
    1.16    <XmlContentType name="millis" annotationType="jdk.jfr.Timespan" annotationValue="MILLISECONDS" />
    1.17 -
    1.18 +  <XmlContentType name="nanos" annotationType="jdk.jfr.Timespan" annotationValue="NANOSECONDS" />
    1.19 +  
    1.20  </Metadata>
     2.1 --- a/src/share/vm/prims/unsafe.cpp	Tue Feb 13 15:48:23 2018 +0100
     2.2 +++ b/src/share/vm/prims/unsafe.cpp	Wed Dec 12 18:35:26 2018 +0100
     2.3 @@ -1236,11 +1236,12 @@
     2.4  #endif
     2.5  UNSAFE_END
     2.6  
     2.7 -static void post_thread_park_event(EventThreadPark* event, const oop obj, jlong timeout) {
     2.8 +static void post_thread_park_event(EventThreadPark* event, const oop obj, jlong timeout_nanos, jlong until_epoch_millis) {
     2.9    assert(event != NULL, "invariant");
    2.10    assert(event->should_commit(), "invariant");
    2.11    event->set_parkedClass((obj != NULL) ? obj->klass() : NULL);
    2.12 -  event->set_timeout(timeout);
    2.13 +  event->set_timeout(timeout_nanos);
    2.14 +  event->set_until(until_epoch_millis);
    2.15    event->set_address((obj != NULL) ? (u8)cast_from_oop<uintptr_t>(obj) : 0);
    2.16    event->commit();
    2.17  }
    2.18 @@ -1263,7 +1264,16 @@
    2.19                            (uintptr_t) thread->parker());
    2.20  #endif /* USDT2 */
    2.21    if (event.should_commit()) {
    2.22 -    post_thread_park_event(&event, thread->current_park_blocker(), time);
    2.23 +    const oop obj = thread->current_park_blocker();
    2.24 +    if (time == 0) {
    2.25 +      post_thread_park_event(&event, obj, min_jlong, min_jlong);
    2.26 +    } else {
    2.27 +      if (isAbsolute != 0) {
    2.28 +        post_thread_park_event(&event, obj, min_jlong, time);
    2.29 +      } else {
    2.30 +        post_thread_park_event(&event, obj, time, min_jlong);
    2.31 +      }
    2.32 +    }
    2.33    }
    2.34  UNSAFE_END
    2.35  

mercurial