Skip to content

Commit a578c04

Browse files
committed
Always write PyMethodDef pointer to built-in function
1 parent 9efcb71 commit a578c04

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMethodBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ static Object doNativeCallable(Node inliningTarget, Object methodDefPtr, Truffle
9898
Object f = createFunctionNode.execute(inliningTarget, name, methObj, wrapper, PNone.NO_VALUE, flags);
9999
assert f instanceof PBuiltinFunction;
100100
PBuiltinFunction func = (PBuiltinFunction) f;
101+
writeHiddenAttrNode.execute(inliningTarget, func, METHOD_DEF_PTR, methodDefPtr);
101102
dylib.put(func, T___NAME__, name);
102103
dylib.put(func, T___DOC__, doc);
103104
PBuiltinMethod method;
@@ -107,7 +108,6 @@ static Object doNativeCallable(Node inliningTarget, Object methodDefPtr, Truffle
107108
method = factory.createBuiltinMethod(self, func);
108109
}
109110
dylib.put(method, T___MODULE__, module);
110-
writeHiddenAttrNode.execute(inliningTarget, method, METHOD_DEF_PTR, methodDefPtr);
111111
return method;
112112
}
113113
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTypeBuiltins.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,8 @@ static Object classOrStatic(Node inliningTarget, Object methodDefPtr, TruffleStr
253253
@CachedLibrary(limit = "1") DynamicObjectLibrary dylib,
254254
@Exclusive @Cached CreateFunctionNode createFunctionNode) {
255255
Object func = createFunctionNode.execute(inliningTarget, name, methObj, wrapper, type, flags);
256+
assert func instanceof PythonAbstractObject;
257+
writeHiddenAttrNode.execute(inliningTarget, (PythonAbstractObject) func, METHOD_DEF_PTR, methodDefPtr);
256258
PythonObject function;
257259
if ((flags & METH_CLASS) != 0) {
258260
function = factory.createClassmethodFromCallableObj(func);
@@ -261,7 +263,6 @@ static Object classOrStatic(Node inliningTarget, Object methodDefPtr, TruffleStr
261263
}
262264
dylib.put(function, T___NAME__, name);
263265
dylib.put(function, T___DOC__, doc);
264-
writeHiddenAttrNode.execute(inliningTarget, function, METHOD_DEF_PTR, methodDefPtr);
265266
return function;
266267
}
267268

0 commit comments

Comments
 (0)