Skip to content

Commit c1eecdd

Browse files
committed
tighten check that the type of a SnippetObjectConstant in libgraal is always a snippet type
1 parent 2e889d9 commit c1eecdd

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/HotSpotSnippetMetaAccessProvider.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,12 @@ public ResolvedJavaField lookupJavaField(Field reflectionField) {
7474
public ResolvedJavaType lookupJavaType(JavaConstant constant) {
7575
if (constant instanceof SnippetObjectConstant objectConstant) {
7676
Class<?> clazz = objectConstant.asObject(Object.class).getClass();
77-
ResolvedJavaType type = lookupJavaType(clazz);
78-
GraalError.guarantee(type != null, "Type of compiler object %s missing from encoded snippet types: %s", constant, clazz.getName());
79-
return type;
77+
if (IS_IN_NATIVE_IMAGE && HotSpotReplacementsImpl.isGraalClass(clazz)) {
78+
ResolvedJavaType type = HotSpotReplacementsImpl.getEncodedSnippets().lookupSnippetType(clazz);
79+
GraalError.guarantee(type != null, "Type of compiler object %s missing from encoded snippet types: %s", constant, clazz.getName());
80+
return type;
81+
}
82+
return delegate.lookupJavaType(clazz);
8083
}
8184
if (constant instanceof HotSpotObjectConstant hsConstant) {
8285
Object object = hsConstant.asObject(Object.class);

0 commit comments

Comments
 (0)