src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/TranslatedException.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/TranslatedException.java Sat May 4 16:23:15 2019
--- new/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/TranslatedException.java Sat May 4 16:23:13 2019
*** 47,66 ****
--- 47,73 ----
@Override
public Throwable fillInStackTrace() {
return this;
}
@Override
public String toString() {
return getMessage();
+ private static Throwable create(String className, String message) {
+ // Try create with reflection first.
+ try {
+ Class<?> cls = Class.forName(className);
+ if (message == null) {
+ return (Throwable) cls.getConstructor().newInstance();
+ }
+ cls.getDeclaredConstructor(String.class);
+ return (Throwable) cls.getConstructor(String.class).newInstance(message);
+ } catch (Throwable ignore) {
}
private static TranslatedException create(String className, String message) {
if (className.equals(TranslatedException.class.getName())) {
// Chop the class name when boxing another TranslatedException
return new TranslatedException(message);
}
+
if (message == null) {
return new TranslatedException(className);
}
return new TranslatedException(className + ": " + message);
}
*** 145,155 ****
--- 152,162 ----
String exceptionClassName = parts[i++];
String exceptionMessage = parts[i++];
Throwable throwable = create(exceptionClassName, exceptionMessage);
int stackTraceDepth = Integer.parseInt(parts[i++]);
- StackTraceElement[] suffix = parent == null ? new StackTraceElement[0] : getStackTraceSuffix();
StackTraceElement[] stackTrace = new StackTraceElement[stackTraceDepth + suffix.length];
for (int j = 0; j < stackTraceDepth; j++) {
String className = parts[i++];
String methodName = parts[i++];
String fileName = parts[i++];
src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/TranslatedException.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File