diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UseMethod.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UseMethod.java index dc2afb7fbf7a5cce07af04b5024a4947ccebcc3e..23fdfd3d6b48b615ceceec9dfd41c45baa0b85c9 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UseMethod.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UseMethod.java @@ -15,6 +15,7 @@ import static com.oracle.truffle.r.runtime.RBuiltinKind.*; import com.oracle.truffle.api.*; import com.oracle.truffle.api.dsl.*; import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.r.nodes.*; import com.oracle.truffle.r.nodes.access.*; import com.oracle.truffle.r.nodes.builtin.*; @@ -87,6 +88,7 @@ public abstract class UseMethod extends RBuiltinNode { } } + @NodeInfo(cost = NodeCost.UNINITIALIZED) private static final class UninitializedUseMethodNode extends UseMethodNode { protected final int depth; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/CallInlineCacheNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/CallInlineCacheNode.java index f8f7fff1860d11c0ee70b63ad6234d0ac2e035f2..6ebcf6cbb962f8edf51c26d98b8eb60cf069339d 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/CallInlineCacheNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/CallInlineCacheNode.java @@ -45,6 +45,7 @@ public abstract class CallInlineCacheNode extends Node { return new UninitializedCallInlineCacheNode(maxPicDepth); } + @NodeInfo(cost = NodeCost.UNINITIALIZED) private static final class UninitializedCallInlineCacheNode extends CallInlineCacheNode { private final int maxPicDepth; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/InlineCacheNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/InlineCacheNode.java index f490925043f3a64b033c7db61d163746d5f9724f..f80ceb6a9f9b8f28018adceabe8ebe8c077e8062 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/InlineCacheNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/InlineCacheNode.java @@ -74,6 +74,7 @@ public abstract class InlineCacheNode<F extends Frame, T> extends Node { return create(maxPicDepth, closure -> (RNode) closure.getExpr(), (frame, closure) -> RContext.getEngine().evalPromise(closure, frame.materialize())); } + @NodeInfo(cost = NodeCost.UNINITIALIZED) private static final class UninitializedInlineCacheNode<F extends Frame, T> extends InlineCacheNode<F, T> { private final int maxPicDepth; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/FrameSlotNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/FrameSlotNode.java index 0f88a96422ac34b27c4c18862f6d8557869bb061..2b12522378a4dc8363781d2d9e1375fd959629ea 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/FrameSlotNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/FrameSlotNode.java @@ -67,6 +67,7 @@ public abstract class FrameSlotNode extends Node { return new PresentFrameSlotNode(slot); } + @NodeInfo(cost = NodeCost.UNINITIALIZED) private static final class UnresolvedFrameSlotNode extends FrameSlotNode { private final Object identifier; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java index 411c469e4a26860f6a418d598179fb717b6b8dbd..4f8dce9a8b1775a9f5754680b6e44521a0253c0f 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java @@ -278,6 +278,7 @@ public abstract class ReadVariableNode extends RNode implements VisibilityContro RType getMode(); } + @NodeInfo(cost = NodeCost.UNINITIALIZED) public static final class UnresolvedReadVariableNode extends ReadVariableNode implements HasMode { // TODO It seems a refactoring would be appropriate to encapsulate all fields (symbol, mode, @@ -460,6 +461,7 @@ public abstract class ReadVariableNode extends RNode implements VisibilityContro } } + @NodeInfo(cost = NodeCost.UNINITIALIZED) public static final class UnResolvedReadLocalVariableNode extends ReadVariableNode implements HasMode { private final Symbol symbol; private final RType mode; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/WriteVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/WriteVariableNode.java index b322e5d520d2c0f63d18388948b44e326808d047..b459fcff3dd6929beb88f672908c4a2ff0ed6485 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/WriteVariableNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/WriteVariableNode.java @@ -25,6 +25,7 @@ package com.oracle.truffle.r.nodes.access; import com.oracle.truffle.api.*; import com.oracle.truffle.api.dsl.*; import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.source.*; import com.oracle.truffle.api.utilities.*; import com.oracle.truffle.r.nodes.*; @@ -152,6 +153,7 @@ public abstract class WriteVariableNode extends RNode implements VisibilityContr public abstract void execute(VirtualFrame frame, Object value); + @NodeInfo(cost = NodeCost.UNINITIALIZED) @NodeFields({@NodeField(name = "name", type = String.class), @NodeField(name = "mode", type = Mode.class)}) public abstract static class UnresolvedWriteLocalVariableNode extends WriteVariableNode { diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/DispatchedCallNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/DispatchedCallNode.java index 0607daa5d946784ed1aa1c723dfb0fbd9acc57ee..c3df06bafcf2058493a3bbc81fffd886cabef197 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/DispatchedCallNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/DispatchedCallNode.java @@ -13,6 +13,7 @@ package com.oracle.truffle.r.nodes.function; import com.oracle.truffle.api.*; import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.source.*; import com.oracle.truffle.r.nodes.*; import com.oracle.truffle.r.runtime.*; @@ -49,6 +50,7 @@ public abstract class DispatchedCallNode extends RNode { public abstract Object executeInternal(VirtualFrame frame, RStringVector type, Object[] args); + @NodeInfo(cost = NodeCost.UNINITIALIZED) private static final class UninitializedDispatchedCallNode extends DispatchedCallNode { private final int depth; private final String genericName; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/GetMissingValueNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/GetMissingValueNode.java index 276d56ed99d80120a4f0da05b06458cfc92800fd..21aa11cb73757a43cc89f6416c36333b0fa88c08 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/GetMissingValueNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/GetMissingValueNode.java @@ -24,6 +24,7 @@ package com.oracle.truffle.r.nodes.function; import com.oracle.truffle.api.*; import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.r.nodes.*; import com.oracle.truffle.r.nodes.access.*; @@ -37,6 +38,7 @@ public abstract class GetMissingValueNode extends RNode { return new UninitializedGetMissingValueNode(sym); } + @NodeInfo(cost = NodeCost.UNINITIALIZED) private static final class UninitializedGetMissingValueNode extends GetMissingValueNode { private final Symbol sym; @@ -49,8 +51,7 @@ public abstract class GetMissingValueNode extends RNode { public Object execute(VirtualFrame frame) { CompilerDirectives.transferToInterpreterAndInvalidate(); FrameSlot slot = frame.getFrameDescriptor().findFrameSlot(sym.getName()); - GetMissingValueNode gmvn = new ResolvedGetMissingValueNode(slot); - return replace(gmvn).execute(frame); + return replace(new ResolvedGetMissingValueNode(slot)).execute(frame); } } diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java index 766b15a752c1a731dc85e24abf2aee9e48bf6d28..b108aa97e1a4b0408ac871b8da0b761373374038 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java @@ -74,13 +74,13 @@ import com.oracle.truffle.r.runtime.data.*; * U = {@link UninitializedCallNode}: Forms the uninitialized end of the function PIC * D = {@link DispatchedCallNode}: Function fixed, no varargs * G = {@link GenericCallNode}: Function arbitrary, no varargs (generic case) - * + * * UV = {@link UninitializedCallNode} with varargs, * UVC = {@link UninitializedVarArgsCacheCallNode} with varargs, for varargs cache * DV = {@link DispatchedVarArgsCallNode}: Function fixed, with cached varargs * DGV = {@link DispatchedGenericVarArgsCallNode}: Function fixed, with arbitrary varargs (generic case) * GV = {@link GenericVarArgsCallNode}: Function arbitrary, with arbitrary varargs (generic case) - * + * * (RB = {@link RBuiltinNode}: individual functions that are builtins are represented by this node * which is not aware of caching). Due to {@link CachedCallNode} (see below) this is transparent to * the cache and just behaves like a D/DGV) @@ -93,11 +93,11 @@ import com.oracle.truffle.r.runtime.data.*; * non varargs, max depth: * | * D-D-D-U - * + * * no varargs, generic (if max depth is exceeded): * | * D-D-D-D-G - * + * * varargs: * | * DV-DV-UV <- function call target identity level cache @@ -105,7 +105,7 @@ import com.oracle.truffle.r.runtime.data.*; * DV * | * UVC <- varargs signature level cache - * + * * varargs, max varargs depth exceeded: * | * DV-DV-UV @@ -117,7 +117,7 @@ import com.oracle.truffle.r.runtime.data.*; * DV * | * DGV - * + * * varargs, max function depth exceeded: * | * DV-DV-DV-DV-GV @@ -374,6 +374,7 @@ public abstract class RCallNode extends RNode { * * @see RCallNode */ + @NodeInfo(cost = NodeCost.UNINITIALIZED) public static final class UninitializedCallNode extends RootCallNode { private final int depth; @@ -544,6 +545,7 @@ public abstract class RCallNode extends RNode { * * @see RCallNode */ + @NodeInfo(cost = NodeCost.UNINITIALIZED) public static final class UninitializedVarArgsCacheCallNode extends VarArgsCacheCallNode { @Child private CallArgumentsNode args; private int depth = 1; // varargs cached is started with a [DV] DispatchedVarArgsCallNode