Skip to content

Commit 3b1fcdd

Browse files
committed
ImpModuleBuiltins: create_builtin, reuse PythonObjectLibrary
1 parent a8f56f2 commit 3b1fcdd

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/ImpModuleBuiltins.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
import com.oracle.graal.python.builtins.objects.ints.PInt;
7373
import com.oracle.graal.python.builtins.objects.module.PythonModule;
7474
import com.oracle.graal.python.builtins.objects.object.PythonObject;
75+
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
7576
import com.oracle.graal.python.builtins.objects.str.PString;
7677
import com.oracle.graal.python.nodes.ErrorMessages;
7778
import com.oracle.graal.python.nodes.SpecialMethodNames;
@@ -503,19 +504,23 @@ public int run(@SuppressWarnings("unused") Object noName) {
503504
@Builtin(name = "create_builtin", minNumOfPositionalArgs = 1)
504505
@GenerateNodeFactory
505506
public abstract static class CreateBuiltin extends PythonBuiltinNode {
506-
@SuppressWarnings("unused")
507-
@Specialization
508-
@TruffleBoundary
509-
public Object run(PythonObject moduleSpec,
510-
@Cached CastToJavaStringNode toJavaStringNode) {
511-
Object name = moduleSpec.getAttribute("name");
512-
PythonModule builtinModule = getCore().lookupBuiltinModule(toJavaStringNode.execute(name));
507+
@Specialization(limit = "getCallSiteInlineCacheMaxDepth()")
508+
public Object run(VirtualFrame frame, PythonObject moduleSpec,
509+
@Cached CastToJavaStringNode toJavaStringNode,
510+
@CachedLibrary(value = "moduleSpec") PythonObjectLibrary pol) {
511+
Object name = pol.lookupAttribute(moduleSpec, frame, "name");
512+
PythonModule builtinModule = getBuiltinModule(toJavaStringNode.execute(name));
513513
if (builtinModule != null) {
514514
// TODO: builtin modules cannot be re-initialized (see is_builtin)
515515
return builtinModule;
516516
}
517517
throw raise(NotImplementedError, "_imp.create_builtin");
518518
}
519+
520+
@TruffleBoundary
521+
private PythonModule getBuiltinModule(String name) {
522+
return getCore().lookupBuiltinModule(name);
523+
}
519524
}
520525

521526
@Builtin(name = "source_hash", minNumOfPositionalArgs = 2)

0 commit comments

Comments
 (0)