diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/NodeLowerer.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/NodeLowerer.java index 63a504d24025..118c67af2293 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/NodeLowerer.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/NodeLowerer.java @@ -24,7 +24,7 @@ */ package jdk.graal.compiler.hightiercodegen; -import jdk.graal.compiler.debug.GraalError; +import jdk.graal.compiler.graph.GraalGraphError; import jdk.graal.compiler.graph.Node; import jdk.graal.compiler.graph.iterators.NodeIterable; import jdk.graal.compiler.hightiercodegen.variables.ResolvedVar; @@ -351,7 +351,7 @@ protected void dispatch(Node node) { * ignored. */ protected void handleUnknownNodeType(Node node) { - throw GraalError.unimplemented("Could not lower node: " + node); + throw new GraalGraphError("No lowerings found for node: %s", node).addContext(node); } protected abstract void lower(BlackholeNode node); diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/irwalk/IRWalker.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/irwalk/IRWalker.java index ed4c70a81455..eb8092f90be9 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/irwalk/IRWalker.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hightiercodegen/irwalk/IRWalker.java @@ -30,6 +30,7 @@ import jdk.graal.compiler.core.common.cfg.BlockMap; import jdk.graal.compiler.debug.DebugContext; import jdk.graal.compiler.debug.DebugContext.Scope; +import jdk.graal.compiler.debug.GraalError; import jdk.graal.compiler.graph.Node; import jdk.graal.compiler.graph.NodeMap; import jdk.graal.compiler.hightiercodegen.CodeGenTool; @@ -73,7 +74,7 @@ public void lowerFunction(DebugContext debugContext) { lower(debugContext); verifier.verify(cfg.graph, codeGenTool, reconstructionData); } catch (Throwable t) { - throw debugContext.handle(t); + throw debugContext.handle(new GraalError(t).addContext("graph", cfg.graph)); } } diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java index c4c090d2caa5..0a70ced15c89 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java @@ -48,8 +48,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.oracle.svm.core.meta.CompressedNullConstant; -import com.oracle.svm.core.interpreter.InterpreterSupport; import org.graalvm.collections.Pair; import org.graalvm.nativeimage.ImageSingletons; import org.graalvm.nativeimage.Platform; @@ -83,6 +81,8 @@ import com.oracle.svm.core.configure.ConditionalRuntimeValue; import com.oracle.svm.core.deopt.DeoptEntryInfopoint; import com.oracle.svm.core.graal.code.SubstrateDataBuilder; +import com.oracle.svm.core.interpreter.InterpreterSupport; +import com.oracle.svm.core.meta.CompressedNullConstant; import com.oracle.svm.core.meta.MethodPointer; import com.oracle.svm.core.meta.SubstrateMethodPointerConstant; import com.oracle.svm.core.option.HostedOptionKey; @@ -269,9 +269,13 @@ public Map initAndGetEmbeddedConstants() { return embeddedConstants; } - public void addConstantsToHeap() { + public Map getEmbeddedConstants() { VMError.guarantee(!embeddedConstants.isEmpty(), "Embedded constants should already be computed."); - embeddedConstants.forEach((constant, reason) -> addConstantToHeap(constant, reason instanceof BytecodePosition position ? position.getMethod().getName() : reason)); + return Collections.unmodifiableMap(embeddedConstants); + } + + public void addConstantsToHeap() { + getEmbeddedConstants().forEach((constant, reason) -> addConstantToHeap(constant, reason instanceof BytecodePosition position ? position.getMethod().getName() : reason)); } private void addConstantToHeap(Constant constant, Object reason) { diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageHeap.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageHeap.java index 92343ee5f5bb..920997dc83a0 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageHeap.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageHeap.java @@ -657,7 +657,7 @@ private static HostedType requireType(Optional optionalType, Object return hostedType; } - static RuntimeException reportIllegalType(Object object, Object reason) { + public static RuntimeException reportIllegalType(Object object, Object reason) { throw reportIllegalType(object, reason, ""); }