Skip to content

Commit 936b8fc

Browse files
use skipcount and add new tests
1 parent c27627a commit 936b8fc

29 files changed

+246
-34
lines changed

substratevm/mx.substratevm/mx_substratevm.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,6 @@ def native_unittests_task(extra_build_args=None):
545545
out.write(f"Simple file{i}" + '\n')
546546

547547
additional_build_args = svm_experimental_options([
548-
'-H:-JfrTrimInternalStackTraces',
549548
'-H:AdditionalSecurityProviders=com.oracle.svm.test.services.SecurityServiceTest$NoOpProvider',
550549
'-H:AdditionalSecurityServiceTypes=com.oracle.svm.test.services.SecurityServiceTest$JCACompliantNoOpService',
551550
'-cp', cp_entry_name

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/FrameSourceInfo.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ public Class<?> getSourceClass() {
6868
return sourceClass;
6969
}
7070

71-
@Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
7271
public String getSourceClassName() {
7372
Class<?> clazz = getSourceClass();
7473
return (clazz != null) ? clazz.getName() : "";

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrEvent.java

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,16 @@
3232
import com.oracle.svm.core.Uninterruptible;
3333
import com.oracle.svm.core.collections.EnumBitmask;
3434
import com.oracle.svm.core.thread.JavaThreads;
35+
import com.oracle.svm.core.VMInspectionOptions;
3536

3637
/**
3738
* This file contains the VM-level events that Native Image supports on all JDK versions. The event
3839
* IDs depend on the JDK version (see metadata.xml file) and are computed at image build time.
3940
*/
4041
public final class JfrEvent {
41-
public static final JfrEvent ThreadStart = create("jdk.ThreadStart");
42+
private static final int defaultInternalSkipCount = VMInspectionOptions.JfrTrimInternalStackTraces.getValue() ? 3 : 0;
43+
44+
public static final JfrEvent ThreadStart = create("jdk.ThreadStart", defaultInternalSkipCount);
4245
public static final JfrEvent ThreadEnd = create("jdk.ThreadEnd");
4346
public static final JfrEvent ThreadCPULoad = create("jdk.ThreadCPULoad");
4447
public static final JfrEvent DataLoss = create("jdk.DataLoss");
@@ -60,41 +63,53 @@ public final class JfrEvent {
6063
public static final JfrEvent SafepointBegin = create("jdk.SafepointBegin", JfrEventFlags.HasDuration);
6164
public static final JfrEvent SafepointEnd = create("jdk.SafepointEnd", JfrEventFlags.HasDuration);
6265
public static final JfrEvent ExecuteVMOperation = create("jdk.ExecuteVMOperation", JfrEventFlags.HasDuration);
63-
public static final JfrEvent JavaMonitorEnter = create("jdk.JavaMonitorEnter", JfrEventFlags.HasDuration);
64-
public static final JfrEvent ThreadPark = create("jdk.ThreadPark", JfrEventFlags.HasDuration);
65-
public static final JfrEvent JavaMonitorWait = create("jdk.JavaMonitorWait", JfrEventFlags.HasDuration);
66-
public static final JfrEvent JavaMonitorInflate = create("jdk.JavaMonitorInflate", JfrEventFlags.HasDuration);
67-
public static final JfrEvent ObjectAllocationInNewTLAB = create("jdk.ObjectAllocationInNewTLAB");
66+
public static final JfrEvent JavaMonitorEnter = create("jdk.JavaMonitorEnter", defaultInternalSkipCount, JfrEventFlags.HasDuration);
67+
public static final JfrEvent ThreadPark = create("jdk.ThreadPark", defaultInternalSkipCount, JfrEventFlags.HasDuration);
68+
public static final JfrEvent JavaMonitorWait = create("jdk.JavaMonitorWait", defaultInternalSkipCount, JfrEventFlags.HasDuration);
69+
public static final JfrEvent JavaMonitorInflate = create("jdk.JavaMonitorInflate", defaultInternalSkipCount, JfrEventFlags.HasDuration);
70+
public static final JfrEvent ObjectAllocationInNewTLAB = create("jdk.ObjectAllocationInNewTLAB", defaultInternalSkipCount);
6871
public static final JfrEvent GCHeapSummary = create("jdk.GCHeapSummary");
6972
public static final JfrEvent ThreadAllocationStatistics = create("jdk.ThreadAllocationStatistics");
70-
public static final JfrEvent SystemGC = create("jdk.SystemGC", JfrEventFlags.HasDuration);
71-
public static final JfrEvent AllocationRequiringGC = create("jdk.AllocationRequiringGC");
72-
public static final JfrEvent OldObjectSample = create("jdk.OldObjectSample");
73-
public static final JfrEvent ObjectAllocationSample = create("jdk.ObjectAllocationSample", JfrEventFlags.SupportsThrottling);
73+
public static final JfrEvent SystemGC = create("jdk.SystemGC", defaultInternalSkipCount, JfrEventFlags.HasDuration);
74+
public static final JfrEvent AllocationRequiringGC = create("jdk.AllocationRequiringGC", defaultInternalSkipCount);
75+
public static final JfrEvent OldObjectSample = create("jdk.OldObjectSample", defaultInternalSkipCount);
76+
public static final JfrEvent ObjectAllocationSample = create("jdk.ObjectAllocationSample", defaultInternalSkipCount, JfrEventFlags.SupportsThrottling);
7477
public static final JfrEvent NativeMemoryUsage = create("jdk.NativeMemoryUsage");
7578
public static final JfrEvent NativeMemoryUsageTotal = create("jdk.NativeMemoryUsageTotal");
7679

7780
private final long id;
7881
private final String name;
7982
private final int flags;
83+
private final int skipCount;
8084

8185
@Platforms(Platform.HOSTED_ONLY.class)
8286
public static JfrEvent create(String name, JfrEventFlags... flags) {
83-
return new JfrEvent(name, flags);
87+
return new JfrEvent(name, 0, flags);
88+
}
89+
90+
@Platforms(Platform.HOSTED_ONLY.class)
91+
public static JfrEvent create(String name, int skipCount, JfrEventFlags... flags) {
92+
return new JfrEvent(name, skipCount, flags);
8493
}
8594

8695
@Platforms(Platform.HOSTED_ONLY.class)
87-
private JfrEvent(String name, JfrEventFlags... flags) {
96+
private JfrEvent(String name, int skipCount, JfrEventFlags... flags) {
8897
this.id = JfrMetadataTypeLibrary.lookupPlatformEvent(name);
8998
this.name = name;
9099
this.flags = EnumBitmask.computeBitmask(flags);
100+
this.skipCount = skipCount;
91101
}
92102

93103
@Uninterruptible(reason = CALLED_FROM_UNINTERRUPTIBLE_CODE, mayBeInlined = true)
94104
public long getId() {
95105
return id;
96106
}
97107

108+
@Uninterruptible(reason = CALLED_FROM_UNINTERRUPTIBLE_CODE, mayBeInlined = true)
109+
public int getSkipCount() {
110+
return skipCount;
111+
}
112+
98113
@Uninterruptible(reason = CALLED_FROM_UNINTERRUPTIBLE_CODE, mayBeInlined = true)
99114
public String getName() {
100115
return name;

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public static RuntimeSupport.Hook initializationHook() {
8484
public static RuntimeSupport.Hook startupHook() {
8585
return isFirstIsolate -> {
8686
periodicEventSetup();
87+
8788
boolean startRecording = SubstrateOptions.FlightRecorder.getValue() || !SubstrateOptions.StartFlightRecording.getValue().isEmpty();
8889
if (startRecording) {
8990
initRecording();

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/SubstrateJVM.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,8 @@ public long getStackTraceId(int skipCount) {
293293
}
294294

295295
@Uninterruptible(reason = "Result is only valid until epoch changes.", callerMustBe = true)
296-
public long getStackTraceId(JfrEvent eventType, int skipCount) {
297-
return getStackTraceId(eventType.getId(), skipCount);
296+
public long getStackTraceId(JfrEvent eventType) {
297+
return getStackTraceId(eventType.getId(), eventType.getSkipCount());
298298
}
299299

300300
/**

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/events/AllocationRequiringGCEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ private static void emit0(UnsignedWord gcId, UnsignedWord size) {
5454
JfrNativeEventWriter.beginSmallEvent(data, JfrEvent.AllocationRequiringGC);
5555
JfrNativeEventWriter.putLong(data, JfrTicks.elapsedTicks());
5656
JfrNativeEventWriter.putEventThread(data);
57-
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.AllocationRequiringGC, 0));
57+
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.AllocationRequiringGC));
5858
JfrNativeEventWriter.putLong(data, gcId.rawValue());
5959
JfrNativeEventWriter.putLong(data, size.rawValue());
6060
JfrNativeEventWriter.endSmallEvent(data);

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/events/JavaMonitorEnterEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public static void emit0(Object obj, long previousOwnerTid, long startTicks) {
5656
JfrNativeEventWriter.putLong(data, startTicks);
5757
JfrNativeEventWriter.putLong(data, duration);
5858
JfrNativeEventWriter.putEventThread(data);
59-
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.JavaMonitorEnter, 0));
59+
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.JavaMonitorEnter));
6060
JfrNativeEventWriter.putClass(data, obj.getClass());
6161
JfrNativeEventWriter.putLong(data, previousOwnerTid);
6262
JfrNativeEventWriter.putLong(data, Word.objectToUntrackedPointer(obj).rawValue());

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/events/JavaMonitorInflateEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public static void emit0(Object obj, long startTicks, MonitorInflationCause caus
5757
JfrNativeEventWriter.putLong(data, startTicks);
5858
JfrNativeEventWriter.putLong(data, duration);
5959
JfrNativeEventWriter.putEventThread(data);
60-
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.JavaMonitorInflate, 0));
60+
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.JavaMonitorInflate));
6161
JfrNativeEventWriter.putClass(data, obj.getClass());
6262
JfrNativeEventWriter.putLong(data, Word.objectToUntrackedPointer(obj).rawValue());
6363
JfrNativeEventWriter.putLong(data, getId(cause));

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/events/JavaMonitorWaitEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ private static void emit0(long startTicks, Object obj, long notifier, long timeo
5858
JfrNativeEventWriter.putLong(data, startTicks);
5959
JfrNativeEventWriter.putLong(data, duration);
6060
JfrNativeEventWriter.putEventThread(data);
61-
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.JavaMonitorWait, 0));
61+
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.JavaMonitorWait));
6262
JfrNativeEventWriter.putClass(data, obj.getClass());
6363
JfrNativeEventWriter.putLong(data, notifier);
6464
JfrNativeEventWriter.putLong(data, timeout);

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/events/JfrAllocationEvents.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private static void emitObjectAllocationInNewTLAB(long startTicks, DynamicHub hu
6868
JfrNativeEventWriter.beginSmallEvent(data, JfrEvent.ObjectAllocationInNewTLAB);
6969
JfrNativeEventWriter.putLong(data, startTicks);
7070
JfrNativeEventWriter.putEventThread(data);
71-
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.ObjectAllocationInNewTLAB, 0));
71+
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.ObjectAllocationInNewTLAB));
7272
JfrNativeEventWriter.putClass(data, DynamicHub.toClass(hub));
7373
JfrNativeEventWriter.putLong(data, allocationSize.rawValue());
7474
JfrNativeEventWriter.putLong(data, tlabSize.rawValue());
@@ -88,7 +88,7 @@ private static void emitObjectAllocationSample(long startTicks, DynamicHub hub)
8888
JfrNativeEventWriter.beginSmallEvent(data, JfrEvent.ObjectAllocationSample);
8989
JfrNativeEventWriter.putLong(data, startTicks);
9090
JfrNativeEventWriter.putEventThread(data);
91-
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.ObjectAllocationSample, 0));
91+
JfrNativeEventWriter.putLong(data, SubstrateJVM.get().getStackTraceId(JfrEvent.ObjectAllocationSample));
9292
JfrNativeEventWriter.putClass(data, DynamicHub.toClass(hub));
9393
JfrNativeEventWriter.putLong(data, weight);
9494
JfrNativeEventWriter.endSmallEvent(data);

0 commit comments

Comments
 (0)