@@ -1101,30 +1101,29 @@ static GetSolidBaseNode getUncached() {
1101
1101
protected Object getSolid (Object type ,
1102
1102
@ Cached GetBaseClassNode getBaseClassNode ,
1103
1103
@ Cached ("createForceType()" ) ReadAttributeFromObjectNode readAttr ,
1104
- @ Cached GetInternalObjectArrayNode getArrayNode ,
1105
1104
@ Cached BranchProfile typeIsNotBase ,
1106
1105
@ Cached BranchProfile hasBase ,
1107
1106
@ Cached BranchProfile hasNoBase ) {
1108
- return solidBase (type , getBaseClassNode , PythonContext .get (this ), readAttr , getArrayNode , typeIsNotBase , hasBase ,
1107
+ return solidBase (type , getBaseClassNode , PythonContext .get (this ), readAttr , typeIsNotBase , hasBase ,
1109
1108
hasNoBase , 0 );
1110
1109
}
1111
1110
1112
1111
@ TruffleBoundary
1113
- protected Object solidBaseTB (Object type , GetBaseClassNode getBaseClassNode , PythonContext context , GetInternalObjectArrayNode getArrayNode , int depth ) {
1114
- return solidBase (type , getBaseClassNode , context , ReadAttributeFromObjectNode .getUncachedForceType (), getArrayNode , BranchProfile .getUncached (),
1112
+ protected Object solidBaseTB (Object type , GetBaseClassNode getBaseClassNode , PythonContext context , int depth ) {
1113
+ return solidBase (type , getBaseClassNode , context , ReadAttributeFromObjectNode .getUncachedForceType (), BranchProfile .getUncached (),
1115
1114
BranchProfile .getUncached (), BranchProfile .getUncached (), depth );
1116
1115
}
1117
1116
1118
1117
protected Object solidBase (Object type , GetBaseClassNode getBaseClassNode , PythonContext context , ReadAttributeFromObjectNode readAttr ,
1119
- GetInternalObjectArrayNode getArrayNode , BranchProfile typeIsNotBase , BranchProfile hasBase , BranchProfile hasNoBase , int depth ) {
1118
+ BranchProfile typeIsNotBase , BranchProfile hasBase , BranchProfile hasNoBase , int depth ) {
1120
1119
CompilerAsserts .partialEvaluationConstant (depth );
1121
1120
Object base = getBaseClassNode .execute (type );
1122
1121
if (base != null ) {
1123
1122
hasBase .enter ();
1124
1123
if (depth > 3 ) {
1125
- base = solidBaseTB (base , getBaseClassNode , context , getArrayNode , depth );
1124
+ base = solidBaseTB (base , getBaseClassNode , context , depth );
1126
1125
} else {
1127
- base = solidBase (base , getBaseClassNode , context , readAttr , getArrayNode , typeIsNotBase , hasBase ,
1126
+ base = solidBase (base , getBaseClassNode , context , readAttr , typeIsNotBase , hasBase ,
1128
1127
hasNoBase , depth + 1 );
1129
1128
}
1130
1129
} else {
@@ -1138,16 +1137,16 @@ protected Object solidBase(Object type, GetBaseClassNode getBaseClassNode, Pytho
1138
1137
typeIsNotBase .enter ();
1139
1138
1140
1139
Object typeSlots = getSlotsFromType (type , readAttr );
1141
- if (extraivars (type , base , typeSlots , getArrayNode )) {
1140
+ if (extraivars (type , base , typeSlots )) {
1142
1141
return type ;
1143
1142
} else {
1144
1143
return base ;
1145
1144
}
1146
1145
}
1147
1146
1148
1147
@ TruffleBoundary
1149
- private static boolean extraivars (Object type , Object base , Object typeSlots , GetInternalObjectArrayNode getArrayNode ) {
1150
- if (typeSlots != null && length (typeSlots , getArrayNode ) != 0 ) {
1148
+ private static boolean extraivars (Object type , Object base , Object typeSlots ) {
1149
+ if (typeSlots != null && length (typeSlots ) != 0 ) {
1151
1150
return true ;
1152
1151
}
1153
1152
Object typeNewMethod = LookupAttributeInMRONode .lookup (type , __NEW__ , GetMroStorageNode .getUncached (), ReadAttributeFromObjectNode .getUncached (), true );
@@ -1156,7 +1155,7 @@ private static boolean extraivars(Object type, Object base, Object typeSlots, Ge
1156
1155
}
1157
1156
1158
1157
@ TruffleBoundary
1159
- private static int length (Object slotsObject , GetInternalObjectArrayNode getArrayNode ) {
1158
+ private static int length (Object slotsObject ) {
1160
1159
assert PGuards .isString (slotsObject ) || PGuards .isPSequence (slotsObject ) : "slotsObject must be either a String or a PSequence" ;
1161
1160
1162
1161
if (PGuards .isString (slotsObject )) {
@@ -1166,7 +1165,7 @@ private static int length(Object slotsObject, GetInternalObjectArrayNode getArra
1166
1165
1167
1166
int count = 0 ;
1168
1167
int length = storage .length ();
1169
- Object [] slots = getArrayNode .execute (storage );
1168
+ Object [] slots = GetInternalObjectArrayNode . getUncached () .execute (storage );
1170
1169
for (int i = 0 ; i < length ; i ++) {
1171
1170
// omit __DICT__ and __WEAKREF__, they cause no class layout conflict
1172
1171
// see also test_slts.py#test_no_bases_have_class_layout_conflict
0 commit comments