Skip to content

Commit 3a69128

Browse files
committed
Fix access to md_state in ExecDynamicNode
1 parent 9659aa2 commit 3a69128

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

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

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -83,9 +83,7 @@
8383
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
8484
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
8585
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.ExecModuleNode;
86-
import com.oracle.graal.python.builtins.objects.cext.capi.DynamicObjectNativeWrapper;
8786
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodesFactory.DefaultCheckFunctionResultNodeGen;
88-
import com.oracle.graal.python.builtins.objects.cext.capi.NativeMember;
8987
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.CheckFunctionResultNode;
9088
import com.oracle.graal.python.builtins.objects.cext.common.CExtContext;
9189
import com.oracle.graal.python.builtins.objects.cext.common.CExtContext.ModuleSpec;
@@ -95,7 +93,6 @@
9593
import com.oracle.graal.python.builtins.objects.cext.hpy.HPyExternalFunctionNodesFactory.HPyCheckHandleResultNodeGen;
9694
import com.oracle.graal.python.builtins.objects.code.CodeNodes;
9795
import com.oracle.graal.python.builtins.objects.code.PCode;
98-
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageGetItem;
9996
import com.oracle.graal.python.builtins.objects.function.PArguments;
10097
import com.oracle.graal.python.builtins.objects.ints.IntBuiltins;
10198
import com.oracle.graal.python.builtins.objects.memoryview.PMemoryView;
@@ -135,6 +132,7 @@
135132
import com.oracle.truffle.api.dsl.NodeFactory;
136133
import com.oracle.truffle.api.dsl.Specialization;
137134
import com.oracle.truffle.api.frame.VirtualFrame;
135+
import com.oracle.truffle.api.interop.InteropLibrary;
138136
import com.oracle.truffle.api.library.CachedLibrary;
139137
import com.oracle.truffle.api.profiles.ConditionProfile;
140138
import com.oracle.truffle.api.strings.TruffleString;
@@ -355,7 +353,7 @@ private HPyCheckFunctionResultNode getCheckHPyResultNode() {
355353
public abstract static class ExecDynamicNode extends PythonBuiltinNode {
356354
@Specialization
357355
int doPythonModule(VirtualFrame frame, PythonModule extensionModule,
358-
@Cached HashingStorageGetItem getItem,
356+
@CachedLibrary(limit = "1") InteropLibrary lib,
359357
@Cached ExecModuleNode execModuleNode) {
360358
Object nativeModuleDef = extensionModule.getNativeModuleDef();
361359
if (nativeModuleDef == null) {
@@ -364,15 +362,11 @@ int doPythonModule(VirtualFrame frame, PythonModule extensionModule,
364362

365363
/*
366364
* Check if module is already initialized. CPython does that by testing if 'md_state !=
367-
* NULL'. So, we do the same. Currently, we store this in the generic storage of the
368-
* native wrapper.
365+
* NULL'. So, we do the same.
369366
*/
370-
DynamicObjectNativeWrapper nativeWrapper = extensionModule.getNativeWrapper();
371-
if (nativeWrapper != null && nativeWrapper.getNativeMemberStore() != null) {
372-
Object item = getItem.execute(nativeWrapper.getNativeMemberStore(), NativeMember.MD_STATE.getMemberNameTruffleString());
373-
if (item != PNone.NO_VALUE) {
374-
return 0;
375-
}
367+
Object mdState = extensionModule.getNativeModuleState();
368+
if (mdState != null && !lib.isNull(mdState)) {
369+
return 0;
376370
}
377371

378372
PythonContext context = getContext();

0 commit comments

Comments
 (0)