changeset 22261:b73205fe7cf3

Truffle/Instrumentation: remove the abstract method TruffleLanguage.getDefaultASTProber() around issues of timing in the Engine and language startup sequences. TruffleLanguage implementations requiring any Instrumentation services are now required to register (at least) the languages "default" ASTProber for configuring tool behavior; this must be done before any RootNotes are created.
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Mon, 28 Sep 2015 20:11:19 -0700
parents 3986598b6aa0
children 0df2f06977fa
files truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestingLanguage.java truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/TestingLanguage.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/AdvancedInstrumentTest.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTest.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestNodes.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestingLanguage.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/InitializationTest.java truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/Accessor.java truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrumenter.java truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java truffle/com.oracle.truffle.tools.test/src/com/oracle/truffle/tools/test/ToolTestUtil.java
diffstat 15 files changed, 52 insertions(+), 129 deletions(-) [+]
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestingLanguage.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestingLanguage.java	Mon Sep 28 20:11:19 2015 -0700
@@ -27,7 +27,6 @@
 import com.oracle.truffle.api.CallTarget;
 import com.oracle.truffle.api.TruffleLanguage;
 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.Visualizer;
@@ -78,11 +77,6 @@
     }
 
     @Override
-    protected ASTProber getDefaultASTProber() {
-        return null;
-    }
-
-    @Override
     protected Object evalInContext(Source source, Node node, MaterializedFrame mFrame) throws IOException {
         return null;
     }
--- a/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java	Mon Sep 28 20:11:19 2015 -0700
@@ -28,7 +28,6 @@
 import com.oracle.truffle.api.TruffleLanguage;
 import com.oracle.truffle.api.dsl.test.ExpectError;
 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.Visualizer;
@@ -96,11 +95,6 @@
         }
 
         @Override
-        protected ASTProber getDefaultASTProber() {
-            return null;
-        }
-
-        @Override
         protected Object evalInContext(Source source, Node node, MaterializedFrame mFrame) throws IOException {
             return null;
         }
@@ -160,11 +154,6 @@
         }
 
         @Override
-        protected ASTProber getDefaultASTProber() {
-            return null;
-        }
-
-        @Override
         protected Object evalInContext(Source source, Node node, MaterializedFrame mFrame) throws IOException {
             return null;
         }
@@ -220,11 +209,6 @@
         }
 
         @Override
-        protected ASTProber getDefaultASTProber() {
-            return null;
-        }
-
-        @Override
         protected Object evalInContext(Source source, Node node, MaterializedFrame mFrame) throws IOException {
             return null;
         }
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/TestingLanguage.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/TestingLanguage.java	Mon Sep 28 20:11:19 2015 -0700
@@ -27,7 +27,6 @@
 import com.oracle.truffle.api.CallTarget;
 import com.oracle.truffle.api.TruffleLanguage;
 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.Visualizer;
@@ -67,11 +66,6 @@
     }
 
     @Override
-    protected ASTProber getDefaultASTProber() {
-        return null;
-    }
-
-    @Override
     protected boolean isInstrumentable(Node node) {
         return false;
     }
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/AdvancedInstrumentTest.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/AdvancedInstrumentTest.java	Mon Sep 28 20:11:19 2015 -0700
@@ -56,6 +56,8 @@
         final Field field = TruffleVM.class.getDeclaredField("instrumenter");
         field.setAccessible(true);
         final Instrumenter instrumenter = (Instrumenter) field.get(vm);
+
+        instrumenter.registerASTProber(new InstrumentationTestingLanguage.TestASTProber());
         final Source source = Source.fromText("testAdvancedInstrumentListener text", "testAdvancedInstrumentListener").withMimeType("text/x-instTest");
 
         final Probe[] addNodeProbe = new Probe[1];
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTest.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTest.java	Mon Sep 28 20:11:19 2015 -0700
@@ -33,9 +33,9 @@
 
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.instrument.ASTProber;
-import com.oracle.truffle.api.instrument.ProbeInstrument;
 import com.oracle.truffle.api.instrument.Instrumenter;
 import com.oracle.truffle.api.instrument.Probe;
+import com.oracle.truffle.api.instrument.ProbeInstrument;
 import com.oracle.truffle.api.instrument.SimpleInstrumentListener;
 import com.oracle.truffle.api.instrument.StandardInstrumentListener;
 import com.oracle.truffle.api.instrument.SyntaxTag;
@@ -68,6 +68,7 @@
         final Field field = TruffleVM.class.getDeclaredField("instrumenter");
         field.setAccessible(true);
         final Instrumenter instrumenter = (Instrumenter) field.get(vm);
