< prev index next >

test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaMethod.java

Print this page




 405             } else {
 406                 assertFalse(m.isJavaLangObjectInit());
 407             }
 408         }
 409     }
 410 
 411     @Test
 412     public void isSignaturePolymorphicTest() {
 413         ResolvedJavaType methodHandleType = metaAccess.lookupJavaType(MethodHandle.class);
 414         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invokeExact", metaAccess));
 415         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invoke", metaAccess));
 416         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invokeBasic", metaAccess));
 417         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToVirtual", metaAccess));
 418         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToStatic", metaAccess));
 419         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToSpecial", metaAccess));
 420         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToInterface", metaAccess));
 421         assertFalse(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "type", metaAccess));
 422         assertFalse(ResolvedJavaMethod.isSignaturePolymorphic(metaAccess.lookupJavaType(Object.class), "toString", metaAccess));
 423     }
 424 



















 425     private Method findTestMethod(Method apiMethod) {
 426         String testName = apiMethod.getName() + "Test";
 427         for (Method m : getClass().getDeclaredMethods()) {
 428             if (m.getName().equals(testName) && m.getAnnotation(Test.class) != null) {
 429                 return m;
 430             }
 431         }
 432         return null;
 433     }
 434 
 435     // @formatter:off
 436     private static final String[] untestedApiMethods = {
 437         "invoke",
 438         "newInstance",
 439         "getDeclaringClass",
 440         "getEncoding",
 441         "getProfilingInfo",
 442         "reprofile",
 443         "getCompilerStorage",
 444         "canBeInlined",




 405             } else {
 406                 assertFalse(m.isJavaLangObjectInit());
 407             }
 408         }
 409     }
 410 
 411     @Test
 412     public void isSignaturePolymorphicTest() {
 413         ResolvedJavaType methodHandleType = metaAccess.lookupJavaType(MethodHandle.class);
 414         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invokeExact", metaAccess));
 415         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invoke", metaAccess));
 416         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invokeBasic", metaAccess));
 417         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToVirtual", metaAccess));
 418         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToStatic", metaAccess));
 419         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToSpecial", metaAccess));
 420         assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToInterface", metaAccess));
 421         assertFalse(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "type", metaAccess));
 422         assertFalse(ResolvedJavaMethod.isSignaturePolymorphic(metaAccess.lookupJavaType(Object.class), "toString", metaAccess));
 423     }
 424 
 425     /**
 426      * All public non-final methods should be available in the vtable.
 427      */
 428     @Test
 429     public void testVirtualMethodTableAccess() {
 430         for (Class<?> c : classes) {
 431             if (c.isPrimitive() || c.isInterface()) {
 432                 continue;
 433             }
 434             ResolvedJavaType receiverType = metaAccess.lookupJavaType(c);
 435             for (Method m : c.getMethods()) {
 436                 ResolvedJavaMethod method = metaAccess.lookupJavaMethod(m);
 437                 if (!method.isStatic() && !method.isFinal() && !method.getDeclaringClass().isLeaf() && !method.getDeclaringClass().isInterface()) {
 438                     assertTrue(method + " not available in " + receiverType, method.isInVirtualMethodTable(receiverType));
 439                 }
 440             }
 441         }
 442     }
 443 
 444     private Method findTestMethod(Method apiMethod) {
 445         String testName = apiMethod.getName() + "Test";
 446         for (Method m : getClass().getDeclaredMethods()) {
 447             if (m.getName().equals(testName) && m.getAnnotation(Test.class) != null) {
 448                 return m;
 449             }
 450         }
 451         return null;
 452     }
 453 
 454     // @formatter:off
 455     private static final String[] untestedApiMethods = {
 456         "invoke",
 457         "newInstance",
 458         "getDeclaringClass",
 459         "getEncoding",
 460         "getProfilingInfo",
 461         "reprofile",
 462         "getCompilerStorage",
 463         "canBeInlined",


< prev index next >