changeset 18542:21384a8fbb64

removed static accesses to HotSpotGraalRuntime from some HotSpot meta API classes
author Doug Simon <doug.simon@oracle.com>
date Wed, 26 Nov 2014 20:18:03 +0100
parents 064d2fae9821
children 99bfecda9d2e
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodUnresolved.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotUnresolvedJavaType.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java
diffstat 8 files changed, 37 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Wed Nov 26 20:18:03 2014 +0100
@@ -399,7 +399,7 @@
 
         if (metaspaceKlass == 0L) {
             assert resolve == false;
-            return HotSpotUnresolvedJavaType.create(name);
+            return HotSpotUnresolvedJavaType.create(this, name);
         }
         return HotSpotResolvedObjectTypeImpl.fromMetaspaceKlass(metaspaceKlass);
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java	Wed Nov 26 20:18:03 2014 +0100
@@ -417,7 +417,7 @@
 
     @Override
     public Signature lookupSignature(int cpi) {
-        return new HotSpotSignature(lookupUtf8(cpi));
+        return new HotSpotSignature(runtime(), lookupUtf8(cpi));
     }
 
     @Override
@@ -444,7 +444,7 @@
         if ((metaspacePointer & config.compilerToVMSymbolTag) != 0) {
             final long metaspaceSymbol = metaspacePointer & ~config.compilerToVMSymbolTag;
             String name = runtime.getCompilerToVM().getSymbol(metaspaceSymbol);
-            return HotSpotUnresolvedJavaType.create("L" + name + ";");
+            return HotSpotUnresolvedJavaType.create(runtime(), "L" + name + ";");
         } else {
             assert (metaspacePointer & config.compilerToVMKlassTag) == 0;
             return HotSpotResolvedObjectTypeImpl.fromMetaspaceKlass(metaspacePointer);
@@ -460,9 +460,9 @@
         } else {
             // Get the method's name and signature.
             String name = getNameRefAt(index);
-            String signature = getSignatureRefAt(index);
+            HotSpotSignature signature = new HotSpotSignature(runtime(), getSignatureRefAt(index));
             if (opcode == Bytecodes.INVOKEDYNAMIC) {
-                HotSpotResolvedObjectTypeImpl holder = HotSpotResolvedObjectTypeImpl.fromObjectClass(MethodHandle.class);
+                HotSpotResolvedObjectType holder = HotSpotResolvedObjectTypeImpl.fromObjectClass(MethodHandle.class);
                 return new HotSpotMethodUnresolved(name, signature, holder);
             } else {
                 final int klassIndex = getKlassRefIndexAt(index);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java	Wed Nov 26 20:18:03 2014 +0100
@@ -120,7 +120,7 @@
      */
     public void linkForeignCall(HotSpotProviders providers, ForeignCallDescriptor descriptor, long address, boolean prependThread, Transition transition, boolean reexecutable,
                     LocationIdentity... killedLocations) {
-        ForeignCallStub stub = new ForeignCallStub(providers, address, descriptor, prependThread, transition, reexecutable, killedLocations);
+        ForeignCallStub stub = new ForeignCallStub(runtime, providers, address, descriptor, prependThread, transition, reexecutable, killedLocations);
         HotSpotForeignCallLinkage linkage = stub.getLinkage();
         HotSpotForeignCallLinkage targetLinkage = stub.getTargetLinkage();
         linkage.setCompiledStub(stub);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java	Wed Nov 26 20:18:03 2014 +0100
@@ -62,7 +62,7 @@
     }
 
     public Signature parseMethodDescriptor(String signature) {
-        return new HotSpotSignature(signature);
+        return new HotSpotSignature(runtime, signature);
     }
 
     /**
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodUnresolved.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodUnresolved.java	Wed Nov 26 20:18:03 2014 +0100
@@ -33,10 +33,10 @@
     private final Signature signature;
     protected JavaType holder;
 
-    public HotSpotMethodUnresolved(String name, String signature, JavaType holder) {
+    public HotSpotMethodUnresolved(String name, Signature signature, JavaType holder) {
         super(name);
         this.holder = holder;
-        this.signature = new HotSpotSignature(signature);
+        this.signature = signature;
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java	Wed Nov 26 20:18:03 2014 +0100
@@ -22,8 +22,6 @@
  */
 package com.oracle.graal.hotspot.meta;
 
-import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*;
-
 import java.util.*;
 
 import com.oracle.graal.api.meta.*;
@@ -41,8 +39,10 @@
     private final String originalString;
     private ResolvedJavaType[] parameterTypes;
     private ResolvedJavaType returnTypeCache;
+    private final HotSpotGraalRuntimeProvider runtime;
 
-    public HotSpotSignature(String signature) {
+    public HotSpotSignature(HotSpotGraalRuntimeProvider runtime, String signature) {
+        this.runtime = runtime;
         assert signature.length() > 0;
         this.originalString = signature;
 
@@ -63,7 +63,8 @@
         }
     }
 
-    public HotSpotSignature(ResolvedJavaType returnType, ResolvedJavaType... parameterTypes) {
+    public HotSpotSignature(HotSpotGraalRuntimeProvider runtime, ResolvedJavaType returnType, ResolvedJavaType... parameterTypes) {
+        this.runtime = runtime;
         this.parameterTypes = parameterTypes.clone();
         this.returnTypeCache = returnType;
         this.returnType = returnType.getName();
@@ -74,7 +75,7 @@
         }
         sb.append(")").append(returnType.getName());
         this.originalString = sb.toString();
-        assert new HotSpotSignature(originalString).equals(this);
+        assert new HotSpotSignature(runtime, originalString).equals(this);
     }
 
     private static int parseSignature(String signature, int start) {
@@ -129,12 +130,12 @@
         return true;
     }
 
-    private static JavaType getUnresolvedOrPrimitiveType(String name) {
+    private static JavaType getUnresolvedOrPrimitiveType(HotSpotGraalRuntimeProvider runtime, String name) {
         if (name.length() == 1) {
             Kind kind = Kind.fromPrimitiveOrVoidTypeChar(name.charAt(0));
-            return HotSpotResolvedPrimitiveType.fromKind(kind);
+            return runtime.getHostProviders().getMetaAccess().lookupJavaType(kind.toJavaClass());
         }
-        return new HotSpotUnresolvedJavaType(name);
+        return new HotSpotUnresolvedJavaType(name, runtime);
     }
 
     @Override
@@ -142,7 +143,7 @@
         if (accessingClass == null) {
             // Caller doesn't care about resolution context so return an unresolved
             // or primitive type (primitive type resolution is context free)
-            return getUnresolvedOrPrimitiveType(parameters.get(index));
+            return getUnresolvedOrPrimitiveType(runtime, parameters.get(index));
         }
         if (parameterTypes == null) {
             parameterTypes = new ResolvedJavaType[parameters.size()];
@@ -150,7 +151,7 @@
 
         ResolvedJavaType type = parameterTypes[index];
         if (!checkValidCache(type, accessingClass)) {
-            type = (ResolvedJavaType) runtime().lookupType(parameters.get(index), (HotSpotResolvedObjectTypeImpl) accessingClass, true);
+            type = (ResolvedJavaType) runtime.lookupType(parameters.get(index), (HotSpotResolvedObjectType) accessingClass, true);
             parameterTypes[index] = type;
         }
         return type;
@@ -172,10 +173,10 @@
         if (accessingClass == null) {
             // Caller doesn't care about resolution context so return an unresolved
             // or primitive type (primitive type resolution is context free)
-            return getUnresolvedOrPrimitiveType(returnType);
+            return getUnresolvedOrPrimitiveType(runtime, returnType);
         }
         if (!checkValidCache(returnTypeCache, accessingClass)) {
-            returnTypeCache = (ResolvedJavaType) runtime().lookupType(returnType, (HotSpotResolvedObjectTypeImpl) accessingClass, true);
+            returnTypeCache = (ResolvedJavaType) runtime.lookupType(returnType, (HotSpotResolvedObjectType) accessingClass, true);
         }
         return returnTypeCache;
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotUnresolvedJavaType.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotUnresolvedJavaType.java	Wed Nov 26 20:18:03 2014 +0100
@@ -22,9 +22,8 @@
  */
 package com.oracle.graal.hotspot.meta;
 
-import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*;
-
 import com.oracle.graal.api.meta.*;
+import com.oracle.graal.hotspot.*;
 
 /**
  * Implementation of {@link JavaType} for unresolved HotSpot classes.
@@ -32,28 +31,30 @@
 public class HotSpotUnresolvedJavaType extends HotSpotJavaType {
 
     private static final long serialVersionUID = -2320936267633521314L;
+    private final HotSpotGraalRuntimeProvider runtime;
 
-    public HotSpotUnresolvedJavaType(String name) {
+    public HotSpotUnresolvedJavaType(String name, HotSpotGraalRuntimeProvider runtime) {
         super(name);
         assert name.charAt(0) == '[' || name.charAt(name.length() - 1) == ';' : name;
+        this.runtime = runtime;
     }
 
     /**
      * Creates an unresolved type for a valid {@link JavaType#getName() type name}.
      */
-    public static HotSpotUnresolvedJavaType create(String name) {
-        return new HotSpotUnresolvedJavaType(name);
+    public static HotSpotUnresolvedJavaType create(HotSpotGraalRuntimeProvider runtime, String name) {
+        return new HotSpotUnresolvedJavaType(name, runtime);
     }
 
     @Override
     public JavaType getComponentType() {
         assert getName().charAt(0) == '[' : "no array class" + getName();
-        return new HotSpotUnresolvedJavaType(getName().substring(1));
+        return new HotSpotUnresolvedJavaType(getName().substring(1), runtime);
     }
 
     @Override
     public JavaType getArrayClass() {
-        return new HotSpotUnresolvedJavaType('[' + getName());
+        return new HotSpotUnresolvedJavaType('[' + getName(), runtime);
     }
 
     @Override
@@ -85,6 +86,6 @@
 
     @Override
     public ResolvedJavaType resolve(ResolvedJavaType accessingClass) {
-        return (ResolvedJavaType) runtime().lookupType(getName(), (HotSpotResolvedObjectTypeImpl) accessingClass, true);
+        return (ResolvedJavaType) runtime.lookupType(getName(), (HotSpotResolvedObjectType) accessingClass, true);
     }
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java	Wed Nov 26 20:12:22 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java	Wed Nov 26 20:18:03 2014 +0100
@@ -52,6 +52,8 @@
  */
 public class ForeignCallStub extends Stub {
 
+    private final HotSpotGraalRuntimeProvider runtime;
+
     /**
      * The target of the call.
      */
@@ -75,10 +77,11 @@
      *            be re-executed.
      * @param killedLocations the memory locations killed by the stub call
      */
-    public ForeignCallStub(HotSpotProviders providers, long address, ForeignCallDescriptor descriptor, boolean prependThread, Transition transition, boolean reexecutable,
-                    LocationIdentity... killedLocations) {
+    public ForeignCallStub(HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers, long address, ForeignCallDescriptor descriptor, boolean prependThread, Transition transition,
+                    boolean reexecutable, LocationIdentity... killedLocations) {
         super(providers, HotSpotForeignCallLinkageImpl.create(providers.getMetaAccess(), providers.getCodeCache(), providers.getForeignCalls(), descriptor, 0L, PRESERVES_REGISTERS, JavaCall,
                         JavaCallee, transition, reexecutable, killedLocations));
+        this.runtime = runtime;
         this.prependThread = prependThread;
         Class<?>[] targetParameterTypes = createTargetParameters(descriptor);
         ForeignCallDescriptor targetSig = new ForeignCallDescriptor(descriptor.getName() + ":C", descriptor.getResultType(), targetParameterTypes);
@@ -121,7 +124,7 @@
                 for (int i = 0; i < arguments.length; i++) {
                     parameters[i] = metaAccess.lookupJavaType(arguments[i]);
                 }
-                return new HotSpotSignature(metaAccess.lookupJavaType(d.getResultType()), parameters);
+                return new HotSpotSignature(runtime, metaAccess.lookupJavaType(d.getResultType()), parameters);
             }
 
             public String getName() {