+        instrumenter.registerASTProber(new TestASTProber(instrumenter));
         final Source source = Source.fromText("testProbing text", "testProbing").withMimeType("text/x-instTest");
 
         final Probe[] probes = new Probe[3];
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestNodes.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestNodes.java	Mon Sep 28 20:11:19 2015 -0700
@@ -22,8 +22,6 @@
  */
 package com.oracle.truffle.api.test.instrument;
 
-import java.lang.reflect.Field;
-
 import com.oracle.truffle.api.CallTarget;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.instrument.AdvancedInstrumentRoot;
@@ -36,21 +34,12 @@
 import com.oracle.truffle.api.nodes.NodeCost;
 import com.oracle.truffle.api.nodes.NodeInfo;
 import com.oracle.truffle.api.nodes.RootNode;
-import com.oracle.truffle.api.vm.TruffleVM;
 
 /**
  * Tests instrumentation where a client can attach a node that gets attached into the AST.
  */
 class InstrumentationTestNodes {
 
-    static Instrumenter createInstrumenter() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
-        TruffleVM vm = TruffleVM.newVM().build();
-        final Field field = TruffleVM.class.getDeclaredField("instrumenter");
-        field.setAccessible(true);
-        final Instrumenter instrument = (Instrumenter) field.get(vm);
-        return instrument;
-    }
-
     abstract static class TestLanguageNode extends Node {
         public abstract Object execute(VirtualFrame vFrame);
 
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestingLanguage.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestingLanguage.java	Mon Sep 28 20:11:19 2015 -0700
@@ -74,8 +74,6 @@
         }
     }
 
-    private final ASTProber prober = new TestASTProber();
-
     private InstrumentationTestingLanguage() {
     }
 
@@ -111,11 +109,6 @@
     }
 
     @Override
-    protected ASTProber getDefaultASTProber() {
-        return prober;
-    }
-
-    @Override
     protected boolean isInstrumentable(Node node) {
         return node instanceof TestAdditionNode || node instanceof TestValueNode;
     }
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java	Mon Sep 28 20:11:19 2015 -0700
@@ -43,7 +43,6 @@
 import com.oracle.truffle.api.TruffleLanguage;
 import com.oracle.truffle.api.TruffleLanguage.Env;
 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.Visualizer;
@@ -194,11 +193,6 @@
         }
 
         @Override
-        protected ASTProber getDefaultASTProber() {
-            return null;
-        }
-
-        @Override
         protected Object evalInContext(Source source, Node node, MaterializedFrame mFrame) throws IOException {
             return null;
         }
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/InitializationTest.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/InitializationTest.java	Mon Sep 28 20:11:19 2015 -0700
@@ -28,6 +28,7 @@
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
+import java.lang.reflect.Field;
 
 import org.junit.Test;
 
