Skip to content

Commit 35f0ce5

Browse files
committed
Store PyMethodDef to func in CreateMethodNode
1 parent 01079ea commit 35f0ce5

File tree

1 file changed

+4
-1
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi

1 file changed

+4
-1
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/CExtNodes.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyModuleDef__m_slots;
5959
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyObject__ob_type;
6060
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyTypeObject__tp_as_buffer;
61+
import static com.oracle.graal.python.nodes.HiddenAttr.METHOD_DEF_PTR;
6162
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___COMPLEX__;
6263
import static com.oracle.graal.python.nodes.StringLiterals.J_NFI_LANGUAGE;
6364
import static com.oracle.graal.python.runtime.exception.PythonErrorType.SystemError;
@@ -1825,12 +1826,13 @@ public abstract static class CreateMethodNode extends PNodeWithContext {
18251826
public abstract PBuiltinFunction execute(Node inliningTarget, Object legacyMethodDef, int element);
18261827

18271828
@Specialization
1828-
static PBuiltinFunction doIt(Object methodDef, int element,
1829+
static PBuiltinFunction doIt(Node inliningTarget, Object methodDef, int element,
18291830
@CachedLibrary(limit = "2") InteropLibrary resultLib,
18301831
@Cached(inline = false) CStructAccess.ReadPointerNode readPointerNode,
18311832
@Cached(inline = false) CStructAccess.ReadI32Node readI32Node,
18321833
@Cached(inline = false) FromCharPointerNode fromCharPointerNode,
18331834
@Cached(inline = false) PythonObjectFactory factory,
1835+
@Cached HiddenAttr.WriteNode writeHiddenAttrNode,
18341836
@Cached(inline = false) WriteAttributeToDynamicObjectNode writeAttributeToDynamicObjectNode) {
18351837
Object methodNamePtr = readPointerNode.readStructArrayElement(methodDef, element, PyMethodDef__ml_name);
18361838
if (resultLib.isNull(methodNamePtr) || (methodNamePtr instanceof Long && ((long) methodNamePtr) == 0)) {
@@ -1853,6 +1855,7 @@ static PBuiltinFunction doIt(Object methodDef, int element,
18531855
mlMethObj = CExtContext.ensureExecutable(mlMethObj, sig);
18541856
PKeyword[] kwDefaults = ExternalFunctionNodes.createKwDefaults(mlMethObj);
18551857
PBuiltinFunction function = factory.createBuiltinFunction(methodName, null, PythonUtils.EMPTY_OBJECT_ARRAY, kwDefaults, flags, callTarget);
1858+
writeHiddenAttrNode.execute(inliningTarget, function, METHOD_DEF_PTR, methodDef);
18561859

18571860
// write doc string; we need to directly write to the storage otherwise it is disallowed
18581861
// writing to builtin types.

0 commit comments

Comments
 (0)