Skip to content

Commit 6bc4f3c

Browse files
committed
[GR-70612] Workaround for exception translation bug.
PullRequest: graal/22335
2 parents b75c602 + ccb2ecc commit 6bc4f3c

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/annotation/AnnotationValueParser.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.regex.Matcher;
3434
import java.util.regex.Pattern;
3535

36+
import jdk.graal.compiler.core.common.LibGraalSupport;
3637
import jdk.graal.compiler.util.EconomicHashMap;
3738
import jdk.vm.ci.meta.ConstantPool;
3839
import jdk.vm.ci.meta.JavaConstant;
@@ -217,7 +218,19 @@ private static ResolvedJavaType parseSig(String sig, ResolvedJavaType container)
217218
if (!sig.equals("V")) {
218219
checkSig(sig);
219220
}
220-
return UnresolvedJavaType.create(sig).resolve(container);
221+
try {
222+
return UnresolvedJavaType.create(sig).resolve(container);
223+
} catch (Error e) {
224+
if (LibGraalSupport.inLibGraalRuntime()) {
225+
String s = e.toString();
226+
if (s.contains("NoClassDefFoundError") && s.contains(sig)) {
227+
// Workaround for JDK that does not properly translate
228+
// a NoClassDefFoundError from HotSpot into libgraal
229+
throw (NoClassDefFoundError) new NoClassDefFoundError(sig).initCause(e);
230+
}
231+
}
232+
throw e;
233+
}
221234
}
222235

223236
static Object parseEnumValue(ResolvedJavaType enumType, ByteBuffer buf, ConstantPool constPool) {

0 commit comments

Comments
 (0)