< prev index next >

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

Print this page




  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 org.junit.Test;
  63 
  64 import jdk.internal.reflect.ConstantPool;
  65 import jdk.vm.ci.common.JVMCIError;
  66 import jdk.vm.ci.meta.Assumptions.AssumptionResult;
  67 import jdk.vm.ci.meta.JavaConstant;
  68 import jdk.vm.ci.meta.JavaKind;
  69 import jdk.vm.ci.meta.ResolvedJavaField;
  70 import jdk.vm.ci.meta.ResolvedJavaMethod;
  71 import jdk.vm.ci.meta.ResolvedJavaType;
  72 
  73 /**
  74  * Tests for {@link ResolvedJavaType}.
  75  */
  76 @SuppressWarnings("unchecked")


 126     public void isInstanceClassTest() {
 127         for (Class<?> c : classes) {
 128             ResolvedJavaType type = metaAccess.lookupJavaType(c);
 129             boolean expected = !c.isArray() && !c.isPrimitive() && !c.isInterface();
 130             boolean actual = type.isInstanceClass();
 131             assertEquals(expected, actual);
 132         }
 133     }
 134 
 135     @Test
 136     public void isArrayTest() {
 137         for (Class<?> c : classes) {
 138             ResolvedJavaType type = metaAccess.lookupJavaType(c);
 139             boolean expected = c.isArray();
 140             boolean actual = type.isArray();
 141             assertEquals(expected, actual);
 142         }
 143     }
 144 
 145     @Test





















 146     public void getModifiersTest() {
 147         for (Class<?> c : classes) {
 148             ResolvedJavaType type = metaAccess.lookupJavaType(c);
 149             int mask = Modifier.classModifiers() & ~Modifier.STATIC;
 150             int expected = c.getModifiers() & mask;
 151             int actual = type.getModifiers() & mask;
 152             Class<?> elementalType = c;
 153             while (elementalType.isArray()) {
 154                 elementalType = elementalType.getComponentType();
 155             }
 156             if (elementalType.isMemberClass()) {
 157                 // member class get their modifiers from the inner-class attribute in the JVM and
 158                 // from the classfile header in jvmci
 159                 expected &= ~(Modifier.PUBLIC | Modifier.PRIVATE | Modifier.PROTECTED);
 160                 actual &= ~(Modifier.PUBLIC | Modifier.PRIVATE | Modifier.PROTECTED);
 161             }
 162             assertEquals(String.format("%s: 0x%x != 0x%x", type, expected, actual), expected, actual);
 163         }
 164     }
 165 




  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.function.Supplier;
  58 import java.util.HashMap;
  59 import java.util.HashSet;
  60 import java.util.Map;
  61 import java.util.Set;
  62 
  63 import org.junit.Test;
  64 
  65 import jdk.internal.reflect.ConstantPool;
  66 import jdk.vm.ci.common.JVMCIError;
  67 import jdk.vm.ci.meta.Assumptions.AssumptionResult;
  68 import jdk.vm.ci.meta.JavaConstant;
  69 import jdk.vm.ci.meta.JavaKind;
  70 import jdk.vm.ci.meta.ResolvedJavaField;
  71 import jdk.vm.ci.meta.ResolvedJavaMethod;
  72 import jdk.vm.ci.meta.ResolvedJavaType;
  73 
  74 /**
  75  * Tests for {@link ResolvedJavaType}.
  76  */
  77 @SuppressWarnings("unchecked")


 127     public void isInstanceClassTest() {
 128         for (Class<?> c : classes) {
 129             ResolvedJavaType type = metaAccess.lookupJavaType(c);
 130             boolean expected = !c.isArray() && !c.isPrimitive() && !c.isInterface();
 131             boolean actual = type.isInstanceClass();
 132             assertEquals(expected, actual);
 133         }
 134     }
 135 
 136     @Test
 137     public void isArrayTest() {
 138         for (Class<?> c : classes) {
 139             ResolvedJavaType type = metaAccess.lookupJavaType(c);
 140             boolean expected = c.isArray();
 141             boolean actual = type.isArray();
 142             assertEquals(expected, actual);
 143         }
 144     }
 145 
 146     @Test
 147     public void getHostClassTest() {
 148         for (Class<?> c : classes) {
 149             ResolvedJavaType type = metaAccess.lookupJavaType(c);
 150             ResolvedJavaType host = type.getHostClass();
 151             assertNull(host);
 152         }
 153 
 154         class LocalClass {}
 155         Cloneable clone = new Cloneable() {};
 156         assertNull(metaAccess.lookupJavaType(LocalClass.class).getHostClass());
 157         assertNull(metaAccess.lookupJavaType(clone.getClass()).getHostClass());
 158 
 159         Supplier<Runnable> lambda = () -> () -> System.out.println("run");
 160         ResolvedJavaType lambdaType = metaAccess.lookupJavaType(lambda.getClass());
 161         ResolvedJavaType nestedLambdaType = metaAccess.lookupJavaType(lambda.get().getClass());
 162         assertNotNull(lambdaType.getHostClass());
 163         assertNotNull(nestedLambdaType.getHostClass());
 164         assertEquals(lambdaType.getHostClass(), nestedLambdaType.getHostClass());
 165     }
 166 
 167     @Test
 168     public void getModifiersTest() {
 169         for (Class<?> c : classes) {
 170             ResolvedJavaType type = metaAccess.lookupJavaType(c);
 171             int mask = Modifier.classModifiers() & ~Modifier.STATIC;
 172             int expected = c.getModifiers() & mask;
 173             int actual = type.getModifiers() & mask;
 174             Class<?> elementalType = c;
 175             while (elementalType.isArray()) {
 176                 elementalType = elementalType.getComponentType();
 177             }
 178             if (elementalType.isMemberClass()) {
 179                 // member class get their modifiers from the inner-class attribute in the JVM and
 180                 // from the classfile header in jvmci
 181                 expected &= ~(Modifier.PUBLIC | Modifier.PRIVATE | Modifier.PROTECTED);
 182                 actual &= ~(Modifier.PUBLIC | Modifier.PRIVATE | Modifier.PROTECTED);
 183             }
 184             assertEquals(String.format("%s: 0x%x != 0x%x", type, expected, actual), expected, actual);
 185         }
 186     }
 187 


< prev index next >