Skip to content

Commit eb41b04

Browse files
committed
do not inline the generic PyObjectGetItem call
1 parent d57d948 commit eb41b04

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/lib/PyObjectGetItem.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import com.oracle.graal.python.nodes.call.special.CallBinaryMethodNode;
5959
import com.oracle.graal.python.nodes.call.special.LookupSpecialMethodSlotNode;
6060
import com.oracle.graal.python.nodes.object.GetClassNode;
61+
import com.oracle.truffle.api.HostCompilerDirectives.InliningCutoff;
6162
import com.oracle.truffle.api.dsl.Cached;
6263
import com.oracle.truffle.api.dsl.Cached.Shared;
6364
import com.oracle.truffle.api.dsl.GenerateUncached;
@@ -93,6 +94,7 @@ Object doDict(VirtualFrame frame, PDict object, Object key,
9394
return getItemNode.execute(frame, object, key);
9495
}
9596

97+
@InliningCutoff // no point inlining the complex case
9698
@Specialization(replaces = {"doList", "doTuple", "doDict"})
9799
Object doGeneric(VirtualFrame frame, Object object, Object key,
98100
@Shared("getClass") @Cached GetClassNode getClassNode,
@@ -131,6 +133,10 @@ Object doGeneric(VirtualFrame frame, Object type, Object key,
131133
}
132134
}
133135

136+
public static PyObjectGetItem create() {
137+
return PyObjectGetItemNodeGen.create();
138+
}
139+
134140
public static PyObjectGetItem getUncached() {
135141
return PyObjectGetItemNodeGen.getUncached();
136142
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@
105105
import com.oracle.graal.python.lib.PyObjectDelItemNodeGen;
106106
import com.oracle.graal.python.lib.PyObjectGetAttr;
107107
import com.oracle.graal.python.lib.PyObjectGetAttrNodeGen;
108+
import com.oracle.graal.python.lib.PyObjectGetItem;
109+
import com.oracle.graal.python.lib.PyObjectGetItemNodeGen;
108110
import com.oracle.graal.python.lib.PyObjectGetIter;
109111
import com.oracle.graal.python.lib.PyObjectGetIterNodeGen;
110112
import com.oracle.graal.python.lib.PyObjectGetMethod;
@@ -175,8 +177,6 @@
175177
import com.oracle.graal.python.nodes.statement.RaiseNodeGen;
176178
import com.oracle.graal.python.nodes.subscript.DeleteItemNode;
177179
import com.oracle.graal.python.nodes.subscript.DeleteItemNodeGen;
178-
import com.oracle.graal.python.nodes.subscript.GetItemNode;
179-
import com.oracle.graal.python.nodes.subscript.GetItemNodeGen;
180180
import com.oracle.graal.python.nodes.util.CastToJavaIntExactNode;
181181
import com.oracle.graal.python.nodes.util.CastToJavaIntExactNodeGen;
182182
import com.oracle.graal.python.nodes.util.ExceptionStateNodes;
@@ -274,7 +274,7 @@ public final class PBytecodeRootNode extends PRootNode implements BytecodeOSRNod
274274
private static final PyObjectSetItem UNCACHED_OBJECT_SET_ITEM = PyObjectSetItem.getUncached();
275275
private static final NodeSupplier<PyObjectIsTrueNode> NODE_OBJECT_IS_TRUE = PyObjectIsTrueNode::create;
276276
private static final PyObjectIsTrueNode UNCACHED_OBJECT_IS_TRUE = PyObjectIsTrueNode.getUncached();
277-
private static final NodeSupplier<GetItemNode> NODE_GET_ITEM = GetItemNode::create;
277+
private static final NodeSupplier<PyObjectGetItem> NODE_GET_ITEM = PyObjectGetItem::create;
278278
private static final ExceptMatchNode UNCACHED_EXCEPT_MATCH = ExceptMatchNode.getUncached();
279279
private static final NodeSupplier<ExceptMatchNode> NODE_EXCEPT_MATCH = ExceptMatchNode::create;
280280
private static final SetupWithNode UNCACHED_SETUP_WITH_NODE = SetupWithNode.getUncached();
@@ -2266,7 +2266,7 @@ private void traceLine(VirtualFrame virtualFrame, MutableLoopData mutableData, b
22662266

22672267
@BytecodeInterpreterSwitch
22682268
private int bytecodeBinarySubscr(VirtualFrame virtualFrame, int stackTop, int bci, Node[] localNodes) {
2269-
GetItemNode getItemNode = insertChildNode(localNodes, bci, GetItemNodeGen.class, NODE_GET_ITEM);
2269+
PyObjectGetItem getItemNode = insertChildNode(localNodes, bci, PyObjectGetItemNodeGen.class, NODE_GET_ITEM);
22702270
Object slice = virtualFrame.getObject(stackTop);
22712271
virtualFrame.setObject(stackTop--, null);
22722272
virtualFrame.setObject(stackTop, getItemNode.execute(virtualFrame, virtualFrame.getObject(stackTop), slice));

0 commit comments

Comments
 (0)