Skip to content

Commit 5943b13

Browse files
committed
Immediately load memoryview implementation after C API init.
1 parent ac69a10 commit 5943b13

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

graalpython/com.oracle.graal.python.cext/src/capi.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,6 @@ static void initialize_capi() {
167167
initialize_exceptions();
168168
initialize_hashes();
169169
initialize_bufferprocs();
170-
171-
// we need to make 'memoryview' available
172-
PyImport_ImportModule("_memoryview");
173170
}
174171

175172
__attribute__((always_inline))

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ public boolean run() {
142142
@ImportStatic(Message.class)
143143
public abstract static class CreateDynamic extends PythonBuiltinNode {
144144
protected static final String INITIALIZE_CAPI = "initialize_capi";
145+
protected static final String IMPORT_NATIVE_MEMORYVIEW = "import_native_memoryview";
145146
private static final String LLVM_LANGUAGE = "llvm";
146147
@Child private SetItemNode setItemNode;
147148
@Child private Node isNullNode = Message.IS_NULL.createNode();
@@ -229,6 +230,10 @@ private void ensureCapiWasLoaded() {
229230
CallUnaryMethodNode callNode = CallUnaryMethodNode.create();
230231
callNode.executeObject(readNode.execute(getContext().getCore().lookupBuiltinModule("python_cext"), INITIALIZE_CAPI), capi);
231232
getContext().setCapiWasLoaded();
233+
234+
// initialization needs to be finished already but load memoryview implemenation
235+
// immediately
236+
callNode.executeObject(readNode.execute(getContext().getCore().lookupBuiltinModule("python_cext"), IMPORT_NATIVE_MEMORYVIEW), capi);
232237
}
233238
}
234239

graalpython/lib-graalpython/python_cext.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,6 +1147,11 @@ def initialize_capi(capi_library):
11471147
initialize_datetime_capi()
11481148

11491149

1150+
def import_native_memoryview(capi_library):
1151+
import _memoryview
1152+
assert _memoryview is not None
1153+
1154+
11501155
def initialize_datetime_capi():
11511156
import datetime
11521157

0 commit comments

Comments
 (0)