Skip to content

Commit 3d7651a

Browse files
committed
added ResolvedJavaType.getDeclaredTypes implementations (GR-69872)
1 parent e3c39d1 commit 3d7651a

File tree

13 files changed

+84
-0
lines changed

13 files changed

+84
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,11 @@ public boolean isMember() {
295295
throw new UnsupportedOperationException();
296296
}
297297

298+
@Override
299+
public ResolvedJavaType[] getDeclaredTypes() {
300+
throw new UnsupportedOperationException();
301+
}
302+
298303
@Override
299304
public ResolvedJavaType getEnclosingType() {
300305
throw new UnsupportedOperationException();

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/replaycomp/proxy/HotSpotResolvedJavaTypeProxy.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,14 @@ public final boolean isMember() {
355355
return (boolean) handle(isMemberMethod, isMemberInvokable);
356356
}
357357

358+
private static final SymbolicMethod getDeclaredTypesMethod = method("getDeclaredTypes");
359+
private static final InvokableMethod getDeclaredTypesInvokable = (receiver, args) -> ((HotSpotResolvedJavaType) receiver).getDeclaredMethods();
360+
361+
@Override
362+
public ResolvedJavaType[] getDeclaredTypes() {
363+
return (ResolvedJavaType[]) handle(getDeclaredTypesMethod, getDeclaredTypesInvokable);
364+
}
365+
358366
private static final SymbolicMethod getEnclosingTypeMethod = method("getEnclosingType");
359367
private static final InvokableMethod getEnclosingTypeInvokable = (receiver, args) -> ((HotSpotResolvedJavaType) receiver).getEnclosingType();
360368

espresso/src/com.oracle.truffle.espresso.jvmci/src/com/oracle/truffle/espresso/jvmci/meta/EspressoResolvedArrayType.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,11 @@ public boolean isMember() {
272272
return false;
273273
}
274274

275+
@Override
276+
public ResolvedJavaType[] getDeclaredTypes() {
277+
return new ResolvedJavaType[0];
278+
}
279+
275280
@Override
276281
public ResolvedJavaType getEnclosingType() {
277282
return null;

espresso/src/com.oracle.truffle.espresso.jvmci/src/com/oracle/truffle/espresso/jvmci/meta/EspressoResolvedInstanceType.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import jdk.vm.ci.meta.Assumptions.AssumptionResult;
4545
import jdk.vm.ci.meta.JavaKind;
4646
import jdk.vm.ci.meta.JavaType;
47+
import jdk.vm.ci.meta.MetaAccessProvider;
4748
import jdk.vm.ci.meta.ModifiersProvider;
4849
import jdk.vm.ci.meta.ResolvedJavaField;
4950
import jdk.vm.ci.meta.ResolvedJavaMethod;
@@ -451,6 +452,18 @@ public boolean isMember() {
451452
return getMirror().isMemberClass();
452453
}
453454

455+
@Override
456+
public ResolvedJavaType[] getDeclaredTypes() {
457+
Class<?>[] declaredClasses = getMirror().getDeclaredClasses();
458+
ResolvedJavaType[] declaredTypes = new ResolvedJavaType[declaredClasses.length];
459+
MetaAccessProvider metaAccess = runtime().getHostJVMCIBackend().getMetaAccess();
460+
for (int i = 0; i != declaredTypes.length; i++) {
461+
declaredTypes[i] = metaAccess.lookupJavaType(declaredClasses[i]);
462+
}
463+
return declaredTypes;
464+
465+
}
466+
454467
@Override
455468
public ResolvedJavaType getEnclosingType() {
456469
Class<?> enclosingClass = getMirror().getEnclosingClass();

espresso/src/com.oracle.truffle.espresso.jvmci/src/com/oracle/truffle/espresso/jvmci/meta/EspressoResolvedPrimitiveType.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,11 @@ public boolean isMember() {
240240
return false;
241241
}
242242

243+
@Override
244+
public ResolvedJavaType[] getDeclaredTypes() {
245+
return new ResolvedJavaType[0];
246+
}
247+
243248
@Override
244249
public ResolvedJavaType getEnclosingType() {
245250
return null;

substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,6 +1296,15 @@ public AnalysisType getEnclosingType() {
12961296
return universe.lookup(wrapped.getEnclosingType());
12971297
}
12981298

1299+
@Override
1300+
public ResolvedJavaType[] getDeclaredTypes() {
1301+
ResolvedJavaType[] declaredTypes = wrapped.getDeclaredTypes();
1302+
for (int i = 0; i < declaredTypes.length; i++) {
1303+
declaredTypes[i] = universe.lookup(declaredTypes[i]);
1304+
}
1305+
return declaredTypes;
1306+
}
1307+
12991308
@Override
13001309
public AnalysisMethod[] getDeclaredMethods() {
13011310
return getDeclaredMethods(true);

substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/BaseLayerType.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,11 @@ public boolean isMember() {
286286
throw AnalysisError.shouldNotReachHere("This type is incomplete and should not be used.");
287287
}
288288

289+
@Override
290+
public ResolvedJavaType[] getDeclaredTypes() {
291+
throw AnalysisError.shouldNotReachHere("This type is incomplete and should not be used.");
292+
}
293+
289294
@Override
290295
public ResolvedJavaType getEnclosingType() {
291296
return enclosingType;

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateType.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,11 @@ public boolean isMember() {
407407
throw VMError.intentionallyUnimplemented(); // ExcludeFromJacocoGeneratedReport
408408
}
409409

410+
@Override
411+
public ResolvedJavaType[] getDeclaredTypes() {
412+
throw VMError.intentionallyUnimplemented(); // ExcludeFromJacocoGeneratedReport
413+
}
414+
410415
@Override
411416
public ResolvedJavaType getEnclosingType() {
412417
Class<?> enclosingClass = DynamicHub.toClass(hub).getEnclosingClass();

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/annotation/CustomSubstitutionType.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,11 @@ public ResolvedJavaType[] getInterfaces() {
159159
return original.getInterfaces();
160160
}
161161

162+
@Override
163+
public ResolvedJavaType[] getDeclaredTypes() {
164+
return original.getDeclaredTypes();
165+
}
166+
162167
@Override
163168
public ResolvedJavaType getSingleImplementor() {
164169
return original.getSingleImplementor();

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/meta/HostedType.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,15 @@ public HostedType getEnclosingType() {
515515
return universe.lookup(wrapped.getEnclosingType());
516516
}
517517

518+
@Override
519+
public ResolvedJavaType[] getDeclaredTypes() {
520+
ResolvedJavaType[] declaredTypes = wrapped.getDeclaredTypes();
521+
for (int i = 0; i < declaredTypes.length; i++) {
522+
declaredTypes[i] = universe.lookup(declaredTypes[i]);
523+
}
524+
return declaredTypes;
525+
}
526+
518527
@Override
519528
public ResolvedJavaMethod[] getDeclaredConstructors() {
520529
return getDeclaredConstructors(true);

0 commit comments

Comments
 (0)