Skip to content

Commit 5616185

Browse files
committed
Migrate SimpleLanguage to instrumentation API
1 parent 6e73003 commit 5616185

File tree

11 files changed

+38
-0
lines changed

11 files changed

+38
-0
lines changed

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLExpressionNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242

4343
import com.oracle.truffle.api.dsl.TypeSystemReference;
4444
import com.oracle.truffle.api.frame.VirtualFrame;
45+
import com.oracle.truffle.api.instrumentation.Instrumentable;
46+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4547
import com.oracle.truffle.api.nodes.NodeInfo;
4648
import com.oracle.truffle.api.nodes.UnexpectedResultException;
4749
import com.oracle.truffle.api.object.DynamicObject;
@@ -56,6 +58,7 @@
5658
*/
5759
@TypeSystemReference(SLTypes.class)
5860
@NodeInfo(description = "The abstract base node for all expressions")
61+
@Instrumentable(tags = {InstrumentationTag.EXPRESSION}, factory = SLExpressionNodeWrapper.class)
5962
public abstract class SLExpressionNode extends SLStatementNode {
6063

6164
public SLExpressionNode(SourceSection src) {

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLStatementNode.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
import java.io.File;
4444

4545
import com.oracle.truffle.api.frame.VirtualFrame;
46+
import com.oracle.truffle.api.instrumentation.Instrumentable;
47+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4648
import com.oracle.truffle.api.nodes.Node;
4749
import com.oracle.truffle.api.nodes.NodeInfo;
4850
import com.oracle.truffle.api.source.SourceSection;
@@ -53,12 +55,17 @@
5355
* local variables.
5456
*/
5557
@NodeInfo(language = "Simple Language", description = "The abstract base node for all statements")
58+
@Instrumentable(tags = InstrumentationTag.STATEMENT, factory = SLStatementNodeWrapper.class)
5659
public abstract class SLStatementNode extends Node {
5760

5861
public SLStatementNode(SourceSection src) {
5962
super(src);
6063
}
6164

65+
protected SLStatementNode(SLStatementNode delegate) {
66+
super(delegate.getSourceSection());
67+
}
68+
6269
/**
6370
* Execute this node as as statement, where no return value is necessary.
6471
*/
@@ -100,4 +107,5 @@ public static String formatSourceSection(Node node) {
100107
return String.format("%s:%d%s", sourceName, startLine, estimated ? "~" : "");
101108
}
102109
}
110+
103111
}

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLReadPropertyNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import com.oracle.truffle.api.dsl.NodeChild;
4545
import com.oracle.truffle.api.dsl.Specialization;
4646
import com.oracle.truffle.api.frame.VirtualFrame;
47+
import com.oracle.truffle.api.instrumentation.Instrumentable;
48+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4749
import com.oracle.truffle.api.interop.ForeignAccess;
4850
import com.oracle.truffle.api.interop.Message;
4951
import com.oracle.truffle.api.interop.TruffleObject;
@@ -62,6 +64,7 @@
6264
*/
6365
@NodeInfo(shortName = ".")
6466
@NodeChild(value = "receiver", type = SLExpressionNode.class)
67+
@Instrumentable(tags = {InstrumentationTag.READ, InstrumentationTag.EXPRESSION})
6568
public abstract class SLReadPropertyNode extends SLExpressionNode {
6669

6770
@Child private SLReadPropertyCacheNode cacheNode;

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLWritePropertyNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import com.oracle.truffle.api.dsl.NodeChildren;
4646
import com.oracle.truffle.api.dsl.Specialization;
4747
import com.oracle.truffle.api.frame.VirtualFrame;
48+
import com.oracle.truffle.api.instrumentation.Instrumentable;
49+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4850
import com.oracle.truffle.api.interop.ForeignAccess;
4951
import com.oracle.truffle.api.interop.Message;
5052
import com.oracle.truffle.api.interop.TruffleObject;
@@ -63,6 +65,7 @@
6365
*/
6466
@NodeInfo(shortName = ".=")
6567
@NodeChildren({@NodeChild(value = "receiver", type = SLExpressionNode.class), @NodeChild(value = "value", type = SLExpressionNode.class)})
68+
@Instrumentable(tags = {InstrumentationTag.WRITE, InstrumentationTag.EXPRESSION})
6669
public abstract class SLWritePropertyNode extends SLExpressionNode {
6770

6871
@Child protected SLExpressionNode receiverNode;

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLInvokeNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import com.oracle.truffle.api.dsl.NodeChildren;
4646
import com.oracle.truffle.api.dsl.Specialization;
4747
import com.oracle.truffle.api.frame.VirtualFrame;
48+
import com.oracle.truffle.api.instrumentation.Instrumentable;
49+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4850
import com.oracle.truffle.api.interop.ForeignAccess;
4951
import com.oracle.truffle.api.interop.Message;
5052
import com.oracle.truffle.api.interop.TruffleObject;
@@ -65,6 +67,7 @@
6567
*/
6668
@NodeInfo(shortName = "invoke")
6769
@NodeChildren({@NodeChild(value = "functionNode", type = SLExpressionNode.class)})
70+
@Instrumentable(tags = {InstrumentationTag.CALL, InstrumentationTag.EXPRESSION})
6871
public abstract class SLInvokeNode extends SLExpressionNode {
6972
@Children private final SLExpressionNode[] argumentNodes;
7073
@Child private SLDispatchNode dispatchNode;

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLBlockNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242

4343
import com.oracle.truffle.api.CompilerAsserts;
4444
import com.oracle.truffle.api.frame.VirtualFrame;
45+
import com.oracle.truffle.api.instrumentation.Instrumentable;
46+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4547
import com.oracle.truffle.api.nodes.ExplodeLoop;
4648
import com.oracle.truffle.api.nodes.NodeInfo;
4749
import com.oracle.truffle.api.source.SourceSection;
@@ -51,6 +53,7 @@
5153
* A statement node that just executes a list of other statements.
5254
*/
5355
@NodeInfo(shortName = "block", description = "The node implementing a source code block")
56+
@Instrumentable(tags = {InstrumentationTag.BLOCK})
5457
public final class SLBlockNode extends SLStatementNode {
5558

5659
/**

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLFunctionBodyNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
package com.oracle.truffle.sl.nodes.controlflow;
4242

4343
import com.oracle.truffle.api.frame.VirtualFrame;
44+
import com.oracle.truffle.api.instrumentation.Instrumentable;
45+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4446
import com.oracle.truffle.api.nodes.NodeInfo;
4547
import com.oracle.truffle.api.source.SourceSection;
4648
import com.oracle.truffle.api.profiles.BranchProfile;
@@ -57,6 +59,7 @@
5759
* {@link SLNull#SINGLETON default null value}.
5860
*/
5961
@NodeInfo(shortName = "body")
62+
@Instrumentable(tags = {InstrumentationTag.ROOT, InstrumentationTag.BLOCK})
6063
public final class SLFunctionBodyNode extends SLExpressionNode {
6164

6265
/** The body of the function. */

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLWhileNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,16 @@
4242

4343
import com.oracle.truffle.api.Truffle;
4444
import com.oracle.truffle.api.frame.VirtualFrame;
45+
import com.oracle.truffle.api.instrumentation.Instrumentable;
46+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4547
import com.oracle.truffle.api.nodes.LoopNode;
4648
import com.oracle.truffle.api.nodes.NodeInfo;
4749
import com.oracle.truffle.api.source.SourceSection;
4850
import com.oracle.truffle.sl.nodes.SLExpressionNode;
4951
import com.oracle.truffle.sl.nodes.SLStatementNode;
5052

5153
@NodeInfo(shortName = "while", description = "The node implementing a while loop")
54+
@Instrumentable(tags = {InstrumentationTag.LOOP})
5255
public final class SLWhileNode extends SLStatementNode {
5356

5457
@Child private LoopNode loopNode;

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/local/SLReadArgumentNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
*/
4141
package com.oracle.truffle.sl.nodes.local;
4242

43+
import com.oracle.truffle.api.instrumentation.Instrumentable;
44+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4345
import com.oracle.truffle.api.frame.VirtualFrame;
4446
import com.oracle.truffle.api.profiles.BranchProfile;
4547
import com.oracle.truffle.api.source.SourceSection;
@@ -54,6 +56,7 @@
5456
* specialized and can, e.g., be accessed without unboxing, all arguments are loaded into local
5557
* variables {@link SLNodeFactory#addFormalParameter in the method prologue}.
5658
*/
59+
@Instrumentable(tags = {InstrumentationTag.READ, InstrumentationTag.EXPRESSION})
5760
public class SLReadArgumentNode extends SLExpressionNode {
5861

5962
/** The argument number, i.e., the index into the array of arguments. */

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/local/SLReadLocalVariableNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import com.oracle.truffle.api.frame.FrameSlot;
4646
import com.oracle.truffle.api.frame.FrameSlotTypeException;
4747
import com.oracle.truffle.api.frame.VirtualFrame;
48+
import com.oracle.truffle.api.instrumentation.Instrumentable;
49+
import com.oracle.truffle.api.instrumentation.InstrumentationTag;
4850
import com.oracle.truffle.api.source.SourceSection;
4951
import com.oracle.truffle.sl.nodes.SLExpressionNode;
5052

@@ -56,6 +58,7 @@
5658
* which causes not rewriting. The rewriting code is generated by the Truffle DSL.
5759
*/
5860
@NodeField(name = "slot", type = FrameSlot.class)
61+
@Instrumentable(tags = {InstrumentationTag.READ, InstrumentationTag.EXPRESSION})
5962
public abstract class SLReadLocalVariableNode extends SLExpressionNode {
6063

6164
public SLReadLocalVariableNode(SourceSection src) {

0 commit comments

Comments
 (0)