Skip to content

Commit d733754

Browse files
committed
Report legacy built-in shape for native C API classes
1 parent 3a8462f commit d733754

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2246,8 +2246,7 @@ static Object doGeneric(GraalHPyContext hpyContext, Object type, Object dataOutV
22462246
@Cached PythonObjectFactory factory,
22472247
@Cached PCallHPyFunction callMallocNode,
22482248
@Cached PCallHPyFunction callWriteDataNode,
2249-
@Cached InlinedExactClassProfile classProfile,
2250-
@Cached ReadAttributeFromObjectNode readAttributeFromObjectNode) {
2249+
@Cached InlinedExactClassProfile classProfile) {
22512250

22522251
Object profiledTypeObject = classProfile.profile(inliningTarget, type);
22532252

@@ -2278,7 +2277,7 @@ static Object doGeneric(GraalHPyContext hpyContext, Object type, Object dataOutV
22782277
defaultCallFunc = clazz.getHPyDefaultCallFunc();
22792278
}
22802279

2281-
int builtinShape = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(profiledTypeObject, readAttributeFromObjectNode);
2280+
int builtinShape = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(profiledTypeObject);
22822281
PythonObject pythonObject = createFromBuiltinShape(builtinShape, profiledTypeObject, dataPtr, factory);
22832282

22842283
if (destroyFunc != null) {
@@ -2340,8 +2339,7 @@ static Object doGeneric(GraalHPyContext hpyContext, Object type, Object args, lo
23402339
@Bind("this") Node inliningTarget,
23412340
@Cached PythonObjectFactory factory,
23422341
@Cached PCallHPyFunction callMallocNode,
2343-
@Cached InlinedExactClassProfile classProfile,
2344-
@Cached ReadAttributeFromObjectNode readAttributeFromObjectNode) {
2342+
@Cached InlinedExactClassProfile classProfile) {
23452343

23462344
Object profiledTypeObject = classProfile.profile(inliningTarget, type);
23472345
Object dataPtr = null;
@@ -2361,7 +2359,7 @@ static Object doGeneric(GraalHPyContext hpyContext, Object type, Object args, lo
23612359
}
23622360
}
23632361

2364-
int builtinShape = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(profiledTypeObject, readAttributeFromObjectNode);
2362+
int builtinShape = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(profiledTypeObject);
23652363
PythonObject pythonObject = GraalHPyNew.createFromBuiltinShape(builtinShape, type, dataPtr, factory);
23662364

23672365
if (destroyFunc != null) {
@@ -3618,10 +3616,9 @@ public abstract static class GraalHPyTypeGetBuiltinShape extends HPyBinaryContex
36183616
static int doGeneric(@SuppressWarnings("unused") Object hpyContext, Object typeObject,
36193617
@Bind("this") Node inliningTarget,
36203618
@Cached InlinedExactClassProfile classProfile,
3621-
@Cached ReadAttributeFromObjectNode readAttributeFromObjectNode,
36223619
@Cached PRaiseNode raiseNode) {
36233620
Object profiledTypeObject = classProfile.profile(inliningTarget, typeObject);
3624-
int result = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(profiledTypeObject, readAttributeFromObjectNode);
3621+
int result = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(profiledTypeObject);
36253622
if (result == -2) {
36263623
throw raiseNode.raise(TypeError, ErrorMessages.S_MUST_BE_S, "arg", "type");
36273624
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@
115115
import java.util.Arrays;
116116

117117
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
118-
import com.oracle.graal.python.builtins.objects.PNone;
118+
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
119119
import com.oracle.graal.python.builtins.objects.cext.common.CExtContext;
120120
import com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyContext.LLVMType;
121121
import com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyContextFunctions.GraalHPyNew;
122122
import com.oracle.graal.python.builtins.objects.type.PythonClass;
123123
import com.oracle.graal.python.builtins.objects.type.TypeBuiltins;
124-
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
124+
import com.oracle.graal.python.builtins.objects.type.TypeNodes.IsTypeNode;
125125
import com.oracle.truffle.api.CompilerDirectives;
126126
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
127127
import com.oracle.truffle.api.object.HiddenKey;
@@ -508,9 +508,12 @@ public static boolean isValidBuiltinShape(int i) {
508508
return HPyType_BUILTIN_SHAPE_LEGACY <= i && i <= HPyType_BUILTIN_SHAPE_LIST;
509509
}
510510

511-
public static int getBuiltinShapeFromHiddenAttribute(Object object, ReadAttributeFromObjectNode readNode) {
511+
public static int getBuiltinShapeFromHiddenAttribute(Object object) {
512512
if (object instanceof PythonClass pythonClass) {
513513
return pythonClass.getBuiltinShape();
514+
} else if (object instanceof PythonAbstractNativeObject) {
515+
assert IsTypeNode.getUncached().execute(object);
516+
return HPyType_BUILTIN_SHAPE_LEGACY;
514517
}
515518
return -2; // error
516519
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2575,7 +2575,7 @@ Object doGeneric(GraalHPyContext context, Object typeSpec, Object typeSpecParamA
25752575
Object baseFlagsObj = readHPyTypeFlagsNode.execute(baseClass, GraalHPyDef.TYPE_HPY_FLAGS);
25762576
baseFlags = baseFlagsObj != PNone.NO_VALUE ? (long) baseFlagsObj : 0;
25772577
}
2578-
int baseBuiltinShape = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(baseClass, readHPyTypeFlagsNode);
2578+
int baseBuiltinShape = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(baseClass);
25792579
checkInheritanceConstraints(flags, baseFlags, builtinShape, baseBuiltinShape > GraalHPyDef.HPyType_BUILTIN_SHAPE_LEGACY, raiseNode);
25802580
return newType;
25812581
} catch (CannotCastException | InteropException e) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2265,7 +2265,7 @@ public int ctxTypeGetBuiltinShape(long h_type) {
22652265
increment(HPyJNIUpcall.HPyTypeGetBuiltinShape);
22662266
assert GraalHPyBoxing.isBoxedHandle(h_type);
22672267
Object typeObject = context.bitsAsPythonObject(h_type);
2268-
int result = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(typeObject, ReadAttributeFromObjectNode.getUncachedForceType());
2268+
int result = GraalHPyDef.getBuiltinShapeFromHiddenAttribute(typeObject);
22692269
if (result == -2) {
22702270
return HPyRaiseNode.raiseIntUncached(context, -2, TypeError, ErrorMessages.S_MUST_BE_S, "arg", "type");
22712271
}

0 commit comments

Comments
 (0)