Skip to content

Commit 710b8e8

Browse files
committed
avoid reading the context ref multiple times for builtins
1 parent 1e4ae00 commit 710b8e8

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import com.oracle.graal.python.nodes.PNode;
3434
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
3535
import com.oracle.graal.python.nodes.subscript.GetItemNode;
36+
import com.oracle.graal.python.runtime.PythonContext;
37+
import com.oracle.graal.python.runtime.PythonCore;
3638
import com.oracle.graal.python.runtime.exception.PException;
3739
import com.oracle.truffle.api.CompilerDirectives;
3840
import com.oracle.truffle.api.dsl.Cached;
@@ -101,7 +103,15 @@ private Object returnGlobalOrBuiltin(Object result) {
101103
CompilerDirectives.transferToInterpreterAndInvalidate();
102104
readFromBuiltinsNode = insert(ReadAttributeFromObjectNode.create());
103105
}
104-
Object builtin = readFromBuiltinsNode.execute(getCore().isInitialized() ? getContext().getBuiltins() : getCore().lookupBuiltinModule("builtins"), attributeId);
106+
PythonContext context = getContext();
107+
PythonCore core = context.getCore();
108+
Object builtin;
109+
if (core.isInitialized()) {
110+
builtin = readFromBuiltinsNode.execute(context.getBuiltins(), attributeId);
111+
} else {
112+
CompilerDirectives.transferToInterpreter();
113+
builtin = readFromBuiltinsNode.execute(core.lookupBuiltinModule("builtins"), attributeId);
114+
}
105115
if (isBuiltinProfile.profile(builtin != PNone.NO_VALUE)) {
106116
return builtin;
107117
} else {

0 commit comments

Comments
 (0)