Skip to content

Commit 8da6435

Browse files
author
Yudi Zheng
committed
8343693: [JVMCI] Override ModifiersProvider.isConcrete in ResolvedJavaType to be isArray() || !isAbstract()
Reviewed-by: never
1 parent 7ae6069 commit 8da6435

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/meta/ModifiersProvider.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -137,9 +137,11 @@ default boolean isAbstract() {
137137
}
138138

139139
/**
140-
* Checks that the method is concrete and not abstract.
140+
* Returns true if this element is a method with a concrete implementation, or a type that can
141+
* be instantiated. For example, array types return true for both {@link #isAbstract()} and this
142+
* method.
141143
*
142-
* @return whether the method is a concrete method
144+
* @see ResolvedJavaType#isConcrete()
143145
*/
144146
default boolean isConcrete() {
145147
return !isAbstract();

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/meta/ResolvedJavaType.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,4 +402,9 @@ default ResolvedJavaType lookupType(UnresolvedJavaType unresolvedJavaType, boole
402402
default ResolvedJavaField resolveField(UnresolvedJavaField unresolvedJavaField, ResolvedJavaType accessingClass) {
403403
return null;
404404
}
405+
406+
@Override
407+
default boolean isConcrete() {
408+
return isArray() || !isAbstract();
409+
}
405410
}

test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,16 @@ public void isArrayTest() {
196196
}
197197
}
198198

199+
@Test
200+
public void isConcreteTest() {
201+
for (Class<?> c : classes) {
202+
ResolvedJavaType type = metaAccess.lookupJavaType(c);
203+
boolean expected = c.isArray() || !isAbstract(c.getModifiers());
204+
boolean actual = type.isConcrete();
205+
assertEquals(expected, actual);
206+
}
207+
}
208+
199209
@Test
200210
public void lambdaInternalNameTest() {
201211
// Verify that the last dot in lambda types is properly handled when transitioning from

0 commit comments

Comments
 (0)