Skip to content

Commit 72791e0

Browse files
committed
Use more uncached nodes in PBytecodeRootNode
1 parent 95a2cce commit 72791e0

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/bytecode/PBytecodeRootNode.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,8 @@ public final class PBytecodeRootNode extends PRootNode implements BytecodeOSRNod
256256
private static final NodeSupplier<CastToJavaIntExactNode> NODE_CAST_TO_JAVA_INT_EXACT = CastToJavaIntExactNode::create;
257257
private static final CastToJavaIntExactNode UNCACHED_CAST_TO_JAVA_INT_EXACT = CastToJavaIntExactNode.getUncached();
258258
private static final ImportNode UNCACHED_IMPORT = ImportNode.getUncached();
259+
private static final ReadNameNode UNCACHED_READ_NAME = ReadNameNodeGen.getUncached();
260+
private static final WriteNameNode UNCACHED_WRITE_NAME = WriteNameNodeGen.getUncached();
259261
private static final NodeSupplier<ImportNode> NODE_IMPORT = ImportNode::create;
260262
private static final ImportStarNode UNCACHED_IMPORT_STAR = ImportStarNode.getUncached();
261263
private static final NodeSupplier<ImportStarNode> NODE_IMPORT_STAR = ImportStarNode::create;
@@ -337,6 +339,7 @@ public final class PBytecodeRootNode extends PRootNode implements BytecodeOSRNod
337339
private static final NodeSupplier<PyObjectSizeNode> NODE_SIZE = PyObjectSizeNode::create;
338340
private static final NodeSupplier<GetTPFlagsNode> NODE_TP_FLAGS = GetTPFlagsNode::create;
339341
private static final GetTPFlagsNode UNCACHED_TP_FLAGS = GetTPFlagsNode.getUncached();
342+
private static final DeleteGlobalNode UNCACHED_DELETE_GLOBAL = DeleteGlobalNodeGen.getUncached();
340343
private static final NodeSupplier<MatchKeysNode> NODE_MATCH_KEYS = MatchKeysNode::create;
341344
private static final NodeSupplier<CopyDictWithoutKeysNode> NODE_COPY_DICT_WITHOUT_KEYS = CopyDictWithoutKeysNode::create;
342345
private static final KwargsMergeNode UNCACHED_KWARGS_MERGE = KwargsMergeNode.getUncached();
@@ -551,6 +554,7 @@ public final class PBytecodeRootNode extends PRootNode implements BytecodeOSRNod
551554
*/
552555
@Children private final Node[] adoptedNodes;
553556
@Child private CalleeContext calleeContext = CalleeContext.create();
557+
// TODO: make some of those lazy?
554558
@Child private PythonObjectFactory factory = PythonObjectFactory.create();
555559
@Child private ExceptionStateNodes.GetCaughtExceptionNode getCaughtExceptionNode;
556560
@Child private MaterializeFrameNode traceMaterializeFrameNode = null;
@@ -4628,7 +4632,7 @@ private int bytecodeLoadGlobal(VirtualFrame virtualFrame, Object globals, int st
46284632

46294633
private void bytecodeDeleteGlobal(VirtualFrame virtualFrame, Object globals, int bci, int oparg, Node[] localNodes, TruffleString[] localNames) {
46304634
TruffleString varname = localNames[oparg];
4631-
DeleteGlobalNode deleteGlobalNode = insertChildNode(localNodes, bci, DeleteGlobalNodeGen.class, NODE_DELETE_GLOBAL);
4635+
DeleteGlobalNode deleteGlobalNode = insertChildNode(localNodes, bci, UNCACHED_DELETE_GLOBAL, DeleteGlobalNodeGen.class, NODE_DELETE_GLOBAL, usingCachedNodes);
46324636
deleteGlobalNode.executeWithGlobals(virtualFrame, globals, varname);
46334637
}
46344638

@@ -4668,7 +4672,7 @@ private void bytecodeDeleteName(VirtualFrame virtualFrame, Object globals, Objec
46684672
PyObjectDelItem delItemNode = insertChildNode(localNodes, bci, UNCACHED_OBJECT_DEL_ITEM, PyObjectDelItemNodeGen.class, NODE_OBJECT_DEL_ITEM, useCachedNodes);
46694673
delItemNode.execute(virtualFrame, locals, varname);
46704674
} else {
4671-
DeleteGlobalNode deleteGlobalNode = insertChildNode(localNodes, bci + 1, DeleteGlobalNodeGen.class, NODE_DELETE_GLOBAL);
4675+
DeleteGlobalNode deleteGlobalNode = insertChildNode(localNodes, bci + 1, UNCACHED_DELETE_GLOBAL, DeleteGlobalNodeGen.class, NODE_DELETE_GLOBAL, useCachedNodes);
46724676
deleteGlobalNode.executeWithGlobals(virtualFrame, globals, varname);
46734677
}
46744678
}
@@ -4974,7 +4978,7 @@ private void bytecodeCallMethodVarargs(VirtualFrame virtualFrame, int stackTop,
49744978
@BytecodeInterpreterSwitch
49754979
private int bytecodeLoadName(VirtualFrame virtualFrame, int initialStackTop, int bci, int oparg, Node[] localNodes, TruffleString[] localNames) {
49764980
int stackTop = initialStackTop;
4977-
ReadNameNode readNameNode = insertChildNode(localNodes, bci, ReadNameNodeGen.class, NODE_READ_NAME);
4981+
ReadNameNode readNameNode = insertChildNode(localNodes, bci, UNCACHED_READ_NAME, ReadNameNodeGen.class, NODE_READ_NAME, usingCachedNodes);
49784982
virtualFrame.setObject(++stackTop, readNameNode.execute(virtualFrame, localNames[oparg]));
49794983
return stackTop;
49804984
}
@@ -5209,7 +5213,7 @@ private int bytecodeStoreName(VirtualFrame virtualFrame, int initialStackTop, in
52095213
int stackTop = initialStackTop;
52105214
Object value = virtualFrame.getObject(stackTop);
52115215
virtualFrame.setObject(stackTop--, null);
5212-
WriteNameNode writeNameNode = insertChildNode(localNodes, bci, WriteNameNodeGen.class, NODE_WRITE_NAME);
5216+
WriteNameNode writeNameNode = insertChildNode(localNodes, bci, UNCACHED_WRITE_NAME, WriteNameNodeGen.class, NODE_WRITE_NAME, usingCachedNodes);
52135217
writeNameNode.execute(virtualFrame, localNames[oparg], value);
52145218
return stackTop;
52155219
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/frame/ReadNameNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,12 @@
5252
import com.oracle.truffle.api.CompilerAsserts;
5353
import com.oracle.truffle.api.dsl.Cached;
5454
import com.oracle.truffle.api.dsl.Cached.Shared;
55+
import com.oracle.truffle.api.dsl.GenerateUncached;
5556
import com.oracle.truffle.api.dsl.Specialization;
5657
import com.oracle.truffle.api.frame.VirtualFrame;
5758
import com.oracle.truffle.api.strings.TruffleString;
5859

60+
@GenerateUncached
5961
public abstract class ReadNameNode extends PNodeWithContext implements AccessNameNode {
6062
public final Object execute(VirtualFrame frame, TruffleString attributeId) {
6163
CompilerAsserts.partialEvaluationConstant(attributeId);

0 commit comments

Comments
 (0)