Skip to content

Commit fb7f017

Browse files
committed
Fix creating native datetime subclasses
1 parent 545b825 commit fb7f017

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,7 +1593,7 @@ Object doNativeObjectIndirect(VirtualFrame frame, PythonManagedClass self, Objec
15931593
throw getReportAbstractClassNode().execute(frame, self);
15941594
}
15951595
Object nativeBaseClass = findFirstNativeBaseClass(getMroNode.execute(self));
1596-
return callNativeGenericNewNode(nativeBaseClass, varargs, kwargs);
1596+
return callNativeGenericNewNode(self, nativeBaseClass, varargs, kwargs);
15971597
}
15981598

15991599
@Specialization(guards = "isNativeClass(self)")
@@ -1603,7 +1603,7 @@ Object doNativeObjectDirect(VirtualFrame frame, Object self, Object[] varargs, P
16031603
if ((getTypeFlagsNode.execute(self) & TypeFlags.IS_ABSTRACT) != 0) {
16041604
throw getReportAbstractClassNode().execute(frame, self);
16051605
}
1606-
return callNativeGenericNewNode(self, varargs, kwargs);
1606+
return callNativeGenericNewNode(self, self, varargs, kwargs);
16071607
}
16081608

16091609
@SuppressWarnings("unused")
@@ -1622,7 +1622,7 @@ private static Object findFirstNativeBaseClass(PythonAbstractClass[] methodResol
16221622
throw new IllegalStateException("class needs native allocation but has not native base class");
16231623
}
16241624

1625-
private Object callNativeGenericNewNode(Object self, Object[] varargs, PKeyword[] kwargs) {
1625+
private Object callNativeGenericNewNode(Object type, Object nativeBase, Object[] varargs, PKeyword[] kwargs) {
16261626
if (callCapiFunction == null) {
16271627
CompilerDirectives.transferToInterpreterAndInvalidate();
16281628
callCapiFunction = insert(PCallCapiFunction.create());
@@ -1643,7 +1643,7 @@ private Object callNativeGenericNewNode(Object self, Object[] varargs, PKeyword[
16431643
PTuple targs = factory().createTuple(varargs);
16441644
PDict dkwargs = factory().createDict(kwarr);
16451645
return asPythonObjectNode.execute(
1646-
callCapiFunction.call(FUN_PY_OBJECT_NEW, toSulongNodes[0].execute(self), toSulongNodes[1].execute(self), toSulongNodes[2].execute(targs),
1646+
callCapiFunction.call(FUN_PY_OBJECT_NEW, toSulongNodes[0].execute(type), toSulongNodes[1].execute(nativeBase), toSulongNodes[2].execute(targs),
16471647
toSulongNodes[3].execute(dkwargs)));
16481648
}
16491649

0 commit comments

Comments
 (0)