diff truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLStandardASTProber.java @ 22219:1c0f490984d5

Merge with f47b601edbc626dcfe8b3636933b4834c89f7779
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Wed, 16 Sep 2015 15:36:22 -0700
parents dc83cc1f94f2 3aad794eec0e
children ffb52d4126bb
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLStandardASTProber.java	Wed Sep 16 12:27:08 2015 +0200
+++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLStandardASTProber.java	Wed Sep 16 15:36:22 2015 -0700
@@ -40,12 +40,14 @@
  */
 package com.oracle.truffle.sl.nodes.instrument;
 
-import com.oracle.truffle.api.instrument.ASTProber;
-import com.oracle.truffle.api.instrument.InstrumentationNode;
-import com.oracle.truffle.api.instrument.Probe;
 import static com.oracle.truffle.api.instrument.StandardSyntaxTag.ASSIGNMENT;
 import static com.oracle.truffle.api.instrument.StandardSyntaxTag.START_LOOP;
 import static com.oracle.truffle.api.instrument.StandardSyntaxTag.STATEMENT;
+
+import com.oracle.truffle.api.instrument.ASTProber;
+import com.oracle.truffle.api.instrument.InstrumentationNode;
+import com.oracle.truffle.api.instrument.Instrumenter;
+import com.oracle.truffle.api.instrument.Probe;
 import com.oracle.truffle.api.nodes.Node;
 import com.oracle.truffle.api.nodes.NodeVisitor;
 import com.oracle.truffle.sl.nodes.SLExpressionNode;
@@ -57,39 +59,39 @@
  * A visitor which traverses a completely parsed Simple AST (presumed not yet executed) and enables
  * instrumentation at a few standard kinds of nodes.
  */
-public class SLStandardASTProber implements NodeVisitor, ASTProber {
+public class SLStandardASTProber implements ASTProber {
+
+    public void probeAST(final Instrumenter instrumenter, Node startNode) {
+        startNode.accept(new NodeVisitor() {
 
-    /**
-     * {@inheritDoc}
-     * <p>
-     * Instruments and tags all relevant {@link SLStatementNode}s and {@link SLExpressionNode}s.
-     * Currently, only SLStatementNodes that are not SLExpressionNodes are tagged as statements.
-     */
-    public boolean visit(Node node) {
+            /**
+             * Instruments and tags all relevant {@link SLStatementNode}s and
+             * {@link SLExpressionNode}s. Currently, only SLStatementNodes that are not
+             * SLExpressionNodes are tagged as statements.
+             */
+            public boolean visit(Node node) {
 
-        if (!(node instanceof InstrumentationNode) && node instanceof SLStatementNode && node.getParent() != null && node.getSourceSection() != null) {
-            // All SL nodes are instrumentable, but treat expressions specially
+                if (!(node instanceof InstrumentationNode) && node instanceof SLStatementNode && node.getParent() != null && node.getSourceSection() != null) {
+                    // All SL nodes are instrumentable, but treat expressions specially
 
-            if (node instanceof SLExpressionNode) {
-                SLExpressionNode expressionNode = (SLExpressionNode) node;
-                Probe probe = expressionNode.probe();
-                if (node instanceof SLWriteLocalVariableNode) {
-                    probe.tagAs(STATEMENT, null);
-                    probe.tagAs(ASSIGNMENT, null);
+                    if (node instanceof SLExpressionNode) {
+                        SLExpressionNode expressionNode = (SLExpressionNode) node;
+                        final Probe probe = instrumenter.probe(expressionNode);
+                        if (node instanceof SLWriteLocalVariableNode) {
+                            probe.tagAs(STATEMENT, null);
+                            probe.tagAs(ASSIGNMENT, null);
+                        }
+                    } else {
+                        SLStatementNode statementNode = (SLStatementNode) node;
+                        final Probe probe = instrumenter.probe(statementNode);
+                        probe.tagAs(STATEMENT, null);
+                        if (node instanceof SLWhileNode) {
+                            probe.tagAs(START_LOOP, null);
+                        }
+                    }
                 }
-            } else {
-                SLStatementNode statementNode = (SLStatementNode) node;
-                Probe probe = statementNode.probe();
-                probe.tagAs(STATEMENT, null);
-                if (node instanceof SLWhileNode) {
-                    probe.tagAs(START_LOOP, null);
-                }
+                return true;
             }
-        }
-        return true;
-    }
-
-    public void probeAST(Node node) {
-        node.accept(this);
+        });
     }
 }