Mercurial > hg > truffle
diff graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java @ 18485:e3c95cbbb50c
Truffle Instrumentation: major API revision, based around the Probe and Instrument classes; add Instrumentable API for language implementors, with most details automated; reimplemented to handle AST splitting automatically; more JUnit tests.
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Sun, 23 Nov 2014 16:07:23 -0800 |
parents | 656331a61829 |
children | f57d86eb036f |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Fri Nov 21 13:16:02 2014 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Sun Nov 23 16:07:23 2014 -0800 @@ -24,10 +24,11 @@ */ package com.oracle.truffle.api.nodes; +import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; import com.oracle.truffle.api.*; -import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; import com.oracle.truffle.api.frame.*; import com.oracle.truffle.api.impl.*; +import com.oracle.truffle.api.instrument.*; import com.oracle.truffle.api.source.*; /** @@ -115,7 +116,7 @@ * stack) without prior knowledge of the language it has come from. * * Used for instance to determine the language of a <code>RootNode<code>: - * + * * <pre> * <code> * rootNode.getExecutionContext().getLanguageShortName(); @@ -140,4 +141,19 @@ } } + /** + * Apply all registered instances of {@link ASTProber} to the AST, if any, held by this root + * node. This can only be done once the AST is complete, notably once all parent pointers are + * correctly assigned. But it also must be done before any AST cloning or execution. + * <p> + * If this is not done, then the AST will not be subject to debugging or any other + * instrumentation-supported tooling. + * <p> + * Implementations should ensure that instrumentation is never applied more than once to an AST, + * as this is not guaranteed to be error-free. + * + * @see Probe#registerASTProber(com.oracle.truffle.api.instrument.ASTProber) + */ + public void applyInstrumentation() { + } }