Skip to content

Commit 675d148

Browse files
Use UnresolvedJavaType.create in espresso JVMCI
1 parent 1438707 commit 675d148

6 files changed

+23
-28
lines changed

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/descriptors/EspressoSymbols.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,6 +1400,7 @@ public static class Signatures {
14001400
public static final Symbol<Signature> PrimitiveConstant_char_long = SYMBOLS.putSignature(Types.jdk_vm_ci_meta_PrimitiveConstant, Types._char, Types._long);
14011401
public static final Symbol<Signature> _void_boolean_EspressoResolvedJavaMethod_String_JavaConstant_JavaConstant_array = SYMBOLS.putSignature(Types._void, Types._boolean,
14021402
Types.com_oracle_truffle_espresso_jvmci_meta_EspressoResolvedJavaMethod, Types.java_lang_String, Types.jdk_vm_ci_meta_JavaConstant, Types.jdk_vm_ci_meta_JavaConstant_array);
1403+
public static final Symbol<Signature> UnresolvedJavaType_String = SYMBOLS.putSignature(Types.jdk_vm_ci_meta_UnresolvedJavaType, Types.java_lang_String);
14031404

14041405
public static final Symbol<Signature> _void_sun_misc_Signal = SYMBOLS.putSignature(Types._void, Types.sun_misc_Signal);
14051406
public static final Symbol<Signature> _void_jdk_internal_misc_Signal = SYMBOLS.putSignature(Types._void, Types.jdk_internal_misc_Signal);

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/meta/Meta.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2449,7 +2449,7 @@ public final class JVMCISupport {
24492449
public final Method Services_openJVMCITo;
24502450

24512451
public final ObjectKlass UnresolvedJavaType;
2452-
public final Method UnresolvedJavaType_init;
2452+
public final Method UnresolvedJavaType_create;
24532453
public final Field UnresolvedJavaType_name;
24542454

24552455
public final ObjectKlass UnresolvedJavaField;
@@ -2522,7 +2522,7 @@ private JVMCISupport() {
25222522
Services_openJVMCITo = Services.requireDeclaredMethod(Names.openJVMCITo, Signatures._void_Module);
25232523

25242524
UnresolvedJavaType = knownKlass(Types.jdk_vm_ci_meta_UnresolvedJavaType);
2525-
UnresolvedJavaType_init = UnresolvedJavaType.requireDeclaredMethod(Names._init_, Signatures._void_String);
2525+
UnresolvedJavaType_create = UnresolvedJavaType.requireDeclaredMethod(Names.create, Signatures.UnresolvedJavaType_String);
25262526
UnresolvedJavaType_name = UnresolvedJavaType.requireDeclaredField(Names.name, Types.java_lang_String);
25272527

25282528
UnresolvedJavaField = knownKlass(Types.jdk_vm_ci_meta_UnresolvedJavaField);

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/substitutions/jvmci/Target_com_oracle_truffle_espresso_jvmci_EspressoJVMCIRuntime.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ static StaticObject doDefault(@SuppressWarnings("unused") StaticObject self, Sta
9494
@Cached("create(context.getMeta().jvmci.EspressoResolvedInstanceType_init.getCallTarget())") DirectCallNode objectTypeConstructor,
9595
@Cached("create(context.getMeta().jvmci.EspressoResolvedArrayType_init.getCallTarget())") DirectCallNode arrayTypeConstructor,
9696
@Cached("create(context.getMeta().jvmci.EspressoResolvedPrimitiveType_forBasicType.getCallTarget())") DirectCallNode forBasicType,
97-
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_init.getCallTarget())") DirectCallNode unresolvedTypeConstructor,
97+
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_create.getCallTarget())") DirectCallNode createUnresolved,
9898
@Cached InitCheck initCheck) {
9999
assert context.getLanguage().isInternalJVMCIEnabled();
100100
Meta meta = context.getMeta();
@@ -104,38 +104,38 @@ static StaticObject doDefault(@SuppressWarnings("unused") StaticObject self, Sta
104104
String type = meta.toHostString(guestTypeString);
105105
LOGGER.finer(() -> "lookupType " + type + " resolved:" + resolve);
106106
ObjectKlass accessingKlass = (ObjectKlass) meta.jvmci.HIDDEN_OBJECTKLASS_MIRROR.getHiddenObject(accessingClass);
107-
return lookupType(type, accessingKlass, resolve, objectTypeConstructor, arrayTypeConstructor, forBasicType, initCheck, unresolvedTypeConstructor, context, meta);
107+
return lookupType(type, accessingKlass, resolve, objectTypeConstructor, arrayTypeConstructor, forBasicType, initCheck, createUnresolved, context, meta);
108108
}
109109
}
110110

111111
static StaticObject lookupType(String type, ObjectKlass accessingKlass, boolean resolve, DirectCallNode objectTypeConstructor, DirectCallNode arrayTypeConstructor, DirectCallNode forBasicType,
112-
InitCheck initCheck, DirectCallNode unresolvedTypeConstructor, EspressoContext context, Meta meta) {
112+
InitCheck initCheck, DirectCallNode createUnresolved, EspressoContext context, Meta meta) {
113113
ByteSequence typeDescriptor = ByteSequence.create(type);
114114
if (type.length() == 1) {
115115
JavaKind kind = JavaKind.fromPrimitiveOrVoidTypeCharOrNull(type.charAt(0));
116116
if (kind == null) {
117-
return toJVMCIUnresolvedType(typeDescriptor, unresolvedTypeConstructor, context, meta);
117+
return toJVMCIUnresolvedType(typeDescriptor, createUnresolved, meta);
118118
}
119119
return toJVMCIPrimitiveType(kind, forBasicType, initCheck, meta);
120120
}
121-
return lookupNonPrimitiveType(typeDescriptor, accessingKlass, resolve, objectTypeConstructor, arrayTypeConstructor, forBasicType, initCheck, unresolvedTypeConstructor, context, meta);
121+
return lookupNonPrimitiveType(typeDescriptor, accessingKlass, resolve, objectTypeConstructor, arrayTypeConstructor, forBasicType, initCheck, createUnresolved, context, meta);
122122
}
123123

124124
static StaticObject lookupNonPrimitiveType(ByteSequence typeDescriptor, ObjectKlass accessingKlass, boolean resolve, DirectCallNode objectTypeConstructor, DirectCallNode arrayTypeConstructor,
125-
DirectCallNode forBasicType, InitCheck initCheck, DirectCallNode unresolvedTypeConstructor, EspressoContext context, Meta meta) {
125+
DirectCallNode forBasicType, InitCheck initCheck, DirectCallNode createUnresolved, EspressoContext context, Meta meta) {
126126
Symbol<Type> symbol = meta.getTypes().lookupValidType(typeDescriptor);
127127
if (symbol == null) {
128128
if (resolve) {
129129
symbol = meta.getTypes().getOrCreateValidType(typeDescriptor);
130130
}
131131
if (symbol == null) {
132-
return toJVMCIUnresolvedType(typeDescriptor, unresolvedTypeConstructor, context, meta);
132+
return toJVMCIUnresolvedType(typeDescriptor, createUnresolved, meta);
133133
}
134134
}
135135
Klass result = findObjectType(symbol, accessingKlass, resolve, meta);
136136
if (result == null) {
137137
assert !resolve;
138-
return toJVMCIUnresolvedType(symbol, unresolvedTypeConstructor, context, meta);
138+
return toJVMCIUnresolvedType(symbol, createUnresolved, meta);
139139
} else {
140140
return toJVMCIObjectType(result, objectTypeConstructor, arrayTypeConstructor, forBasicType, initCheck, context, meta);
141141
}

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/substitutions/jvmci/Target_com_oracle_truffle_espresso_jvmci_meta_EspressoMetaAccessProvider.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,19 +155,15 @@ static StaticObject toJVMCIInstanceType(ObjectKlass klass, Meta meta) {
155155
return jvmciMirror;
156156
}
157157

158-
static StaticObject toJVMCIUnresolvedType(ByteSequence symbol, DirectCallNode unresolvedTypeConstructor, EspressoContext context, Meta meta) {
158+
static StaticObject toJVMCIUnresolvedType(ByteSequence symbol, DirectCallNode createUnresolved, Meta meta) {
159159
assert Validation.validTypeDescriptor(symbol, true);
160160
assert (symbol.byteAt(0) == 'L' && symbol.byteAt(symbol.length() - 1) == ';') || symbol.byteAt(0) == '[' : symbol;
161-
StaticObject result = meta.jvmci.UnresolvedJavaType.allocateInstance(context);
162-
unresolvedTypeConstructor.call(result, meta.toGuestString(symbol));
163-
return result;
161+
return (StaticObject) createUnresolved.call(meta.toGuestString(symbol));
164162
}
165163

166164
static StaticObject toJVMCIUnresolvedType(ByteSequence symbol, Meta meta) {
167165
assert (symbol.byteAt(0) == 'L' && symbol.byteAt(symbol.length() - 1) == ';') || symbol.byteAt(0) == '[';
168-
StaticObject result = meta.jvmci.UnresolvedJavaType.allocateInstance(meta.getContext());
169-
meta.jvmci.UnresolvedJavaType_init.invokeDirectSpecial(result, meta.toGuestString(symbol));
170-
return result;
166+
return (StaticObject) meta.jvmci.UnresolvedJavaType_create.invokeDirectStatic(meta.toGuestString(symbol));
171167
}
172168

173169
@Substitution(hasReceiver = true)

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/substitutions/jvmci/Target_com_oracle_truffle_espresso_jvmci_meta_EspressoResolvedJavaField.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ static StaticObject doDefault(StaticObject self, StaticObject unresolved,
107107
@Cached("create(context.getMeta().jvmci.EspressoResolvedInstanceType_init.getCallTarget())") DirectCallNode objectTypeConstructor,
108108
@Cached("create(context.getMeta().jvmci.EspressoResolvedArrayType_init.getCallTarget())") DirectCallNode arrayTypeConstructor,
109109
@Cached("create(context.getMeta().jvmci.EspressoResolvedPrimitiveType_forBasicType.getCallTarget())") DirectCallNode forBasicType,
110-
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_init.getCallTarget())") DirectCallNode unresolvedTypeConstructor,
110+
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_create.getCallTarget())") DirectCallNode createUnresolved,
111111
@Cached InitCheck initCheck) {
112112
assert context.getLanguage().isInternalJVMCIEnabled();
113113
Meta meta = context.getMeta();
@@ -117,9 +117,7 @@ static StaticObject doDefault(StaticObject self, StaticObject unresolved,
117117
LOGGER.finer(() -> "ERJF.getType0 found " + klass);
118118
return toJVMCIType(klass, objectTypeConstructor, arrayTypeConstructor, forBasicType, initCheck, context, meta);
119119
} else if (StaticObject.isNull(unresolved)) {
120-
StaticObject newUnresolved = meta.jvmci.UnresolvedJavaType.allocateInstance(context);
121-
unresolvedTypeConstructor.call(newUnresolved, meta.toGuestString(field.getType()));
122-
return newUnresolved;
120+
return (StaticObject) createUnresolved.call(meta.toGuestString(field.getType()));
123121
} else {
124122
assert field.getType().toString().equals(meta.toHostString(meta.jvmci.UnresolvedJavaType_name.getObject(unresolved)));
125123
return unresolved;

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/substitutions/jvmci/Target_com_oracle_truffle_espresso_jvmci_meta_EspressoResolvedJavaMethod.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ static StaticObject doDefault(StaticObject self,
8282
@Cached("create(context.getMeta().jvmci.EspressoResolvedInstanceType_init.getCallTarget())") DirectCallNode objectTypeConstructor,
8383
@Cached("create(context.getMeta().jvmci.EspressoResolvedArrayType_init.getCallTarget())") DirectCallNode arrayTypeConstructor,
8484
@Cached("create(context.getMeta().jvmci.EspressoResolvedPrimitiveType_forBasicType.getCallTarget())") DirectCallNode forBasicType,
85-
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_init.getCallTarget())") DirectCallNode unresolvedTypeConstructor,
85+
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_create.getCallTarget())") DirectCallNode createUnresolved,
8686
@Cached InitCheck initCheck) {
8787
assert context.getLanguage().isInternalJVMCIEnabled();
8888
Meta meta = context.getMeta();
@@ -98,7 +98,7 @@ static StaticObject doDefault(StaticObject self,
9898
StaticObject guestLocals = meta.jvmci.Local.allocateReferenceArray(locals.length);
9999
StaticObject[] unwrappedGuestLocals = guestLocals.unwrap(meta.getLanguage());
100100
for (int i = 0; i < locals.length; i++) {
101-
unwrappedGuestLocals[i] = toJVMCILocal(locals[i], method.getDeclaringKlass(), localConstructor, objectTypeConstructor, arrayTypeConstructor, forBasicType, unresolvedTypeConstructor,
101+
unwrappedGuestLocals[i] = toJVMCILocal(locals[i], method.getDeclaringKlass(), localConstructor, objectTypeConstructor, arrayTypeConstructor, forBasicType, createUnresolved,
102102
initCheck, context, meta);
103103
}
104104
StaticObject result = meta.jvmci.LocalVariableTable.allocateInstance(context);
@@ -107,22 +107,22 @@ static StaticObject doDefault(StaticObject self,
107107
}
108108

109109
private static StaticObject toJVMCILocal(Local local, ObjectKlass declaringKlass, DirectCallNode localConstructor, DirectCallNode objectTypeConstructor, DirectCallNode arrayTypeConstructor,
110-
DirectCallNode forBasicType, DirectCallNode unresolvedTypeConstructor, InitCheck initCheck, EspressoContext context, Meta meta) {
110+
DirectCallNode forBasicType, DirectCallNode createUnresolved, InitCheck initCheck, EspressoContext context, Meta meta) {
111111
StaticObject result = meta.jvmci.Local.allocateInstance(context);
112112
Klass resolvedType = getResolvedType(local, declaringKlass, meta);
113113
StaticObject guestType;
114114
if (resolvedType != null) {
115115
guestType = toJVMCIType(resolvedType, objectTypeConstructor, arrayTypeConstructor, forBasicType, initCheck, context, meta);
116116
} else {
117-
guestType = toJVMCIUnresolvedType(local.getTypeOrDesc(), unresolvedTypeConstructor, context, meta);
117+
guestType = toJVMCIUnresolvedType(local.getTypeOrDesc(), createUnresolved, meta);
118118
}
119119
localConstructor.call(result, meta.toGuestString(local.getNameAsString()), guestType, local.getStartBCI(), local.getEndBCI(), local.getSlot());
120120
return result;
121121
}
122122

123123
@TruffleBoundary
124124
private static Klass getResolvedType(Local local, ObjectKlass declaringKlass, Meta meta) {
125-
Symbol<Type> localType = null;
125+
Symbol<Type> localType;
126126
try {
127127
localType = local.getTypeOrDesc().validateType(true);
128128
} catch (ValidationException e) {
@@ -180,7 +180,7 @@ static StaticObject doDefault(StaticObject self,
180180
@Bind("getContext()") EspressoContext context,
181181
@Cached("create(context.getMeta().jvmci.ExceptionHandler_init.getCallTarget())") DirectCallNode exceptionHandlerConstructor,
182182
@Cached("create(context.getMeta().jvmci.EspressoResolvedInstanceType_init.getCallTarget())") DirectCallNode objectTypeConstructor,
183-
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_init.getCallTarget())") DirectCallNode unresolvedTypeConstructor) {
183+
@Cached("create(context.getMeta().jvmci.UnresolvedJavaType_create.getCallTarget())") DirectCallNode createUnresolved) {
184184
assert context.getLanguage().isInternalJVMCIEnabled();
185185
Meta meta = context.getMeta();
186186
Method method = (Method) meta.jvmci.HIDDEN_METHOD_MIRROR.getHiddenObject(self);
@@ -206,7 +206,7 @@ static StaticObject doDefault(StaticObject self,
206206
catchType = toJVMCIInstanceType(catchKlass, objectTypeConstructor, context, meta);
207207
} else {
208208
ByteSequence type = TypeSymbols.nameToType(pool.className(exceptionClassIndex));
209-
catchType = toJVMCIUnresolvedType(type, unresolvedTypeConstructor, context, meta);
209+
catchType = toJVMCIUnresolvedType(type, createUnresolved, meta);
210210
}
211211
}
212212
exceptionHandlerConstructor.call(jvmciExceptionHandler,

0 commit comments

Comments
 (0)