Skip to content

Commit 30f3994

Browse files
committed
use the instanceShape from the PythonBuiltinClassType for PythonBuiltinClass
1 parent a352d3c commit 30f3994

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/PythonBuiltinClass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public final class PythonBuiltinClass extends PythonManagedClass {
4646
private final PythonBuiltinClassType type;
4747

4848
public PythonBuiltinClass(PythonBuiltinClassType builtinClass, PythonAbstractClass base) {
49-
super(PythonBuiltinClassType.PythonClass, PythonBuiltinClassType.PythonClass.newInstance(), builtinClass.getQualifiedName(), base);
49+
super(PythonBuiltinClassType.PythonClass, PythonBuiltinClassType.PythonClass.newInstance(), builtinClass.getInstanceShape(), builtinClass.getQualifiedName(), base);
5050
this.type = builtinClass;
5151
}
5252

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/PythonClass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
public final class PythonClass extends PythonManagedClass {
4848

4949
public PythonClass(LazyPythonClass typeClass, DynamicObject storage, String name, PythonAbstractClass[] baseClasses) {
50-
super(typeClass, storage, name, baseClasses);
50+
super(typeClass, storage, null, name, baseClasses);
5151
}
5252

5353
@ExportMessage

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/PythonManagedClass.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public abstract class PythonManagedClass extends PythonObject implements PythonA
6565
@CompilationFinal private Object sulongType;
6666

6767
@TruffleBoundary
68-
public PythonManagedClass(LazyPythonClass typeClass, DynamicObject storage, String name, PythonAbstractClass... baseClasses) {
68+
protected PythonManagedClass(LazyPythonClass typeClass, DynamicObject storage, Shape instanceShape, String name, PythonAbstractClass... baseClasses) {
6969
super(typeClass, storage);
7070
this.className = name;
7171

@@ -86,11 +86,15 @@ public PythonManagedClass(LazyPythonClass typeClass, DynamicObject storage, Stri
8686
setAttribute(__NAME__, getBaseName(name));
8787
setAttribute(__QUALNAME__, className);
8888
setAttribute(__DOC__, PNone.NONE);
89-
// provide our instances with a fresh shape tree
90-
if (PythonLanguage.getCurrent().singleContextAssumption.isValid()) {
91-
this.instanceShape = PythonObject.freshShape(this);
89+
if (instanceShape != null) {
90+
this.instanceShape = instanceShape;
9291
} else {
93-
this.instanceShape = PythonObject.freshShape();
92+
// provide our instances with a fresh shape tree
93+
if (PythonLanguage.getCurrent().singleContextAssumption.isValid()) {
94+
this.instanceShape = PythonObject.freshShape(this);
95+
} else {
96+
this.instanceShape = PythonObject.freshShape();
97+
}
9498
}
9599
}
96100

0 commit comments

Comments
 (0)