Skip to content

Commit 2d8e200

Browse files
msimaceksteve-s
authored andcommitted
Revert code that caused torch regression
1 parent 9745226 commit 2d8e200

File tree

1 file changed

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

1 file changed

+18
-2
lines changed

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyTypeObject__tp_del;
4949
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyTypeObject__tp_free;
5050
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyTypeObject__tp_vectorcall_offset;
51+
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyTypeObject__tp_weaklistoffset;
5152
import static com.oracle.graal.python.builtins.objects.type.TypeBuiltins.TYPE_ALLOC;
5253

5354
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
@@ -70,6 +71,7 @@
7071
import com.oracle.graal.python.builtins.objects.dict.PDict;
7172
import com.oracle.graal.python.builtins.objects.method.PDecoratedMethod;
7273
import com.oracle.graal.python.builtins.objects.str.PString;
74+
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
7375
import com.oracle.graal.python.builtins.objects.type.PythonManagedClass;
7476
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
7577
import com.oracle.graal.python.builtins.objects.type.TypeBuiltins;
@@ -80,11 +82,12 @@
8082
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetMroStorageNode;
8183
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetSubclassesNode;
8284
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetTypeFlagsNode;
83-
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetWeakListOffsetNode;
8485
import com.oracle.graal.python.builtins.objects.type.TypeNodesFactory.GetDictOffsetNodeGen;
8586
import com.oracle.graal.python.builtins.objects.type.TypeNodesFactory.GetTypeFlagsNodeGen;
8687
import com.oracle.graal.python.nodes.PNodeWithContext;
8788
import com.oracle.graal.python.nodes.SpecialAttributeNames;
89+
import com.oracle.graal.python.nodes.attributes.LookupAttributeInMRONode;
90+
import com.oracle.graal.python.nodes.attributes.LookupAttributeInMRONodeGen;
8891
import com.oracle.graal.python.nodes.attributes.LookupCallableSlotInMRONode;
8992
import com.oracle.graal.python.nodes.attributes.LookupNativeSlotNode;
9093
import com.oracle.graal.python.nodes.attributes.LookupNativeSlotNodeGen.LookupNativeGetattroSlotNodeGen;
@@ -262,6 +265,7 @@ static void initializeType(PythonClassNativeWrapper obj, Object mem,
262265

263266
PythonToNativeNode toNative = PythonToNativeNodeGen.getUncached();
264267
PythonToNativeNewRefNode toNativeNewRef = PythonToNativeNewRefNodeGen.getUncached();
268+
LookupAttributeInMRONode.Dynamic lookupAttrNode = LookupAttributeInMRONodeGen.DynamicNodeGen.getUncached();
265269
CastToTruffleStringNode castToStringNode = CastToTruffleStringNode.getUncached();
266270
CStructAccess.WritePointerNode writePtrNode = CStructAccessFactory.WritePointerNodeGen.getUncached();
267271
CStructAccess.WriteLongNode writeI64Node = CStructAccessFactory.WriteLongNodeGen.getUncached();
@@ -292,7 +296,19 @@ static void initializeType(PythonClassNativeWrapper obj, Object mem,
292296
writePtrNode.write(mem, CFields.PyTypeObject__tp_name, clazz.getClassNativeWrapper().getNameWrapper());
293297
writeI64Node.write(mem, CFields.PyTypeObject__tp_basicsize, GetBasicSizeNode.executeUncached(clazz));
294298
writeI64Node.write(mem, CFields.PyTypeObject__tp_itemsize, GetItemSizeNode.executeUncached(clazz));
295-
writeI64Node.write(mem, CFields.PyTypeObject__tp_weaklistoffset, GetWeakListOffsetNode.executeUncached(clazz));
299+
// writeI64Node.write(mem, CFields.PyTypeObject__tp_weaklistoffset,
300+
// GetWeakListOffsetNode.executeUncached(clazz));
301+
/*
302+
* TODO msimacek: this should use GetWeakListOffsetNode as in the commented out code
303+
* above. Unfortunately, it causes memory corruption in several libraries
304+
*/
305+
long weaklistoffset;
306+
if (clazz instanceof PythonBuiltinClass builtin) {
307+
weaklistoffset = builtin.getType().getWeaklistoffset();
308+
} else {
309+
weaklistoffset = LookupNativeI64MemberInMRONodeGen.getUncached().execute(clazz, PyTypeObject__tp_weaklistoffset, SpecialAttributeNames.T___WEAKLISTOFFSET__);
310+
}
311+
writeI64Node.write(mem, CFields.PyTypeObject__tp_weaklistoffset, weaklistoffset);
296312
writePtrNode.write(mem, CFields.PyTypeObject__tp_dealloc, lookup(clazz, PyTypeObject__tp_dealloc, TypeBuiltins.TYPE_DEALLOC));
297313
writeI64Node.write(mem, CFields.PyTypeObject__tp_vectorcall_offset, lookupSize(clazz, PyTypeObject__tp_vectorcall_offset, TypeBuiltins.TYPE_VECTORCALL_OFFSET));
298314
writePtrNode.write(mem, CFields.PyTypeObject__tp_getattr, nullValue);

0 commit comments

Comments
 (0)