Skip to content

Commit 09f6734

Browse files
committed
Add Truffle DSL annotations
Signed-off-by: Stefan Marr <[email protected]>
1 parent c677f67 commit 09f6734

33 files changed

+84
-1
lines changed

src/somns/src/somns/interpreter/actors/AbstractPromiseResolutionNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.concurrent.ForkJoinPool;
44

55
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
6+
import com.oracle.truffle.api.dsl.NeverDefault;
67
import com.oracle.truffle.api.dsl.Specialization;
78
import com.oracle.truffle.api.frame.VirtualFrame;
89
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
@@ -74,6 +75,7 @@ public abstract Object executeEvaluated(VirtualFrame frame,
7475
boolean haltOnResolution);
7576

7677
@Override
78+
@NeverDefault
7779
public WrapperNode createWrapper(final ProbeNode probe) {
7880
return new AbstractPromiseResolutionNodeWrapper(this, probe);
7981
}

src/somns/src/somns/interpreter/actors/EventualSendNode.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import com.oracle.truffle.api.CompilerAsserts;
88
import com.oracle.truffle.api.RootCallTarget;
99
import com.oracle.truffle.api.dsl.Cached;
10+
import com.oracle.truffle.api.dsl.Idempotent;
11+
import com.oracle.truffle.api.dsl.NeverDefault;
1012
import com.oracle.truffle.api.dsl.Specialization;
1113
import com.oracle.truffle.api.frame.VirtualFrame;
1214
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
@@ -72,6 +74,7 @@ public EventualSendNode(final SSymbol selector, final int numArgs,
7274
protected EventualSendNode() {}
7375

7476
@Override
77+
@NeverDefault
7578
public WrapperNode createWrapper(final ProbeNode probe) {
7679
return new EventualSendNodeWrapper(this, probe);
7780
}
@@ -110,6 +113,7 @@ private static WrapReferenceNode[] createArgWrapper(final int numArgs) {
110113
}
111114

112115
@Override
116+
@Idempotent
113117
public boolean isResultUsed(final ExpressionNode child) {
114118
return isParentResultUsed(this, this);
115119
}
@@ -176,6 +180,7 @@ public boolean isInstrumentable() {
176180
}
177181

178182
@Override
183+
@NeverDefault
179184
public WrapperNode createWrapper(final ProbeNode probe) {
180185
return new SendNodeWrapper(this, probe);
181186
}
@@ -185,16 +190,19 @@ public SourceSection getSourceSection() {
185190
return source;
186191
}
187192

193+
@Idempotent
188194
protected final boolean isResultUsed() {
189195
Node parent = SOMNode.getParentIgnoringWrapper(this);
190196
assert parent instanceof EventualSendNode;
191197
return isParentResultUsed(parent, parent);
192198
}
193199

200+
@Idempotent
194201
protected static final boolean isFarRefRcvr(final Object[] args) {
195202
return args[0] instanceof SFarReference;
196203
}
197204

205+
@Idempotent
198206
protected static final boolean isPromiseRcvr(final Object[] args) {
199207
return args[0] instanceof SPromise;
200208
}
@@ -252,6 +260,7 @@ protected void sendPromiseMessage(final Object[] args, final SPromise rcvr,
252260
registerNode.register(rcvr, msg, rcvr.getOwner());
253261
}
254262

263+
@NeverDefault
255264
protected RegisterWhenResolved createRegisterNode() {
256265
return new RegisterWhenResolved(actorPool);
257266
}

src/somns/src/somns/interpreter/actors/SchedulePromiseHandlerNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.concurrent.ForkJoinPool;
44

55
import com.oracle.truffle.api.dsl.Cached;
6+
import com.oracle.truffle.api.dsl.NeverDefault;
67
import com.oracle.truffle.api.dsl.Specialization;
78
import com.oracle.truffle.api.nodes.ExplodeLoop;
89
import com.oracle.truffle.api.nodes.Node;
@@ -24,6 +25,7 @@
2425
*/
2526
public abstract class SchedulePromiseHandlerNode extends Node {
2627

28+
@NeverDefault
2729
protected static final WrapReferenceNode createWrapper() {
2830
return WrapReferenceNodeGen.create();
2931
}

src/somns/src/somns/interpreter/nodes/ArgumentReadNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package somns.interpreter.nodes;
22

3+
import com.oracle.truffle.api.dsl.NeverDefault;
34
import com.oracle.truffle.api.frame.VirtualFrame;
45
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
56
import com.oracle.truffle.api.instrumentation.ProbeNode;
@@ -50,6 +51,7 @@ public LocalArgumentReadNode(final boolean insidePrim, final int argIdx) {
5051
}
5152

5253
@Override
54+
@NeverDefault
5355
public WrapperNode createWrapper(final ProbeNode probe) {
5456
return new LocalArgumentReadNodeWrapper(this, probe);
5557
}

src/somns/src/somns/interpreter/nodes/ExpressionNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
import java.math.BigInteger;
2525

26+
import com.oracle.truffle.api.dsl.Idempotent;
27+
import com.oracle.truffle.api.dsl.NeverDefault;
2628
import com.oracle.truffle.api.frame.VirtualFrame;
2729
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
2830
import com.oracle.truffle.api.instrumentation.InstrumentableNode;
@@ -145,6 +147,7 @@ public SPromise executeSPromise(final VirtualFrame frame) throws UnexpectedResul
145147
return TypesGen.expectSPromise(executeGeneric(frame));
146148
}
147149

150+
@Idempotent
148151
public boolean isResultUsed(final ExpressionNode child) {
149152
if (this instanceof WrapperNode) {
150153
Node p = getParent();
@@ -161,6 +164,7 @@ public boolean isInstrumentable() {
161164
}
162165

163166
@Override
167+
@NeverDefault
164168
public WrapperNode createWrapper(final ProbeNode probe) {
165169
return new ExpressionNodeWrapper(this, probe);
166170
}

src/somns/src/somns/interpreter/nodes/MessageSendNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.oracle.truffle.api.CompilerAsserts;
99
import com.oracle.truffle.api.CompilerDirectives;
10+
import com.oracle.truffle.api.dsl.NeverDefault;
1011
import com.oracle.truffle.api.frame.VirtualFrame;
1112
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
1213
import com.oracle.truffle.api.instrumentation.ProbeNode;
@@ -168,6 +169,7 @@ private Object[] evaluateArguments(final VirtualFrame frame) {
168169
}
169170

170171
@Override
172+
@NeverDefault
171173
public WrapperNode createWrapper(final ProbeNode probe) {
172174
Node parent = getParent();
173175
// this.isSafelyReplaceableBy(newNode)

src/somns/src/somns/interpreter/nodes/SequenceNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
package somns.interpreter.nodes;
2323

24+
import com.oracle.truffle.api.dsl.Idempotent;
2425
import com.oracle.truffle.api.frame.VirtualFrame;
2526
import com.oracle.truffle.api.nodes.ExplodeLoop;
2627
import com.oracle.truffle.api.nodes.Node;
@@ -52,6 +53,7 @@ private void executeAllButLast(final VirtualFrame frame) {
5253
}
5354

5455
@Override
56+
@Idempotent
5557
public boolean isResultUsed(final ExpressionNode child) {
5658
if (SOMNode.unwrapIfNecessary(expressions[expressions.length - 1]) == child) {
5759
Node parent = getParent();

src/somns/src/somns/interpreter/nodes/dispatch/AbstractDispatchNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Map;
44

5+
import com.oracle.truffle.api.dsl.NeverDefault;
56
import com.oracle.truffle.api.frame.VirtualFrame;
67
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
78
import com.oracle.truffle.api.instrumentation.InstrumentableNode;
@@ -45,6 +46,7 @@ public boolean isInstrumentable() {
4546
}
4647

4748
@Override
49+
@NeverDefault
4850
public WrapperNode createWrapper(final ProbeNode probe) {
4951
return new AbstractDispatchNodeWrapper(this, probe);
5052
}

src/somns/src/somns/interpreter/nodes/dispatch/CachedSlotRead.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.Map;
44

55
import com.oracle.truffle.api.CompilerDirectives;
6+
import com.oracle.truffle.api.dsl.NeverDefault;
67
import com.oracle.truffle.api.frame.VirtualFrame;
78
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
89
import com.oracle.truffle.api.instrumentation.ProbeNode;
@@ -98,6 +99,7 @@ public boolean hasTag(final Class<? extends Tag> tag) {
9899
}
99100

100101
@Override
102+
@NeverDefault
101103
public WrapperNode createWrapper(final ProbeNode probe) {
102104
if (getParent() instanceof ClassSlotAccessNode) {
103105
return new CachedSlotReadWrapper(this, probe);

src/somns/src/somns/interpreter/nodes/dispatch/CachedSlotWrite.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.Map;
44

55
import com.oracle.truffle.api.CompilerDirectives;
6+
import com.oracle.truffle.api.dsl.NeverDefault;
67
import com.oracle.truffle.api.frame.VirtualFrame;
78
import com.oracle.truffle.api.instrumentation.GenerateWrapper;
89
import com.oracle.truffle.api.instrumentation.ProbeNode;
@@ -84,6 +85,7 @@ public final int lengthOfDispatchChain() {
8485
}
8586

8687
@Override
88+
@NeverDefault
8789
public WrapperNode createWrapper(final ProbeNode probe) {
8890
if (getParent() instanceof ClassSlotAccessNode) {
8991
return new CachedSlotWriteWrapper(this, probe);

0 commit comments

Comments
 (0)