# HG changeset patch # User Michael Van De Vanter # Date 1442343425 25200 # Node ID d3bdaa91bc8249c00ba9a415a25b557002e94971 # Parent 3aad794eec0e7738819a235b27f66999a2c50117 Truffle/Instrumentation: method signature on TruffleLanguage for getting each language's "default" ASTProber diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestingLanguage.java --- a/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestingLanguage.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestingLanguage.java Tue Sep 15 11:57:05 2015 -0700 @@ -22,6 +22,8 @@ */ package com.oracle.truffle.api.dsl.test; +import java.io.IOException; + import com.oracle.truffle.api.CallTarget; import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.debug.DebugSupportProvider; @@ -34,10 +36,6 @@ import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.source.Source; -import java.io.IOException; -import java.util.Collections; -import java.util.List; - public final class TestingLanguage extends TruffleLanguage { public static final TestingLanguage INSTANCE = new TestingLanguage(); @@ -71,8 +69,8 @@ } @Override - protected List getASTProbers() { - return Collections.emptyList(); + protected ASTProber getDefaultASTProber() { + return null; } @SuppressWarnings("deprecation") diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java --- a/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java Tue Sep 15 11:57:05 2015 -0700 @@ -23,8 +23,6 @@ package com.oracle.truffle.api.dsl.test.processor; import java.io.IOException; -import java.util.Collections; -import java.util.List; import com.oracle.truffle.api.CallTarget; import com.oracle.truffle.api.TruffleLanguage; @@ -89,8 +87,8 @@ } @Override - protected List getASTProbers() { - return Collections.emptyList(); + protected ASTProber getDefaultASTProber() { + return null; } @Override @@ -161,8 +159,8 @@ } @Override - protected List getASTProbers() { - return Collections.emptyList(); + protected ASTProber getDefaultASTProber() { + return null; } @Override @@ -229,8 +227,8 @@ } @Override - protected List getASTProbers() { - return Collections.emptyList(); + protected ASTProber getDefaultASTProber() { + return null; } @Override diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/TestingLanguage.java --- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/TestingLanguage.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/TestingLanguage.java Tue Sep 15 11:57:05 2015 -0700 @@ -22,6 +22,8 @@ */ package com.oracle.truffle.api.test; +import java.io.IOException; + import com.oracle.truffle.api.CallTarget; import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.debug.DebugSupportProvider; @@ -34,10 +36,6 @@ import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.source.Source; -import java.io.IOException; -import java.util.Collections; -import java.util.List; - public final class TestingLanguage extends TruffleLanguage { public static final TestingLanguage INSTANCE = new TestingLanguage(); @@ -70,8 +68,8 @@ } @Override - protected List getASTProbers() { - return Collections.emptyList(); + protected ASTProber getDefaultASTProber() { + return null; } @SuppressWarnings("deprecation") diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java --- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java Tue Sep 15 11:57:05 2015 -0700 @@ -28,10 +28,8 @@ import java.io.IOException; import java.io.Reader; -import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Properties; import java.util.concurrent.Executors; @@ -187,8 +185,8 @@ } @Override - protected List getASTProbers() { - return Collections.emptyList(); + protected ASTProber getDefaultASTProber() { + return null; } @Override diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/InitializationTest.java --- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/InitializationTest.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/InitializationTest.java Tue Sep 15 11:57:05 2015 -0700 @@ -28,8 +28,6 @@ import static org.junit.Assert.fail; import java.io.IOException; -import java.util.Arrays; -import java.util.List; import org.junit.Test; @@ -256,8 +254,8 @@ } @Override - protected List getASTProbers() { - return Arrays.asList(prober); + protected ASTProber getDefaultASTProber() { + return prober; } @SuppressWarnings("deprecation") diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java --- a/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java Tue Sep 15 11:57:05 2015 -0700 @@ -24,23 +24,51 @@ */ package com.oracle.truffle.api.vm; -import com.oracle.truffle.api.*; +import java.io.Closeable; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.InterruptedIOException; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.Writer; +import java.net.URI; +import java.net.URL; +import java.net.URLConnection; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Executor; +import java.util.logging.Level; +import java.util.logging.Logger; + +import com.oracle.truffle.api.CallTarget; +import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.TruffleLanguage.Env; import com.oracle.truffle.api.TruffleLanguage.Registration; -import com.oracle.truffle.api.debug.*; -import com.oracle.truffle.api.impl.*; -import com.oracle.truffle.api.instrument.*; +import com.oracle.truffle.api.debug.DebugSupportProvider; +import com.oracle.truffle.api.debug.Debugger; +import com.oracle.truffle.api.debug.ExecutionEvent; +import com.oracle.truffle.api.debug.SuspendedEvent; +import com.oracle.truffle.api.impl.Accessor; +import com.oracle.truffle.api.instrument.ASTProber; +import com.oracle.truffle.api.instrument.Instrumenter; +import com.oracle.truffle.api.instrument.Probe; +import com.oracle.truffle.api.instrument.ToolSupportProvider; import com.oracle.truffle.api.interop.TruffleObject; import com.oracle.truffle.api.interop.java.JavaInterop; -import com.oracle.truffle.api.source.*; - -import java.io.*; -import java.net.*; -import java.nio.file.*; -import java.util.*; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.Executor; -import java.util.logging.*; +import com.oracle.truffle.api.source.Source; /** * Virtual machine for Truffle based languages. Term virtual machine is a bit overloaded, @@ -777,9 +805,8 @@ try { impl = LanguageCache.find(n, loader()); Instrumenter inst = TruffleVM.this.instrumenter; - for (ASTProber prober : SPI.getASTProbers(TruffleVM.this, impl.getClass())) { - inst.registerASTProber(prober); - } + final ASTProber prober = SPI.getDefaultASTProber(TruffleVM.this, impl.getClass()); + inst.registerASTProber(prober); env = SPI.attachEnv(TruffleVM.this, impl, out, err, in); } catch (Exception ex) { throw new IllegalStateException("Cannot initialize " + getShortName() + " language with implementation " + n, ex); @@ -907,8 +934,8 @@ } @Override - protected List getASTProbers(Object vm, Class languageClass) { - return super.getASTProbers(vm, languageClass); + protected ASTProber getDefaultASTProber(Object vm, Class languageClass) { + return super.getDefaultASTProber(vm, languageClass); } @Override diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java --- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java Tue Sep 15 11:57:05 2015 -0700 @@ -32,7 +32,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.Collections; -import java.util.List; import java.util.Map; import java.util.WeakHashMap; @@ -209,10 +208,9 @@ protected abstract void enableASTProbing(ASTProber astProber); /** - * Gets the current specification for AST instrumentation for the language; empty if - * none. + * Gets the current specification for AST instrumentation for the language. */ - protected abstract List getASTProbers(); + protected abstract ASTProber getDefaultASTProber(); /** * Runs source code in a halted execution context, or at top level. @@ -428,9 +426,9 @@ } @Override - protected List getASTProbers(Object vm, Class languageClass) { + protected ASTProber getDefaultASTProber(Object vm, Class languageClass) { TruffleLanguage impl = findLanguageImpl(vm, languageClass); - return impl.getASTProbers(); + return impl.getDefaultASTProber(); } @SuppressWarnings("deprecation") diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/Accessor.java --- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/Accessor.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/Accessor.java Tue Sep 15 11:57:05 2015 -0700 @@ -30,8 +30,6 @@ import java.io.Writer; import java.lang.ref.Reference; import java.lang.ref.WeakReference; -import java.util.Collections; -import java.util.List; import com.oracle.truffle.api.Assumption; import com.oracle.truffle.api.CallTarget; @@ -106,8 +104,8 @@ } @Override - protected List getASTProbers() { - return Collections.emptyList(); + protected ASTProber getDefaultASTProber() { + return null; } @Override @@ -212,8 +210,8 @@ throw new UnsupportedOperationException(); } - protected List getASTProbers(Object vm, Class languageClass) { - return API.getASTProbers(vm, languageClass); + protected ASTProber getDefaultASTProber(Object vm, Class languageClass) { + return API.getDefaultASTProber(vm, languageClass); } protected AdvancedInstrumentRootFactory createAdvancedInstrumentRootFactory(Object vm, Class languageClass, String expr, AdvancedInstrumentResultListener resultListener) diff -r 3aad794eec0e -r d3bdaa91bc82 truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java --- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java Mon Sep 14 22:59:51 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java Tue Sep 15 11:57:05 2015 -0700 @@ -40,35 +40,76 @@ */ package com.oracle.truffle.sl; -import com.oracle.truffle.api.*; -import com.oracle.truffle.api.debug.*; -import com.oracle.truffle.api.dsl.*; -import com.oracle.truffle.api.frame.*; -import com.oracle.truffle.api.instrument.*; -import com.oracle.truffle.api.nodes.*; -import com.oracle.truffle.api.source.*; -import com.oracle.truffle.api.vm.*; -import com.oracle.truffle.api.vm.TruffleVM.Symbol; -import com.oracle.truffle.sl.builtins.*; -import com.oracle.truffle.sl.nodes.*; -import com.oracle.truffle.sl.nodes.call.*; -import com.oracle.truffle.sl.nodes.controlflow.*; -import com.oracle.truffle.sl.nodes.expression.*; -import com.oracle.truffle.sl.nodes.instrument.*; -import com.oracle.truffle.sl.nodes.local.*; -import com.oracle.truffle.sl.parser.*; -import com.oracle.truffle.sl.runtime.*; - import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.math.BigInteger; import java.nio.file.Path; -import java.util.ArrayList; import java.util.Collections; import java.util.List; +import com.oracle.truffle.api.CallTarget; +import com.oracle.truffle.api.RootCallTarget; +import com.oracle.truffle.api.Truffle; +import com.oracle.truffle.api.TruffleLanguage; +import com.oracle.truffle.api.debug.DebugSupportProvider; +import com.oracle.truffle.api.dsl.NodeFactory; +import com.oracle.truffle.api.dsl.UnsupportedSpecializationException; +import com.oracle.truffle.api.frame.MaterializedFrame; +import com.oracle.truffle.api.instrument.ASTProber; +import com.oracle.truffle.api.instrument.AdvancedInstrumentResultListener; +import com.oracle.truffle.api.instrument.AdvancedInstrumentRootFactory; +import com.oracle.truffle.api.instrument.ToolSupportProvider; +import com.oracle.truffle.api.instrument.Visualizer; +import com.oracle.truffle.api.nodes.GraphPrintVisitor; +import com.oracle.truffle.api.nodes.Node; +import com.oracle.truffle.api.nodes.NodeInfo; +import com.oracle.truffle.api.nodes.NodeUtil; +import com.oracle.truffle.api.source.Source; +import com.oracle.truffle.api.source.SourceSection; +import com.oracle.truffle.api.vm.TruffleVM; +import com.oracle.truffle.api.vm.TruffleVM.Symbol; +import com.oracle.truffle.sl.builtins.SLBuiltinNode; +import com.oracle.truffle.sl.builtins.SLDefineFunctionBuiltin; +import com.oracle.truffle.sl.builtins.SLNanoTimeBuiltin; +import com.oracle.truffle.sl.builtins.SLPrintlnBuiltin; +import com.oracle.truffle.sl.builtins.SLReadlnBuiltin; +import com.oracle.truffle.sl.nodes.SLRootNode; +import com.oracle.truffle.sl.nodes.SLTypes; +import com.oracle.truffle.sl.nodes.call.SLDispatchNode; +import com.oracle.truffle.sl.nodes.call.SLInvokeNode; +import com.oracle.truffle.sl.nodes.call.SLUndefinedFunctionException; +import com.oracle.truffle.sl.nodes.controlflow.SLBlockNode; +import com.oracle.truffle.sl.nodes.controlflow.SLBreakNode; +import com.oracle.truffle.sl.nodes.controlflow.SLContinueNode; +import com.oracle.truffle.sl.nodes.controlflow.SLIfNode; +import com.oracle.truffle.sl.nodes.controlflow.SLReturnNode; +import com.oracle.truffle.sl.nodes.controlflow.SLWhileNode; +import com.oracle.truffle.sl.nodes.expression.SLAddNode; +import com.oracle.truffle.sl.nodes.expression.SLBigIntegerLiteralNode; +import com.oracle.truffle.sl.nodes.expression.SLDivNode; +import com.oracle.truffle.sl.nodes.expression.SLEqualNode; +import com.oracle.truffle.sl.nodes.expression.SLFunctionLiteralNode; +import com.oracle.truffle.sl.nodes.expression.SLLessOrEqualNode; +import com.oracle.truffle.sl.nodes.expression.SLLessThanNode; +import com.oracle.truffle.sl.nodes.expression.SLLogicalAndNode; +import com.oracle.truffle.sl.nodes.expression.SLLogicalOrNode; +import com.oracle.truffle.sl.nodes.expression.SLMulNode; +import com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode; +import com.oracle.truffle.sl.nodes.expression.SLSubNode; +import com.oracle.truffle.sl.nodes.instrument.SLDefaultVisualizer; +import com.oracle.truffle.sl.nodes.instrument.SLStandardASTProber; +import com.oracle.truffle.sl.nodes.local.SLReadLocalVariableNode; +import com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode; +import com.oracle.truffle.sl.parser.Parser; +import com.oracle.truffle.sl.parser.SLNodeFactory; +import com.oracle.truffle.sl.parser.Scanner; +import com.oracle.truffle.sl.runtime.SLContext; +import com.oracle.truffle.sl.runtime.SLFunction; +import com.oracle.truffle.sl.runtime.SLFunctionRegistry; +import com.oracle.truffle.sl.runtime.SLNull; + /** * SL is a simple language to demonstrate and showcase features of Truffle. The implementation is as * simple and clean as possible in order to help understanding the ideas and concepts of Truffle. @@ -156,11 +197,9 @@ public final class SLLanguage extends TruffleLanguage { private static List> builtins = Collections.emptyList(); private static Visualizer visualizer = new SLDefaultVisualizer(); - private List astProbers; + private ASTProber astProber = new SLStandardASTProber(); private SLLanguage() { - this.astProbers = new ArrayList<>(); - astProbers.add(new SLStandardASTProber()); } public static final SLLanguage INSTANCE = new SLLanguage(); @@ -444,8 +483,8 @@ } @Override - protected List getASTProbers() { - return astProbers; + protected ASTProber getDefaultASTProber() { + return astProber; } @SuppressWarnings("deprecation")