@@ -68,8 +69,9 @@
  * Debugger instance simulates.
  */
 public class InitializationTest {
+
     @Test
-    public void accessProbeForAbstractLanguage() throws IOException {
+    public void accessProbeForAbstractLanguage() throws IOException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
         final Debugger[] arr = {null};
         TruffleVM vm = TruffleVM.newVM().onEvent(new EventConsumer<ExecutionEvent>(ExecutionEvent.class) {
             @Override
@@ -78,6 +80,25 @@
             }
         }).build();
 
+        final Field field = TruffleVM.class.getDeclaredField("instrumenter");
+        field.setAccessible(true);
+        final Instrumenter instrumenter = (Instrumenter) field.get(vm);
+        instrumenter.registerASTProber(new ASTProber() {
+
+            public void probeAST(final Instrumenter inst, RootNode startNode) {
+                startNode.accept(new NodeVisitor() {
+
+                    public boolean visit(Node node) {
+
+                        if (node instanceof ANode) {
+                            inst.probe(node).tagAs(StandardSyntaxTag.STATEMENT, null);
+                        }
+                        return true;
+                    }
+                });
+            }
+        });
+
         Source source = Source.fromText("accessProbeForAbstractLanguage text", "accessProbeForAbstractLanguage").withMimeType("application/x-abstrlang");
 
         vm.eval(source);
@@ -167,22 +188,6 @@
     public static final class TestLanguage extends AbstractLanguage {
         public static final TestLanguage INSTANCE = new TestLanguage();
 
-        private final ASTProber prober = new ASTProber() {
-
-            public void probeAST(final Instrumenter instrumenter, RootNode startNode) {
-                startNode.accept(new NodeVisitor() {
-
-                    public boolean visit(Node node) {
-
-                        if (node instanceof ANode) {
-                            instrumenter.probe(node).tagAs(StandardSyntaxTag.STATEMENT, null);
-                        }
-                        return true;
-                    }
-                });
-            }
-        };
-
         @Override
         protected Object createContext(Env env) {
             assertNull("Not defined symbol", env.importSymbol("unknown"));
@@ -233,11 +238,6 @@
         protected WrapperNode createWrapperNode(Node node) {
             return node instanceof ANode ? new ANodeWrapper((ANode) node) : null;
         }
-
-        @Override
-        protected ASTProber getDefaultASTProber() {
-            return prober;
-        }
     }
 
     private static final class InstrumentOKException extends RuntimeException {
--- a/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java	Mon Sep 28 20:11:19 2015 -0700
@@ -59,7 +59,6 @@
 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.interop.TruffleObject;
@@ -796,10 +795,6 @@
         TruffleLanguage.Env getEnv(boolean create) {
             if (env == null && create) {
                 final TruffleLanguage<?> impl = info.getImpl(true);
-                ASTProber prober = SPI.getDefaultASTProber(impl);
-                if (prober != null) {
-                    instrumenter.registerASTProber(prober);
-                }
                 env = SPI.attachEnv(TruffleVM.this, impl, out, err, in, TruffleVM.this.instrumenter);
             }
             return env;
@@ -907,11 +902,6 @@
         }
 
         @Override
-        protected ASTProber getDefaultASTProber(TruffleLanguage impl) {
-            return super.getDefaultASTProber(impl);
-        }
-
-        @Override
         protected Instrumenter getInstrumenter(Object obj) {
             final TruffleVM vm = (TruffleVM) obj;
             return vm.instrumenter;
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java	Mon Sep 28 20:11:19 2015 -0700
@@ -39,6 +39,7 @@
 import java.util.Map;
 import java.util.WeakHashMap;
 
+import com.oracle.truffle.api.debug.Debugger;
 import com.oracle.truffle.api.frame.MaterializedFrame;
 import com.oracle.truffle.api.impl.Accessor;
 import com.oracle.truffle.api.impl.FindContextNode;
@@ -47,6 +48,7 @@
 import com.oracle.truffle.api.instrument.AdvancedInstrumentRoot;
 import com.oracle.truffle.api.instrument.AdvancedInstrumentRootFactory;
 import com.oracle.truffle.api.instrument.Instrumenter;
+import com.oracle.truffle.api.instrument.SyntaxTag;
 import com.oracle.truffle.api.instrument.Visualizer;
 import com.oracle.truffle.api.instrument.WrapperNode;
 import com.oracle.truffle.api.nodes.Node;
@@ -59,6 +61,13 @@
  * virtual machine} - all they will need to do is to include your JAR into their application and all
  * the Truffle goodies (multi-language support, multitenant hosting, debugging, etc.) will be made
  * available to them.
+ * <p>
+ * The use of {@linkplain Instrumenter Instrument-based services} requires that the language
+ * {@linkplain Instrumenter#registerASTProber(com.oracle.truffle.api.instrument.ASTProber) register}
+ * an instance of {@link ASTProber} suitable for the language implementation that can be applied to
+ * "mark up" each newly created AST with {@link SyntaxTag "tags"} that identify standard syntactic
+ * constructs in order to configure tool behavior. See also {@linkplain #createContext(Env)
+ * createContext(Env)}.
  *
  * @param <C> internal state of the language associated with every thread that is executing program
  *            {@link #parse(com.oracle.truffle.api.source.Source, com.oracle.truffle.api.nodes.Node, java.lang.String...)
@@ -119,6 +128,15 @@
      * reference to here-in provided <code>env</code> and adjust itself according to parameters
      * provided by the <code>env</code> object.
      *
+     * If it is expected that any {@linkplain Instrumenter Instrumentation Services} or tools that
+     * depend on those services (e.g. the {@link Debugger}, then part of the preparation in the new
+     * context is to
+     * {@linkplain Instrumenter#registerASTProber(com.oracle.truffle.api.instrument.ASTProber)
+     * register} a "default" {@link ASTProber} for the language implementation. Instrumentation
+     * requires that this be available to "mark up" each newly created AST with
+     * {@linkplain SyntaxTag "tags"} that identify standard syntactic constructs in order to
+     * configure tool behavior.
+     *
      * @param env the environment the language is supposed to operate in
      * @return internal data of the language in given environment
      */
@@ -219,11 +237,6 @@
     protected abstract WrapperNode createWrapperNode(Node node);
 
     /**
-     * Gets the current specification for AST instrumentation for the language.
-     */
-    protected abstract ASTProber getDefaultASTProber();
-
-    /**
      * Runs source code in a halted execution context, or at top level.
      *
      * @param source the code to run
@@ -466,12 +479,6 @@
         protected WrapperNode createWrapperNode(Node node, TruffleLanguage language) {
             return language.createWrapperNode(node);
         }
-
-        @Override
-        protected ASTProber getDefaultASTProber(TruffleLanguage language) {
-            return language.getDefaultASTProber();
-        }
-
     }
 
 }
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/Accessor.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/Accessor.java	Mon Sep 28 20:11:19 2015 -0700
@@ -99,11 +99,6 @@
             }
 
             @Override
-            protected ASTProber getDefaultASTProber() {
-                return null;
-            }
-
-            @Override
             protected Visualizer getVisualizer() {
                 return null;
             }
@@ -207,13 +202,6 @@
         return API.createWrapperNode(node, language);
     }
 
-    /**
-     * Provided by each {@linkplain TruffleLanguage language implementation}.
-     */
-    protected ASTProber getDefaultASTProber(TruffleLanguage language) {
-        return API.getDefaultASTProber(language);
-    }
-
     protected AdvancedInstrumentRootFactory createAdvancedInstrumentRootFactory(Object vm, Class<? extends TruffleLanguage> languageClass, String expr, AdvancedInstrumentResultListener resultListener)
                     throws IOException {
         return API.createAdvancedInstrumentRootFactory(vm, languageClass, expr, resultListener);
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrumenter.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrumenter.java	Mon Sep 28 20:11:19 2015 -0700
@@ -120,14 +120,14 @@
      * <p>
      * Tools share a common <em>life cycle</em>:
      * <ul>
-     * <li>A newly created tool is inert until {@linkplain Instrumenter#install(Tool) installed}.</li>
-     * <li>An installed tool becomes <em>enabled</em> and immediately begins installing
-     * {@linkplain ProbeInstrument instrumentation} on ASTs and collecting execution data from them.
-     * </li>
+     * <li>A newly created tool is "UNINSTALLED"; it does nothing until
+     * {@linkplain Instrumenter#install(Tool) installed} .</li>
+     * <li>An installed tool becomes "ENABLED" and immediately begins attaching
+     * {@linkplain ProbeInstrument instrumentation} to ASTs and collecting execution data.</li>
      * <li>A tool may only be installed once.</li>
-     * <li>It should be possible to install multiple instances of a tool, possibly (but not
-     * necessarily) configured differently with respect to what data is being collected.</li>
-     * <li>Once installed, a tool can be {@linkplain #setEnabled(boolean) enabled and disabled}
+     * <li>It is possible to install multiple instances of a tool, possibly (but not necessarily)
+     * configured differently with respect to what data is being collected.</li>
+     * <li>Once installed, a tool can be {@linkplain #setEnabled(boolean) "ENABLED" and "DISABLED"}
      * arbitrarily.</li>
      * <li>A disabled tool:
      * <ul>
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java	Mon Sep 28 20:11:19 2015 -0700
@@ -56,7 +56,6 @@
 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.Visualizer;
@@ -202,7 +201,6 @@
     public static final String builtinKind = "SL builtin";
     private static List<NodeFactory<? extends SLBuiltinNode>> builtins = Collections.emptyList();
     private static Visualizer visualizer = new SLDefaultVisualizer();
-    private ASTProber astProber = new SLStandardASTProber();
 
     private SLLanguage() {
     }
@@ -217,6 +215,7 @@
         for (NodeFactory<? extends SLBuiltinNode> builtin : builtins) {
             context.installBuiltin(builtin, true);
         }
+        env.instrumenter().registerASTProber(new SLStandardASTProber());
         return context;
     }
 
@@ -506,11 +505,6 @@
     }
 
     @Override
-    protected ASTProber getDefaultASTProber() {
-        return astProber;
-    }
-
-    @Override
     protected Object evalInContext(Source source, Node node, MaterializedFrame mFrame) throws IOException {
         throw new IllegalStateException("evalInContext not supported in this language");
     }
--- a/truffle/com.oracle.truffle.tools.test/src/com/oracle/truffle/tools/test/ToolTestUtil.java	Mon Sep 28 12:38:23 2015 -0700
+++ b/truffle/com.oracle.truffle.tools.test/src/com/oracle/truffle/tools/test/ToolTestUtil.java	Mon Sep 28 20:11:19 2015 -0700
@@ -86,8 +86,6 @@
 
         public static final ToolTestLang INSTANCE = new ToolTestLang();
 
-        private final ASTProber prober = new TestASTProber();
-
         private ToolTestLang() {
         }
 
@@ -123,11 +121,6 @@
         }
 
         @Override
-        protected ASTProber getDefaultASTProber() {
-            return prober;
-        }
-
-        @Override
         protected boolean isInstrumentable(Node node) {
             return node instanceof TestAdditionNode || node instanceof TestValueNode;
         }