Skip to content

Commit 40e5c72

Browse files
committed
Fix: Use helper to read kind of HPyType_SpecParam
1 parent 7ddc587 commit 40e5c72

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

graalpython/com.oracle.graal.python.cext/hpy/hpy.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,10 @@ HPyMember_FieldType graal_hpy_member_get_type(HPyMember *member_def) {
264264

265265
/* getters for HPyType_SpecParam */
266266

267+
HPyType_SpecParam_Kind graal_hpy_HPyType_SpecParam_get_kind(HPyType_SpecParam *def) {
268+
return def->kind;
269+
}
270+
267271
void* graal_hpy_HPyType_SpecParam_get_object(HPyType_SpecParam *def) {
268272
return UNWRAP(def->object);
269273
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public enum GraalHPyNativeSymbol implements NativeCExtSymbol {
8484
GRAAL_HPY_TYPE_SPEC_GET_DEFINES("graal_hpy_type_spec_get_defines"),
8585
GRAAL_HPY_TYPE_SPEC_GET_LEGECY_SLOTS("graal_hpy_type_spec_get_legacy_slots"),
8686
GRAAL_HPY_FROM_HPY_TYPE_SPEC_PARAM_ARRAY("graal_hpy_from_HPyType_SpecParam_array"),
87+
GRAAL_HPY_TYPE_SPEC_PARAM_GET_KIND("graal_hpy_HPyType_SpecParam_get_kind"),
8788
GRAAL_HPY_TYPE_SPEC_PARAM_GET_OBJECT("graal_hpy_HPyType_SpecParam_get_object"),
8889
GRAAL_HPY_MEMBER_GET_TYPE("graal_hpy_member_get_type"),
8990
GRAAL_HPY_SLOT_GET_SLOT("graal_hpy_slot_get_slot"),

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyNativeSymbol.GRAAL_HPY_MEMBER_GET_TYPE;
5454
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyNativeSymbol.GRAAL_HPY_METH_GET_SIGNATURE;
5555
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyNativeSymbol.GRAAL_HPY_SLOT_GET_SLOT;
56+
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyNativeSymbol.GRAAL_HPY_TYPE_SPEC_PARAM_GET_KIND;
5657
import static com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyNativeSymbol.GRAAL_HPY_TYPE_SPEC_PARAM_GET_OBJECT;
5758

5859
import java.math.BigInteger;
@@ -1810,7 +1811,7 @@ private static PTuple extractBases(GraalHPyContext context, Object typeSpecParam
18101811
Object specParam = ptrLib.readArrayElement(typeSpecParamArray, i);
18111812
// TODO(fa): directly read member as soon as this is supported by Sulong.
18121813
// Currently, we cannot pass struct-by-value via interop.
1813-
int specParamKind = castToJavaIntNode.execute(ptrLib.readMember(specParam, "kind"));
1814+
int specParamKind = castToJavaIntNode.execute(callHelperFunctionNode.call(context, GRAAL_HPY_TYPE_SPEC_PARAM_GET_KIND, specParam));
18141815
Object specParamObject = asPythonObjectNode.execute(context, callHelperFunctionNode.call(context, GRAAL_HPY_TYPE_SPEC_PARAM_GET_OBJECT, specParam));
18151816

18161817
switch (specParamKind) {

0 commit comments

Comments
 (0)