# HG changeset patch # User Doug Simon # Date 1443557021 -7200 # Node ID bf744134536237ed1e4e596237e35b8fc00505e0 # Parent 4995b94aaed6cade8b2f39997b7247acc6c5551d added HotSpotStackIntrospection and made CompilerToVM.getNextStackFrame package-private diff -r 4995b94aaed6 -r bf7441345362 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java Tue Sep 29 21:37:35 2015 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java Tue Sep 29 22:03:41 2015 +0200 @@ -27,7 +27,6 @@ import jdk.internal.jvmci.code.CompilationResult; import jdk.internal.jvmci.code.RegisterConfig; import jdk.internal.jvmci.code.TargetDescription; -import jdk.internal.jvmci.code.stack.StackIntrospection; import jdk.internal.jvmci.common.JVMCIError; import jdk.internal.jvmci.meta.ConstantReflectionProvider; import jdk.internal.jvmci.meta.MetaAccessProvider; @@ -132,8 +131,6 @@ public abstract CompilationResultBuilder newCompilationResultBuilder(LIRGenerationResult lirGenResult, FrameMap frameMap, CompilationResult compilationResult, CompilationResultBuilderFactory factory); - public abstract StackIntrospection getStackIntrospection(); - /** * Emits the code for a given graph. * diff -r 4995b94aaed6 -r bf7441345362 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java Tue Sep 29 21:37:35 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java Tue Sep 29 22:03:41 2015 +0200 @@ -34,7 +34,6 @@ import jdk.internal.jvmci.code.RegisterSaveLayout; import jdk.internal.jvmci.code.StackSlot; import jdk.internal.jvmci.code.ValueUtil; -import jdk.internal.jvmci.code.stack.StackIntrospection; import jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntime; import jdk.internal.jvmci.hotspot.HotSpotVMConfig; import jdk.internal.jvmci.meta.Value; @@ -248,11 +247,6 @@ } @Override - public StackIntrospection getStackIntrospection() { - return runtime; - } - - @Override public HotSpotProviders getProviders() { return (HotSpotProviders) super.getProviders(); } diff -r 4995b94aaed6 -r bf7441345362 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 Tue Sep 29 21:37:35 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Sep 29 22:03:41 2015 +0200 @@ -22,7 +22,6 @@ */ package com.oracle.graal.hotspot; -import static com.oracle.graal.compiler.common.GraalOptions.HotSpotPrintInlining; import static com.oracle.graal.debug.GraalDebugConfig.DebugValueSummary; import static com.oracle.graal.debug.GraalDebugConfig.Dump; import static com.oracle.graal.debug.GraalDebugConfig.Log; @@ -38,22 +37,19 @@ import java.util.Map; import jdk.internal.jvmci.code.Architecture; -import jdk.internal.jvmci.code.stack.InspectedFrameVisitor; import jdk.internal.jvmci.code.stack.StackIntrospection; import jdk.internal.jvmci.common.JVMCIError; -import jdk.internal.jvmci.hotspot.CompilerToVM; import jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntime; import jdk.internal.jvmci.hotspot.HotSpotProxified; -import jdk.internal.jvmci.hotspot.HotSpotStackFrameReference; import jdk.internal.jvmci.hotspot.HotSpotVMConfig; import jdk.internal.jvmci.inittimer.InitTimer; import jdk.internal.jvmci.meta.JavaKind; -import jdk.internal.jvmci.meta.ResolvedJavaMethod; import jdk.internal.jvmci.runtime.JVMCIBackend; import com.oracle.graal.api.collections.CollectionsProvider; import com.oracle.graal.api.replacements.SnippetReflectionProvider; import com.oracle.graal.api.runtime.GraalRuntime; +import com.oracle.graal.compiler.common.GraalOptions; import com.oracle.graal.compiler.target.Backend; import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.DebugEnvironment; @@ -97,8 +93,8 @@ CompileTheWorldOptions.overrideWithNativeOptions(config); // Only set HotSpotPrintInlining if it still has its default value (false). - if (HotSpotPrintInlining.getValue() == false) { - HotSpotPrintInlining.setValue(config.printInlining); + if (GraalOptions.HotSpotPrintInlining.getValue() == false) { + GraalOptions.HotSpotPrintInlining.setValue(config.printInlining); } CompilerConfiguration compilerConfiguration = compilerFactory.createCompilerConfiguration(); @@ -222,20 +218,6 @@ return Collections.unmodifiableMap(backends); } - @Override - public T iterateFrames(ResolvedJavaMethod[] initialMethods, ResolvedJavaMethod[] matchingMethods, int initialSkip, InspectedFrameVisitor visitor) { - CompilerToVM compilerToVM = runtime().getCompilerToVM(); - HotSpotStackFrameReference current = compilerToVM.getNextStackFrame(null, initialMethods, initialSkip); - while (current != null) { - T result = visitor.visitFrame(current); - if (result != null) { - return result; - } - current = compilerToVM.getNextStackFrame(current, matchingMethods, 0); - } - return null; - } - private long runtimeStartTime; /** diff -r 4995b94aaed6 -r bf7441345362 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntimeProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntimeProvider.java Tue Sep 29 21:37:35 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntimeProvider.java Tue Sep 29 22:03:41 2015 +0200 @@ -23,7 +23,6 @@ package com.oracle.graal.hotspot; import jdk.internal.jvmci.code.TargetDescription; -import jdk.internal.jvmci.code.stack.StackIntrospection; import com.oracle.graal.api.runtime.GraalRuntime; import com.oracle.graal.hotspot.meta.HotSpotProviders; @@ -34,7 +33,7 @@ /** * Configuration information for the HotSpot Graal runtime. */ -public interface HotSpotGraalRuntimeProvider extends GraalRuntime, RuntimeProvider, StackIntrospection { +public interface HotSpotGraalRuntimeProvider extends GraalRuntime, RuntimeProvider { default TargetDescription getTarget() { return getHostBackend().getTarget(); diff -r 4995b94aaed6 -r bf7441345362 graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java --- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java Tue Sep 29 21:37:35 2015 +0200 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java Tue Sep 29 22:03:41 2015 +0200 @@ -53,8 +53,10 @@ import jdk.internal.jvmci.code.CallingConvention.Type; import jdk.internal.jvmci.code.CodeCacheProvider; import jdk.internal.jvmci.code.CompilationResult; +import jdk.internal.jvmci.code.stack.StackIntrospection; import jdk.internal.jvmci.common.JVMCIError; import jdk.internal.jvmci.hotspot.HotSpotCodeCacheProvider; +import jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntime; import jdk.internal.jvmci.hotspot.HotSpotResolvedJavaMethod; import jdk.internal.jvmci.hotspot.HotSpotSpeculationLog; import jdk.internal.jvmci.hotspot.HotSpotVMConfig; @@ -119,6 +121,7 @@ private Map> compilations = newIdentityMap(); private final ExecutorService compileQueue; + private StackIntrospection stackIntrospection; private final Map callTargets = Collections.synchronizedMap(new WeakHashMap()); @@ -160,6 +163,14 @@ } @Override + protected StackIntrospection getStackIntrospection() { + if (stackIntrospection == null) { + stackIntrospection = HotSpotJVMCIRuntime.runtime().getHostJVMCIBackend().getStackIntrospection(); + } + return stackIntrospection; + } + + @Override public TruffleCompiler getTruffleCompiler() { if (truffleCompiler == null) { truffleCompiler = DefaultTruffleCompiler.create(); diff -r 4995b94aaed6 -r bf7441345362 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java Tue Sep 29 21:37:35 2015 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java Tue Sep 29 22:03:41 2015 +0200 @@ -39,7 +39,6 @@ import jdk.internal.jvmci.meta.ResolvedJavaMethod; import jdk.internal.jvmci.service.Services; -import com.oracle.graal.api.runtime.Graal; import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.debug.TTY; @@ -76,7 +75,6 @@ private ArrayList includes; private ArrayList excludes; - private StackIntrospection stackIntrospection; protected ResolvedJavaMethod[] callNodeMethod; protected ResolvedJavaMethod[] callTargetMethod; protected ResolvedJavaMethod[] anyFrameMethod; @@ -202,7 +200,7 @@ @TruffleBoundary @Override public T iterateFrames(FrameInstanceVisitor visitor) { - initStackIntrospection(); + StackIntrospection stackIntrospection = getStackIntrospection(); InspectedFrameVisitor inspectedFrameVisitor = new InspectedFrameVisitor() { private boolean skipNext = false; @@ -227,11 +225,7 @@ return stackIntrospection.iterateFrames(anyFrameMethod, anyFrameMethod, 1, inspectedFrameVisitor); } - private void initStackIntrospection() { - if (stackIntrospection == null) { - stackIntrospection = Graal.getRequiredCapability(StackIntrospection.class); - } - } + protected abstract StackIntrospection getStackIntrospection(); @Override public FrameInstance getCallerFrame() { @@ -241,9 +235,7 @@ @TruffleBoundary @Override public FrameInstance getCurrentFrame() { - initStackIntrospection(); - - return stackIntrospection.iterateFrames(callTargetMethod, callTargetMethod, 0, frame -> new GraalFrameInstance.CallTargetFrame(frame, true)); + return getStackIntrospection().iterateFrames(callTargetMethod, callTargetMethod, 0, frame -> new GraalFrameInstance.CallTargetFrame(frame, true)); } public T getCapability(Class capability) { diff -r 4995b94aaed6 -r bf7441345362 mx.graal/suite.py --- a/mx.graal/suite.py Tue Sep 29 21:37:35 2015 +0200 +++ b/mx.graal/suite.py Tue Sep 29 22:03:41 2015 +0200 @@ -6,7 +6,7 @@ "suites": [ { "name" : "jvmci", - "version" : "02d95720c45505372fa95555f91c6acfef3e44dc", + "version" : "353eb2b44df8edce742c16fc28abc68aefb04e8b", "urls" : [ {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/graal-jvmci-8", "kind" : "hg"}, {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},