comparison jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaMethod.java @ 23741:6542cd8da2da

include VarHandle in signature polymorphic method test (JDK-8164214)
author Doug Simon <doug.simon@oracle.com>
date Tue, 23 Aug 2016 22:58:50 +0200
parents 995af926c06b
children d6bd0b9cd0b6
comparison
equal deleted inserted replaced
23740:724fbad94ee3 23741:6542cd8da2da
37 import java.lang.annotation.Annotation; 37 import java.lang.annotation.Annotation;
38 import java.lang.annotation.ElementType; 38 import java.lang.annotation.ElementType;
39 import java.lang.annotation.Retention; 39 import java.lang.annotation.Retention;
40 import java.lang.annotation.RetentionPolicy; 40 import java.lang.annotation.RetentionPolicy;
41 import java.lang.annotation.Target; 41 import java.lang.annotation.Target;
42 import java.lang.invoke.MethodHandle;
43 import java.lang.reflect.Constructor; 42 import java.lang.reflect.Constructor;
44 import java.lang.reflect.Member; 43 import java.lang.reflect.Member;
45 import java.lang.reflect.Method; 44 import java.lang.reflect.Method;
46 import java.lang.reflect.Modifier; 45 import java.lang.reflect.Modifier;
47 import java.lang.reflect.Type; 46 import java.lang.reflect.Type;
49 import java.util.HashMap; 48 import java.util.HashMap;
50 import java.util.HashSet; 49 import java.util.HashSet;
51 import java.util.Map; 50 import java.util.Map;
52 import java.util.Set; 51 import java.util.Set;
53 52
53 import org.junit.Assert;
54 import org.junit.Test;
55
54 import jdk.vm.ci.meta.ConstantPool; 56 import jdk.vm.ci.meta.ConstantPool;
55 import jdk.vm.ci.meta.ExceptionHandler; 57 import jdk.vm.ci.meta.ExceptionHandler;
56 import jdk.vm.ci.meta.ResolvedJavaMethod; 58 import jdk.vm.ci.meta.ResolvedJavaMethod;
57 import jdk.vm.ci.meta.ResolvedJavaType; 59 import jdk.vm.ci.meta.ResolvedJavaType;
58
59 import org.junit.Assert;
60 import org.junit.Test;
61 60
62 /** 61 /**
63 * Tests for {@link ResolvedJavaMethod}. 62 * Tests for {@link ResolvedJavaMethod}.
64 */ 63 */
65 public class TestResolvedJavaMethod extends MethodUniverse { 64 public class TestResolvedJavaMethod extends MethodUniverse {
384 assertTrue(m.isJavaLangObjectInit()); 383 assertTrue(m.isJavaLangObjectInit());
385 } else { 384 } else {
386 assertFalse(m.isJavaLangObjectInit()); 385 assertFalse(m.isJavaLangObjectInit());
387 } 386 }
388 } 387 }
389 }
390
391 @Test
392 public void isSignaturePolymorphicTest() {
393 ResolvedJavaType methodHandleType = metaAccess.lookupJavaType(MethodHandle.class);
394 assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invokeExact", metaAccess));
395 assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invoke", metaAccess));
396 assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "invokeBasic", metaAccess));
397 assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToVirtual", metaAccess));
398 assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToStatic", metaAccess));
399 assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToSpecial", metaAccess));
400 assertTrue(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "linkToInterface", metaAccess));
401 assertFalse(ResolvedJavaMethod.isSignaturePolymorphic(methodHandleType, "type", metaAccess));
402 assertFalse(ResolvedJavaMethod.isSignaturePolymorphic(metaAccess.lookupJavaType(Object.class), "toString", metaAccess));
403 } 388 }
404 389
405 /** 390 /**
406 * All public non-final methods should be available in the vtable. 391 * All public non-final methods should be available in the vtable.
407 */ 392 */