Skip to content

Commit ab25ec6

Browse files
committed
Check for type flags HPy_TPFLAGS_INTERNAL_PURE
1 parent 8616405 commit ab25ec6

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/hpy/GraalHPyDef.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ public LLVMType getLLVMFunctionType() {
307307

308308
/* type flags according to 'hpytype.h' */
309309
public static final long _Py_TPFLAGS_HEAPTYPE = (1L << 9);
310+
public static final long HPy_TPFLAGS_INTERNAL_PURE = (1L << 8);
310311
public static final long HPy_TPFLAGS_BASETYPE = (1L << 10);
311312
public static final long HPy_TPFLAGS_DEFAULT = _Py_TPFLAGS_HEAPTYPE;
312313

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/hpy/GraalHPyNodes.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
package com.oracle.graal.python.builtins.objects.cext.hpy;
4242

4343
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
44+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
4445
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyDef.HPySlot.HPY_TP_DESTROY;
4546
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyDef.HPySlot.HPY_TP_NEW;
4647
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyNativeSymbol.GRAAL_HPY_DEF_GET_GETSET;
@@ -1925,6 +1926,10 @@ static Object doGeneric(GraalHPyContext context, Object typeSpec, Object typeSpe
19251926

19261927
// store flags, basicsize, and itemsize to type
19271928
long flags = castToLong(valueLib, ptrLib.readMember(typeSpec, "flags"));
1929+
if ((flags & GraalHPyDef.HPy_TPFLAGS_INTERNAL_PURE) != 0) {
1930+
throw raiseNode.raise(TypeError, "HPy_TPFLAGS_INTERNAL_PURE should not be used directly, set .legacy=true instead");
1931+
}
1932+
19281933
long basicSize = castToLong(valueLib, ptrLib.readMember(typeSpec, "basicsize"));
19291934
long itemSize = castToLong(valueLib, ptrLib.readMember(typeSpec, "itemsize"));
19301935
writeAttributeToObjectNode.execute(newType, GraalHPyDef.TYPE_HPY_ITEMSIZE, itemSize);

0 commit comments

Comments
 (0)