@@ -1101,30 +1101,29 @@ static GetSolidBaseNode getUncached() {
11011101 protected Object getSolid (Object type ,
11021102 @ Cached GetBaseClassNode getBaseClassNode ,
11031103 @ Cached ("createForceType()" ) ReadAttributeFromObjectNode readAttr ,
1104- @ Cached GetInternalObjectArrayNode getArrayNode ,
11051104 @ Cached BranchProfile typeIsNotBase ,
11061105 @ Cached BranchProfile hasBase ,
11071106 @ 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 ,
11091108 hasNoBase , 0 );
11101109 }
11111110
11121111 @ 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 (),
11151114 BranchProfile .getUncached (), BranchProfile .getUncached (), depth );
11161115 }
11171116
11181117 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 ) {
11201119 CompilerAsserts .partialEvaluationConstant (depth );
11211120 Object base = getBaseClassNode .execute (type );
11221121 if (base != null ) {
11231122 hasBase .enter ();
11241123 if (depth > 3 ) {
1125- base = solidBaseTB (base , getBaseClassNode , context , getArrayNode , depth );
1124+ base = solidBaseTB (base , getBaseClassNode , context , depth );
11261125 } else {
1127- base = solidBase (base , getBaseClassNode , context , readAttr , getArrayNode , typeIsNotBase , hasBase ,
1126+ base = solidBase (base , getBaseClassNode , context , readAttr , typeIsNotBase , hasBase ,
11281127 hasNoBase , depth + 1 );
11291128 }
11301129 } else {
@@ -1138,16 +1137,16 @@ protected Object solidBase(Object type, GetBaseClassNode getBaseClassNode, Pytho
11381137 typeIsNotBase .enter ();
11391138
11401139 Object typeSlots = getSlotsFromType (type , readAttr );
1141- if (extraivars (type , base , typeSlots , getArrayNode )) {
1140+ if (extraivars (type , base , typeSlots )) {
11421141 return type ;
11431142 } else {
11441143 return base ;
11451144 }
11461145 }
11471146
11481147 @ 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 ) {
11511150 return true ;
11521151 }
11531152 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
11561155 }
11571156
11581157 @ TruffleBoundary
1159- private static int length (Object slotsObject , GetInternalObjectArrayNode getArrayNode ) {
1158+ private static int length (Object slotsObject ) {
11601159 assert PGuards .isString (slotsObject ) || PGuards .isPSequence (slotsObject ) : "slotsObject must be either a String or a PSequence" ;
11611160
11621161 if (PGuards .isString (slotsObject )) {
@@ -1166,7 +1165,7 @@ private static int length(Object slotsObject, GetInternalObjectArrayNode getArra
11661165
11671166 int count = 0 ;
11681167 int length = storage .length ();
1169- Object [] slots = getArrayNode .execute (storage );
1168+ Object [] slots = GetInternalObjectArrayNode . getUncached () .execute (storage );
11701169 for (int i = 0 ; i < length ; i ++) {
11711170 // omit __DICT__ and __WEAKREF__, they cause no class layout conflict
11721171 // see also test_slts.py#test_no_bases_have_class_layout_conflict
0 commit comments