From c7b074a9dbf4e8f7156498d984add1e30fea2a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Gr=C3=B6nlund?= Date: Tue, 21 Jul 2020 11:54:19 +0200 Subject: [PATCH] 8249713: JFR: java.base events have incomplete stacktraces Reviewed-by: egahlin --- .../jdk/jfr/internal/PlatformEventType.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformEventType.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformEventType.java index e9feb670a30..6212ddc2d7b 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformEventType.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformEventType.java @@ -75,13 +75,34 @@ public final class PlatformEventType extends Type { this.stackTraceOffset = stackTraceOffset(name, isJDK); } + private static boolean isExceptionEvent(String name) { + switch (name) { + case Type.EVENT_NAME_PREFIX + "JavaErrorThrow" : + case Type.EVENT_NAME_PREFIX + "JavaExceptionThrow" : + return true; + } + return false; + } + + private static boolean isUsingHandler(String name) { + switch (name) { + case Type.EVENT_NAME_PREFIX + "SocketRead" : + case Type.EVENT_NAME_PREFIX + "SocketWrite" : + case Type.EVENT_NAME_PREFIX + "FileRead" : + case Type.EVENT_NAME_PREFIX + "FileWrite" : + case Type.EVENT_NAME_PREFIX + "FileForce" : + return true; + } + return false; + } + private static int stackTraceOffset(String name, boolean isJDK) { if (isJDK) { - if (name.equals(Type.EVENT_NAME_PREFIX + "JavaExceptionThrow")) { - return 5; + if (isExceptionEvent(name)) { + return 4; } - if (name.equals(Type.EVENT_NAME_PREFIX + "JavaErrorThrow")) { - return 5; + if (isUsingHandler(name)) { + return 3; } } return 4;