11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test 26 * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64") 27 * @library ../../../../../ 28 * @modules java.base/jdk.internal.reflect 29 * jdk.vm.ci/jdk.vm.ci.meta 30 * jdk.vm.ci/jdk.vm.ci.runtime 31 * jdk.vm.ci/jdk.vm.ci.common 32 * java.base/jdk.internal.misc 33 * @build jdk.vm.ci.runtime.test.TestResolvedJavaType 34 * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestResolvedJavaType 35 */ 36 37 package jdk.vm.ci.runtime.test; 38 39 import static java.lang.reflect.Modifier.isAbstract; 40 import static java.lang.reflect.Modifier.isFinal; 41 import static java.lang.reflect.Modifier.isPrivate; 42 import static java.lang.reflect.Modifier.isProtected; 43 import static java.lang.reflect.Modifier.isPublic; 44 import static java.lang.reflect.Modifier.isStatic; 45 import static org.junit.Assert.assertArrayEquals; 46 import static org.junit.Assert.assertEquals; 47 import static org.junit.Assert.assertFalse; 48 import static org.junit.Assert.assertNotNull; 49 import static org.junit.Assert.assertNull; 50 import static org.junit.Assert.assertTrue; 51 52 import java.lang.annotation.Annotation; 53 import java.lang.reflect.Field; 54 import java.lang.reflect.Method; 55 import java.lang.reflect.Modifier; 56 import java.util.Arrays; 57 import java.util.Collections; 58 import java.util.HashMap; 59 import java.util.HashSet; 60 import java.util.Map; 61 import java.util.Set; 62 63 import jdk.vm.ci.common.JVMCIError; 64 import jdk.vm.ci.meta.Assumptions.AssumptionResult; 65 import jdk.vm.ci.meta.JavaConstant; 66 import jdk.vm.ci.meta.JavaKind; 67 import jdk.vm.ci.meta.ModifiersProvider; 68 import jdk.vm.ci.meta.ResolvedJavaField; 69 import jdk.vm.ci.meta.ResolvedJavaMethod; 70 import jdk.vm.ci.meta.ResolvedJavaType; 71 72 import org.junit.Test; 73 74 import jdk.internal.reflect.ConstantPool; 75 76 /** 77 * Tests for {@link ResolvedJavaType}. 78 */ 79 public class TestResolvedJavaType extends TypeUniverse { 80 81 public TestResolvedJavaType() { 82 } 83 445 ResolvedJavaType aSai = metaAccess.lookupJavaType(SingleAbstractImplementor.class); 446 assertEquals(aSai, iSai.getSingleImplementor()); 447 448 ResolvedJavaType iMi = metaAccess.lookupJavaType(MultiImplementorInterface.class); 449 metaAccess.lookupJavaType(ConcreteImplementor1.class); 450 metaAccess.lookupJavaType(ConcreteImplementor2.class); 451 assertEquals(iMi, iMi.getSingleImplementor()); 452 453 ResolvedJavaType iMai = metaAccess.lookupJavaType(MultipleAbstractImplementorInterface.class); 454 metaAccess.lookupJavaType(MultiAbstractImplementor1.class); 455 metaAccess.lookupJavaType(MultiAbstractImplementor2.class); 456 assertEquals(iMai, iMai.getSingleImplementor()); 457 458 ResolvedJavaType iSai2 = metaAccess.lookupJavaType(SingleAbstractImplementorInterface2.class); 459 ResolvedJavaType aSai2 = metaAccess.lookupJavaType(SingleAbstractImplementor2.class); 460 metaAccess.lookupJavaType(ConcreteTransitiveImplementor1.class); 461 metaAccess.lookupJavaType(ConcreteTransitiveImplementor2.class); 462 assertEquals(aSai2, iSai2.getSingleImplementor()); 463 } 464 465 @Test(expected = JVMCIError.class) 466 public void getSingleImplementorTestClassReceiver() { 467 ResolvedJavaType base = metaAccess.lookupJavaType(Base.class); 468 base.getSingleImplementor(); 469 } 470 471 @Test(expected = JVMCIError.class) 472 public void getSingleImplementorTestPrimitiveReceiver() { 473 ResolvedJavaType primitive = metaAccess.lookupJavaType(int.class); 474 primitive.getSingleImplementor(); 475 } 476 477 @Test 478 public void getComponentTypeTest() { 479 for (Class<?> c : classes) { 480 ResolvedJavaType type = metaAccess.lookupJavaType(c); 481 Class<?> expected = c.getComponentType(); 482 ResolvedJavaType actual = type.getComponentType(); 483 if (expected == null) { 484 assertNull(actual); 485 } else { 486 assertTrue(actual.equals(metaAccess.lookupJavaType(expected))); 487 } 488 } 489 } 490 491 @Test | 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test 26 * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64") 27 * @library ../../../../../ 28 * @modules java.base/jdk.internal.reflect 29 * jdk.vm.ci/jdk.vm.ci.meta 30 * jdk.vm.ci/jdk.vm.ci.runtime 31 * java.base/jdk.internal.misc 32 * @build jdk.vm.ci.runtime.test.TestResolvedJavaType 33 * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestResolvedJavaType 34 */ 35 36 package jdk.vm.ci.runtime.test; 37 38 import static java.lang.reflect.Modifier.isAbstract; 39 import static java.lang.reflect.Modifier.isFinal; 40 import static java.lang.reflect.Modifier.isPrivate; 41 import static java.lang.reflect.Modifier.isProtected; 42 import static java.lang.reflect.Modifier.isPublic; 43 import static java.lang.reflect.Modifier.isStatic; 44 import static org.junit.Assert.assertArrayEquals; 45 import static org.junit.Assert.assertEquals; 46 import static org.junit.Assert.assertFalse; 47 import static org.junit.Assert.assertNotNull; 48 import static org.junit.Assert.assertNull; 49 import static org.junit.Assert.assertTrue; 50 51 import java.lang.annotation.Annotation; 52 import java.lang.reflect.Field; 53 import java.lang.reflect.Method; 54 import java.lang.reflect.Modifier; 55 import java.util.Arrays; 56 import java.util.Collections; 57 import java.util.HashMap; 58 import java.util.HashSet; 59 import java.util.Map; 60 import java.util.Set; 61 62 import jdk.vm.ci.meta.Assumptions.AssumptionResult; 63 import jdk.vm.ci.meta.JavaConstant; 64 import jdk.vm.ci.meta.JavaKind; 65 import jdk.vm.ci.meta.ModifiersProvider; 66 import jdk.vm.ci.meta.ResolvedJavaField; 67 import jdk.vm.ci.meta.ResolvedJavaMethod; 68 import jdk.vm.ci.meta.ResolvedJavaType; 69 70 import org.junit.Test; 71 72 import jdk.internal.reflect.ConstantPool; 73 74 /** 75 * Tests for {@link ResolvedJavaType}. 76 */ 77 public class TestResolvedJavaType extends TypeUniverse { 78 79 public TestResolvedJavaType() { 80 } 81 443 ResolvedJavaType aSai = metaAccess.lookupJavaType(SingleAbstractImplementor.class); 444 assertEquals(aSai, iSai.getSingleImplementor()); 445 446 ResolvedJavaType iMi = metaAccess.lookupJavaType(MultiImplementorInterface.class); 447 metaAccess.lookupJavaType(ConcreteImplementor1.class); 448 metaAccess.lookupJavaType(ConcreteImplementor2.class); 449 assertEquals(iMi, iMi.getSingleImplementor()); 450 451 ResolvedJavaType iMai = metaAccess.lookupJavaType(MultipleAbstractImplementorInterface.class); 452 metaAccess.lookupJavaType(MultiAbstractImplementor1.class); 453 metaAccess.lookupJavaType(MultiAbstractImplementor2.class); 454 assertEquals(iMai, iMai.getSingleImplementor()); 455 456 ResolvedJavaType iSai2 = metaAccess.lookupJavaType(SingleAbstractImplementorInterface2.class); 457 ResolvedJavaType aSai2 = metaAccess.lookupJavaType(SingleAbstractImplementor2.class); 458 metaAccess.lookupJavaType(ConcreteTransitiveImplementor1.class); 459 metaAccess.lookupJavaType(ConcreteTransitiveImplementor2.class); 460 assertEquals(aSai2, iSai2.getSingleImplementor()); 461 } 462 463 @Test(expected = InternalError.class) 464 public void getSingleImplementorTestClassReceiver() { 465 ResolvedJavaType base = metaAccess.lookupJavaType(Base.class); 466 base.getSingleImplementor(); 467 } 468 469 @Test(expected = InternalError.class) 470 public void getSingleImplementorTestPrimitiveReceiver() { 471 ResolvedJavaType primitive = metaAccess.lookupJavaType(int.class); 472 primitive.getSingleImplementor(); 473 } 474 475 @Test 476 public void getComponentTypeTest() { 477 for (Class<?> c : classes) { 478 ResolvedJavaType type = metaAccess.lookupJavaType(c); 479 Class<?> expected = c.getComponentType(); 480 ResolvedJavaType actual = type.getComponentType(); 481 if (expected == null) { 482 assertNull(actual); 483 } else { 484 assertTrue(actual.equals(metaAccess.lookupJavaType(expected))); 485 } 486 } 487 } 488 489 @Test |