Skip to content

Conversation

graalvmbot
Copy link
Collaborator

@graalvmbot graalvmbot commented Mar 16, 2025

This PR removes the last dependency of jargraal on Native Image API. Major changes:

  • Added LibGraalSupport.HostedOnly annotation that serves the same purpose as @Platforms(Platform.HOSTED_ONLY.class). Ideally the error message would show the causality stack for how the element was reached but this causality info is not available to a reachability handler. The compromise solution is shown here.
  • Replaced ImageInfo.inImage[Build|Run]timeCode with LibGraalSupport.inLibGraalRuntime and NativeImageSupport.in[Build|Run]timeCode.

Minor changes piggy backed here:

  • Changed SnippetResolvedJavaType.methods from List<SnippetResolvedJavaMethod> to SnippetResolvedJavaMethod[].
  • Explicitly set maven artifactId attribute for NATIVEIMAGE_LIBGRAAL.
  • Move hot OptionValue access on assertion-only branch into assertion condition.
  • Cache edge indexes used regularly in static final fields.
  • Added regression test for JDK-8351036

@oracle-contributor-agreement oracle-contributor-agreement bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Mar 16, 2025
var s = suggestions.entrySet().stream().map(e -> e.getValue().stream().map(v -> "-H:AbortOn" + e.getKey() + "Reachable" + "=" + v).collect(Collectors.joining(sep))).collect(
Collectors.joining(sep));
String anno = HostedOnly.class.getSimpleName();
throw new IllegalArgumentException("@" + anno + " annotated elements reached. Add following Native Image flags to see why they are reachable:" + sep + s);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sample output:

[libjvmcicompiler.dylib:71997] Internal exception: com.oracle.svm.core.util.UserError$UserException: Feature defined by jdk.graal.compiler.libgraal.LibGraalFeature unexpectedly failed with a(n) java.lang.IllegalArgumentException. Please report this problem to the authors of jdk.graal.compiler.libgraal.LibGraalFeature.
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:97)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.handleFeatureError(FeatureHandler.java:306)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:95)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:857)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:571)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:537)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:545)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:731)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:151)
[libjvmcicompiler.dylib:71997] 	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:99)
[libjvmcicompiler.dylib:71997] Caused by: java.lang.IllegalArgumentException: @HostedOnly annotated elements reached. Add following Native Image flags to see why they are reachable:
[libjvmcicompiler.dylib:71997]   -H:AbortOnFieldReachable=jdk.graal.compiler.graph.NodeFlood.totalMarkedCount
[libjvmcicompiler.dylib:71997]   -H:AbortOnFieldReachable=jdk.graal.compiler.graph.NodeFlood.worklist
[libjvmcicompiler.dylib:71997]   -H:AbortOnMethodReachable=jdk.graal.compiler.graph.NodeInputList.NodeInputList
[libjvmcicompiler.dylib:71997]   -H:AbortOnMethodReachable=jdk.graal.compiler.graph.NodeSourcePosition.trim
[libjvmcicompiler.dylib:71997]   -H:AbortOnTypeReachable=jdk.graal.compiler.graph.SuccessorEdges

@graalvmbot graalvmbot closed this Mar 17, 2025
@graalvmbot graalvmbot deleted the ds/GR-62124 branch March 17, 2025 14:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Verified All contributors have signed the Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants