Skip to content

Commit 987324c

Browse files
committed
move cached interpreter state from PythonContext to PythonCore
1 parent 8f81b81 commit 987324c

File tree

3 files changed

+27
-26
lines changed

3 files changed

+27
-26
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,8 @@ private static PythonBuiltins[] initializeBuiltins(boolean nativeAccessAllowed)
535535

536536
private final Map<String, PythonModule> builtinModules = new HashMap<>();
537537
@CompilationFinal private PythonModule builtinsModule;
538+
@CompilationFinal private PythonModule sysModule;
539+
@CompilationFinal private PDict sysModules;
538540

539541
@CompilationFinal private PInt pyTrue;
540542
@CompilationFinal private PInt pyFalse;
@@ -646,6 +648,14 @@ public PythonModule getBuiltins() {
646648
return builtinsModule;
647649
}
648650

651+
public PythonModule getSysModule() {
652+
return sysModule;
653+
}
654+
655+
public PDict getSysModules() {
656+
return sysModules;
657+
}
658+
649659
@Override
650660
@TruffleBoundary
651661
public PException raise(PythonBuiltinClassType type, String format, Object... args) {
@@ -668,9 +678,8 @@ public void warn(PythonBuiltinClassType type, String format, Object... args) {
668678
* Returns the stderr object or signals error when stderr is "lost".
669679
*/
670680
public Object getStderr() {
671-
PythonModule sys = lookupBuiltinModule("sys");
672681
try {
673-
return PythonObjectLibrary.getUncached().lookupAttribute(sys, null, "stderr");
682+
return PythonObjectLibrary.getUncached().lookupAttribute(sysModule, null, "stderr");
674683
} catch (PException e) {
675684
try {
676685
getContext().getEnv().err().write("lost sys.stderr\n".getBytes());
@@ -682,8 +691,8 @@ public Object getStderr() {
682691
}
683692

684693
private void publishBuiltinModules() {
685-
PythonModule sysModule = builtinModules.get("sys");
686-
PDict sysModules = (PDict) sysModule.getAttribute("modules");
694+
sysModule = builtinModules.get("sys");
695+
sysModules = (PDict) sysModule.getAttribute("modules");
687696
for (Entry<String, PythonModule> entry : builtinModules.entrySet()) {
688697
sysModules.setItem(entry.getKey(), entry.getValue());
689698
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/PythonAbstractObject.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,7 +1056,7 @@ public boolean isDate(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
10561056
boolean mustRelease = gil.acquire();
10571057
try {
10581058
Object objType = getClassNode.execute(this);
1059-
PDict importedModules = PythonLanguage.getContext().getImportedModules();
1059+
PDict importedModules = PythonLanguage.getContext().getSysModules();
10601060
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
10611061
if (dateTimeModuleLoaded.profile(module != null)) {
10621062
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, DATE_TYPE, plib))) {
@@ -1089,7 +1089,7 @@ public LocalDate asDate(
10891089
boolean mustRelease = gil.acquire();
10901090
try {
10911091
Object objType = getClassNode.execute(this);
1092-
PDict importedModules = PythonLanguage.getContext().getImportedModules();
1092+
PDict importedModules = PythonLanguage.getContext().getSysModules();
10931093
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
10941094
if (dateTimeModuleLoaded.profile(module != null)) {
10951095
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, DATE_TYPE, plib))) {
@@ -1133,7 +1133,7 @@ public boolean isTime(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
11331133
boolean mustRelease = gil.acquire();
11341134
try {
11351135
Object objType = getClassNode.execute(this);
1136-
PDict importedModules = PythonLanguage.getContext().getImportedModules();
1136+
PDict importedModules = PythonLanguage.getContext().getSysModules();
11371137
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
11381138
if (dateTimeModuleLoaded.profile(module != null)) {
11391139
if (isSubtype.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtype.execute(objType, readType(readTypeNode, module, TIME_TYPE, plib))) {
@@ -1165,7 +1165,7 @@ public LocalTime asTime(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
11651165
boolean mustRelease = gil.acquire();
11661166
try {
11671167
Object objType = getClassNode.execute(this);
1168-
PDict importedModules = PythonLanguage.getContext().getImportedModules();
1168+
PDict importedModules = PythonLanguage.getContext().getSysModules();
11691169
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
11701170
if (dateTimeModuleLoaded.profile(module != null)) {
11711171
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, TIME_TYPE, plib))) {
@@ -1211,7 +1211,7 @@ public boolean isTimeZone(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
12111211
boolean mustRelease = gil.acquire();
12121212
try {
12131213
Object objType = getClassNode.execute(this);
1214-
PDict importedModules = PythonLanguage.getContext().getImportedModules();
1214+
PDict importedModules = PythonLanguage.getContext().getSysModules();
12151215
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
12161216
if (dateTimeModuleLoaded.profile(module != null)) {
12171217
if (isSubtype.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib))) {
@@ -1275,7 +1275,7 @@ public ZoneId asTimeZone(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
12751275
throw UnsupportedMessageException.create();
12761276
}
12771277
Object objType = getClassNode.execute(this);
1278-
PDict importedModules = PythonLanguage.getContext().getImportedModules();
1278+
PDict importedModules = PythonLanguage.getContext().getSysModules();
12791279
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
12801280
if (dateTimeModuleLoaded.profile(module != null)) {
12811281
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib))) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PythonContext.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
package com.oracle.graal.python.runtime;
2727

2828
import static com.oracle.graal.python.builtins.objects.thread.PThread.GRAALPYTHON_THREADS;
29-
import static com.oracle.graal.python.nodes.BuiltinNames.BUILTINS;
3029
import static com.oracle.graal.python.nodes.BuiltinNames.__BUILTINS__;
3130
import static com.oracle.graal.python.nodes.BuiltinNames.__MAIN__;
3231
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__ANNOTATIONS__;
@@ -407,9 +406,6 @@ static PythonThreadState getThreadState(PythonLanguage language) {
407406
private final ReentrantLock importLock = new ReentrantLock();
408407
@CompilationFinal private boolean isInitialized = false;
409408

410-
@CompilationFinal private PythonModule builtinsModule;
411-
@CompilationFinal private PDict sysModules;
412-
413409
private OutputStream out;
414410
private OutputStream err;
415411
private InputStream in;
@@ -523,16 +519,16 @@ public ReentrantLock getImportLock() {
523519
return importLock;
524520
}
525521

526-
public PDict getImportedModules() {
527-
return sysModules;
522+
public PythonModule getSysModule() {
523+
return core.getSysModule();
528524
}
529525

530526
public PDict getSysModules() {
531-
return sysModules;
527+
return core.getSysModules();
532528
}
533529

534530
public PythonModule getBuiltins() {
535-
return builtinsModule;
531+
return core.getBuiltins();
536532
}
537533

538534
public Object getPosixSupport() {
@@ -746,7 +742,7 @@ private String computeSysPath0() {
746742
* run-time package paths.
747743
*/
748744
private void patchPackagePaths(String from, String to) {
749-
for (Object v : HashingStorageLibrary.getUncached().values(sysModules.getDictStorage())) {
745+
for (Object v : HashingStorageLibrary.getUncached().values(getSysModules().getDictStorage())) {
750746
if (v instanceof PythonModule) {
751747
// Update module.__path__
752748
Object path = ((PythonModule) v).getAttribute(SpecialAttributeNames.__PATH__);
@@ -788,13 +784,9 @@ private void setupRuntimeInformation(boolean isPatching) {
788784
nativeZlib = NFIZlibSupport.createNative(this, "");
789785
nativeBz2lib = NFIBz2Support.createNative(this, "");
790786
nativeLZMA = NFILZMASupport.createNative(this, "");
791-
PythonModule sysModule = core.lookupBuiltinModule("sys");
792-
sysModules = (PDict) sysModule.getAttribute("modules");
793-
794-
builtinsModule = core.lookupBuiltinModule(BUILTINS);
795787

796788
mainModule = core.factory().createPythonModule(__MAIN__);
797-
mainModule.setAttribute(__BUILTINS__, builtinsModule);
789+
mainModule.setAttribute(__BUILTINS__, getBuiltins());
798790
mainModule.setAttribute(__ANNOTATIONS__, core.factory().createDict());
799791
try {
800792
PythonObjectLibrary.getUncached().setDict(mainModule, core.factory().createDictFixedStorage(mainModule));
@@ -803,7 +795,7 @@ private void setupRuntimeInformation(boolean isPatching) {
803795
throw new IllegalStateException("This cannot happen - the main module doesn't accept a __dict__", e);
804796
}
805797

806-
sysModules.setItem(__MAIN__, mainModule);
798+
getSysModules().setItem(__MAIN__, mainModule);
807799

808800
final String stdLibPlaceholder = "!stdLibHome!";
809801
if (ImageInfo.inImageBuildtimeCode()) {
@@ -1141,7 +1133,7 @@ private void cleanupHPyResources() {
11411133
@TruffleBoundary
11421134
private void shutdownThreads() {
11431135
LOGGER.fine("shutting down threads");
1144-
PDict importedModules = getImportedModules();
1136+
PDict importedModules = getSysModules();
11451137
HashingStorage dictStorage = importedModules.getDictStorage();
11461138
Object value = HashingStorageLibrary.getUncached().getItem(dictStorage, "threading");
11471139
if (value != null) {

0 commit comments

Comments
 (0)