< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java
Print this page
@@ -23,10 +23,11 @@
package org.graalvm.compiler.replacements.nodes;
import static jdk.vm.ci.code.BytecodeFrame.isPlaceholderBci;
+import static jdk.vm.ci.services.Services.IS_IN_NATIVE_IMAGE;
import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_UNKNOWN;
import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_UNKNOWN;
import org.graalvm.compiler.api.replacements.MethodSubstitution;
import org.graalvm.compiler.api.replacements.Snippet;
@@ -203,17 +204,19 @@
throw new GraalError("%s: cannot lower to invoke with placeholder BCI: %s", graph(), this);
}
if (invoke.stateAfter() == null) {
ResolvedJavaMethod method = graph().method();
- if (method.getAnnotation(MethodSubstitution.class) != null || method.getAnnotation(Snippet.class) != null) {
- // One cause for this is that a MacroNode is created for a method that
- // no longer needs a MacroNode. For example, Class.getComponentType()
- // only needs a MacroNode prior to JDK9 as it was given a non-native
- // implementation in JDK9.
- throw new GraalError("%s macro created for call to %s in %s must be lowerable to a snippet or intrinsic graph. " +
- "Maybe a macro node is not needed for this method in the current JDK?", getClass().getSimpleName(), targetMethod.format("%h.%n(%p)"), graph());
+ if (!IS_IN_NATIVE_IMAGE) {
+ if (method.getAnnotation(MethodSubstitution.class) != null || method.getAnnotation(Snippet.class) != null) {
+ // One cause for this is that a MacroNode is created for a method that
+ // no longer needs a MacroNode. For example, Class.getComponentType()
+ // only needs a MacroNode prior to JDK9 as it was given a non-native
+ // implementation in JDK9.
+ throw new GraalError("%s macro created for call to %s in %s must be lowerable to a snippet or intrinsic graph. " +
+ "Maybe a macro node is not needed for this method in the current JDK?", getClass().getSimpleName(), targetMethod.format("%h.%n(%p)"), graph());
+ }
}
throw new GraalError("%s: cannot lower to invoke without state: %s", graph(), this);
}
invoke.lower(tool);
}
< prev index next >