< prev index next >

src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java

Print this page




  35 import java.lang.reflect.Modifier;
  36 import java.nio.ByteOrder;
  37 import java.util.ArrayList;
  38 import java.util.Arrays;
  39 import java.util.HashMap;
  40 
  41 import jdk.vm.ci.common.JVMCIError;
  42 import jdk.vm.ci.meta.Assumptions.AssumptionResult;
  43 import jdk.vm.ci.meta.Assumptions.ConcreteMethod;
  44 import jdk.vm.ci.meta.Assumptions.ConcreteSubtype;
  45 import jdk.vm.ci.meta.Assumptions.LeafType;
  46 import jdk.vm.ci.meta.Assumptions.NoFinalizableSubclass;
  47 import jdk.vm.ci.meta.Constant;
  48 import jdk.vm.ci.meta.JavaConstant;
  49 import jdk.vm.ci.meta.JavaKind;
  50 import jdk.vm.ci.meta.JavaType;
  51 import jdk.vm.ci.meta.ModifiersProvider;
  52 import jdk.vm.ci.meta.ResolvedJavaField;
  53 import jdk.vm.ci.meta.ResolvedJavaMethod;
  54 import jdk.vm.ci.meta.ResolvedJavaType;
  55 import jdk.vm.ci.meta.TrustedInterface;
  56 
  57 /**
  58  * Implementation of {@link JavaType} for resolved non-primitive HotSpot classes.
  59  */
  60 final class HotSpotResolvedObjectTypeImpl extends HotSpotResolvedJavaType implements HotSpotResolvedObjectType, HotSpotProxified, MetaspaceWrapperObject {
  61 
  62     /**
  63      * The Java class this type represents.
  64      */
  65     private final Class<?> javaClass;
  66     private HashMap<Long, HotSpotResolvedJavaField> fieldCache;
  67     private HashMap<Long, HotSpotResolvedJavaMethodImpl> methodCache;
  68     private HotSpotResolvedJavaField[] instanceFields;
  69     private HotSpotResolvedObjectTypeImpl[] interfaces;
  70     private HotSpotConstantPool constantPool;
  71     final HotSpotJVMCIMetaAccessContext context;
  72     private HotSpotResolvedObjectType arrayOfType;
  73 
  74     /**
  75      * Gets the JVMCI mirror for a {@link Class} object.


 859     }
 860 
 861     @Override
 862     public ResolvedJavaMethod[] getDeclaredMethods() {
 863         Method[] methods = mirror().getDeclaredMethods();
 864         ResolvedJavaMethod[] result = new ResolvedJavaMethod[methods.length];
 865         for (int i = 0; i < methods.length; i++) {
 866             result[i] = runtime().getHostJVMCIBackend().getMetaAccess().lookupJavaMethod(methods[i]);
 867             assert !result[i].isConstructor();
 868         }
 869         return result;
 870     }
 871 
 872     public ResolvedJavaMethod getClassInitializer() {
 873         return compilerToVM().getClassInitializer(this);
 874     }
 875 
 876     @Override
 877     public String toString() {
 878         return "HotSpotType<" + getName() + ", resolved>";
 879     }
 880 
 881     @Override
 882     public boolean isTrustedInterfaceType() {
 883         return TrustedInterface.class.isAssignableFrom(mirror());
 884     }
 885 
 886     @Override
 887     public boolean isCloneableWithAllocation() {
 888         return (getAccessFlags() & config().jvmAccIsCloneableFast) != 0;
 889     }
 890 }


  35 import java.lang.reflect.Modifier;
  36 import java.nio.ByteOrder;
  37 import java.util.ArrayList;
  38 import java.util.Arrays;
  39 import java.util.HashMap;
  40 
  41 import jdk.vm.ci.common.JVMCIError;
  42 import jdk.vm.ci.meta.Assumptions.AssumptionResult;
  43 import jdk.vm.ci.meta.Assumptions.ConcreteMethod;
  44 import jdk.vm.ci.meta.Assumptions.ConcreteSubtype;
  45 import jdk.vm.ci.meta.Assumptions.LeafType;
  46 import jdk.vm.ci.meta.Assumptions.NoFinalizableSubclass;
  47 import jdk.vm.ci.meta.Constant;
  48 import jdk.vm.ci.meta.JavaConstant;
  49 import jdk.vm.ci.meta.JavaKind;
  50 import jdk.vm.ci.meta.JavaType;
  51 import jdk.vm.ci.meta.ModifiersProvider;
  52 import jdk.vm.ci.meta.ResolvedJavaField;
  53 import jdk.vm.ci.meta.ResolvedJavaMethod;
  54 import jdk.vm.ci.meta.ResolvedJavaType;

  55 
  56 /**
  57  * Implementation of {@link JavaType} for resolved non-primitive HotSpot classes.
  58  */
  59 final class HotSpotResolvedObjectTypeImpl extends HotSpotResolvedJavaType implements HotSpotResolvedObjectType, HotSpotProxified, MetaspaceWrapperObject {
  60 
  61     /**
  62      * The Java class this type represents.
  63      */
  64     private final Class<?> javaClass;
  65     private HashMap<Long, HotSpotResolvedJavaField> fieldCache;
  66     private HashMap<Long, HotSpotResolvedJavaMethodImpl> methodCache;
  67     private HotSpotResolvedJavaField[] instanceFields;
  68     private HotSpotResolvedObjectTypeImpl[] interfaces;
  69     private HotSpotConstantPool constantPool;
  70     final HotSpotJVMCIMetaAccessContext context;
  71     private HotSpotResolvedObjectType arrayOfType;
  72 
  73     /**
  74      * Gets the JVMCI mirror for a {@link Class} object.


 858     }
 859 
 860     @Override
 861     public ResolvedJavaMethod[] getDeclaredMethods() {
 862         Method[] methods = mirror().getDeclaredMethods();
 863         ResolvedJavaMethod[] result = new ResolvedJavaMethod[methods.length];
 864         for (int i = 0; i < methods.length; i++) {
 865             result[i] = runtime().getHostJVMCIBackend().getMetaAccess().lookupJavaMethod(methods[i]);
 866             assert !result[i].isConstructor();
 867         }
 868         return result;
 869     }
 870 
 871     public ResolvedJavaMethod getClassInitializer() {
 872         return compilerToVM().getClassInitializer(this);
 873     }
 874 
 875     @Override
 876     public String toString() {
 877         return "HotSpotType<" + getName() + ", resolved>";





 878     }
 879 
 880     @Override
 881     public boolean isCloneableWithAllocation() {
 882         return (getAccessFlags() & config().jvmAccIsCloneableFast) != 0;
 883     }
 884 }
< prev index next >