Skip to content

Commit 52b0a87

Browse files
committed
ImportFromNode: use context.getSysModules()
1 parent f13741c commit 52b0a87

File tree

1 file changed

+15
-8
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/statement

1 file changed

+15
-8
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/statement/ImportFromNode.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public void executeVoid(VirtualFrame frame) {
8989
Object globals = PArguments.getGlobals(frame);
9090
Object importedModule = importModule(frame, importee, globals, fromlist, level);
9191
PythonObjectLibrary pol = ensurePythonLibrary();
92+
Object sysModules = getSysModules(frame, pol);
9293

9394
for (int i = 0; i < fromlist.length; i++) {
9495
String attr = fromlist[i];
@@ -100,17 +101,13 @@ public void executeVoid(VirtualFrame frame) {
100101
Object moduleName = "<unknown module name>";
101102
try {
102103
moduleName = pol.lookupAttributeStrict(importedModule, frame, __NAME__);
103-
String pkgname;
104104
try {
105-
pkgname = ensureCastToStringNode().execute(moduleName);
106-
} catch (CannotCastException castException){
105+
String pkgname = ensureCastToStringNode().execute(moduleName);
106+
String fullname = PString.cat(pkgname, ".", attr);
107+
writeNode.doWrite(frame, ensureGetItemNode().execute(frame, sysModules, fullname));
108+
} catch (CannotCastException cce){
107109
throw pe;
108110
}
109-
String fullname = PString.cat(pkgname, ".", attr);
110-
PythonModule sys = getContext().getCore().lookupBuiltinModule("sys");
111-
Object sysModules = pol.lookupAttribute(sys, frame, "modules");
112-
assert sysModules != PNone.NO_VALUE : "ImportFromNode: sys.modules was not found!";
113-
writeNode.doWrite(frame, ensureGetItemNode().execute(frame, sysModules, fullname));
114111
} catch (PException pe2) {
115112
Object modulePath = "unknown location";
116113
if (!getAttrErrorProfile.profileException(pe2, PythonBuiltinClassType.AttributeError)) {
@@ -131,6 +128,16 @@ public void executeVoid(VirtualFrame frame) {
131128
}
132129
}
133130

131+
private Object getSysModules(VirtualFrame frame, PythonObjectLibrary pol) {
132+
Object sysModules = getContext().getSysModules();
133+
if (sysModules == null) {
134+
PythonModule sys = getContext().getCore().lookupBuiltinModule("sys");
135+
sysModules = pol.lookupAttribute(sys, frame, "modules");
136+
}
137+
assert sysModules != PNone.NO_VALUE : "ImportFromNode: sys.modules was not found!";
138+
return sysModules;
139+
}
140+
134141
private static boolean isModuleInitialising(VirtualFrame frame, PythonObjectLibrary pol, Object importedModule) {
135142
Object spec = pol.lookupAttribute(importedModule, frame, __SPEC__);
136143
if (spec != PNone.NO_VALUE) {

0 commit comments

Comments
 (0)