# HG changeset patch # User Doug Simon # Date 1417029483 -3600 # Node ID 21384a8fbb64f6cba0572d3194eed6ae48ddda97 # Parent 064d2fae9821274116f8fdcd075db09c8b834d97 removed static accesses to HotSpotGraalRuntime from some HotSpot meta API classes diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java --- 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); } diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java --- 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); diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java --- 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); diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java --- 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); } /** diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodUnresolved.java --- 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 diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java --- 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; } diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotUnresolvedJavaType.java --- 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); } } diff -r 064d2fae9821 -r 21384a8fbb64 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java --- 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() {