109109import com .oracle .graal .python .runtime .exception .PException ;
110110import com .oracle .graal .python .runtime .object .PythonObjectFactory ;
111111import com .oracle .graal .python .runtime .sequence .PSequence ;
112+ import com .oracle .graal .python .runtime .sequence .storage .ArrayBasedSequenceStorage ;
112113import com .oracle .graal .python .runtime .sequence .storage .BasicSequenceStorage ;
113114import com .oracle .graal .python .runtime .sequence .storage .BoolSequenceStorage ;
114115import com .oracle .graal .python .runtime .sequence .storage .ByteSequenceStorage ;
@@ -1180,8 +1181,8 @@ protected static void nothing(SequenceStorage storage, int distPos, int srcPos,
11801181 }
11811182
11821183 @ Specialization (limit = "MAX_BASIC_STORAGES" , guards = {"length > 0" , "storage.getClass() == cachedClass" })
1183- protected static void doMove ( BasicSequenceStorage storage , int distPos , int srcPos , int length ,
1184- @ Cached ("storage.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ) {
1184+ protected static void doArrayBasedMove ( ArrayBasedSequenceStorage storage , int distPos , int srcPos , int length ,
1185+ @ Cached ("storage.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ) {
11851186 Object array = cachedClass .cast (storage ).getInternalArrayObject ();
11861187 PythonUtils .arraycopy (array , srcPos , array , distPos , length );
11871188 }
@@ -1214,8 +1215,8 @@ protected static void nothing(SequenceStorage dist, int distPos, SequenceStorage
12141215 }
12151216
12161217 @ Specialization (limit = "MAX_BASIC_STORAGES" , guards = {"length > 0" , "dist.getClass() == cachedClass" , "src.getClass() == dist.getClass()" })
1217- protected static void doCopy ( BasicSequenceStorage dist , int distPos , BasicSequenceStorage src , int srcPos , int length ,
1218- @ Cached ("dist.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ) {
1218+ protected static void doArrayBasedCopy ( ArrayBasedSequenceStorage dist , int distPos , ArrayBasedSequenceStorage src , int srcPos , int length ,
1219+ @ Cached ("dist.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ) {
12191220 Object distArray = cachedClass .cast (dist ).getInternalArrayObject ();
12201221 Object srcArray = cachedClass .cast (src ).getInternalArrayObject ();
12211222 PythonUtils .arraycopy (srcArray , srcPos , distArray , distPos , length );
@@ -1314,10 +1315,10 @@ abstract static class SetStorageSliceNode extends Node {
13141315 public abstract void execute (SequenceStorage s , SliceInfo info , SequenceStorage iterable , boolean canGeneralize );
13151316
13161317 @ Specialization (limit = "MAX_BASIC_STORAGES" , guards = {"self.getClass() == cachedClass" , "self.getClass() == sequence.getClass()" , "replacesWholeSequence(cachedClass, self, info)" })
1317- static void doWholeSequence (BasicSequenceStorage self , @ SuppressWarnings ("unused" ) SliceInfo info , BasicSequenceStorage sequence , @ SuppressWarnings ("unused" ) boolean canGeneralize ,
1318- @ Cached ("self.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ) {
1319- BasicSequenceStorage selfProfiled = cachedClass .cast (self );
1320- BasicSequenceStorage otherProfiled = cachedClass .cast (sequence );
1318+ static void doWholeSequence (ArrayBasedSequenceStorage self , @ SuppressWarnings ("unused" ) SliceInfo info , ArrayBasedSequenceStorage sequence , @ SuppressWarnings ("unused" ) boolean canGeneralize ,
1319+ @ Cached ("self.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ) {
1320+ ArrayBasedSequenceStorage selfProfiled = cachedClass .cast (self );
1321+ ArrayBasedSequenceStorage otherProfiled = cachedClass .cast (sequence );
13211322 selfProfiled .setInternalArrayObject (otherProfiled .getCopyOfInternalArrayObject ());
13221323 selfProfiled .setNewLength (otherProfiled .length ());
13231324 selfProfiled .minimizeCapacity ();
@@ -1835,12 +1836,12 @@ static SequenceStorage doRightEmpty(@SuppressWarnings("unused") EmptySequenceSto
18351836 }
18361837
18371838 @ Specialization (guards = {"dest == left" , "left.getClass() == right.getClass()" , "cachedClass == left.getClass()" }, limit = "1" )
1838- static SequenceStorage doManagedManagedSameTypeInplace (@ SuppressWarnings ("unused" ) BasicSequenceStorage dest , BasicSequenceStorage left , BasicSequenceStorage right ,
1839+ static SequenceStorage doArrayBasedManagedManagedSameTypeInplace (@ SuppressWarnings ("unused" ) ArrayBasedSequenceStorage dest , ArrayBasedSequenceStorage left , ArrayBasedSequenceStorage right ,
18391840 @ Bind ("this" ) Node inliningTarget ,
1840- @ Cached ("left.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1841+ @ Cached ("left.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
18411842 @ Shared @ Cached SetLenNode setLenNode ) {
1842- BasicSequenceStorage leftProfiled = cachedClass .cast (left );
1843- BasicSequenceStorage rightProfiled = cachedClass .cast (right );
1843+ ArrayBasedSequenceStorage leftProfiled = cachedClass .cast (left );
1844+ ArrayBasedSequenceStorage rightProfiled = cachedClass .cast (right );
18441845 Object arr1 = leftProfiled .getInternalArrayObject ();
18451846 int len1 = leftProfiled .length ();
18461847 Object arr2 = rightProfiled .getInternalArrayObject ();
@@ -1851,13 +1852,13 @@ static SequenceStorage doManagedManagedSameTypeInplace(@SuppressWarnings("unused
18511852 }
18521853
18531854 @ Specialization (guards = {"dest != left" , "dest.getClass() == left.getClass()" , "left.getClass() == right.getClass()" , "cachedClass == dest.getClass()" }, limit = "1" )
1854- static SequenceStorage doManagedManagedSameType ( BasicSequenceStorage dest , BasicSequenceStorage left , BasicSequenceStorage right ,
1855+ static SequenceStorage doArrayBasedManagedManagedSameType ( ArrayBasedSequenceStorage dest , ArrayBasedSequenceStorage left , ArrayBasedSequenceStorage right ,
18551856 @ Bind ("this" ) Node inliningTarget ,
1856- @ Cached ("left.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1857+ @ Cached ("left.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
18571858 @ Shared @ Cached SetLenNode setLenNode ) {
1858- BasicSequenceStorage destProfiled = cachedClass .cast (dest );
1859- BasicSequenceStorage leftProfiled = cachedClass .cast (left );
1860- BasicSequenceStorage rightProfiled = cachedClass .cast (right );
1859+ ArrayBasedSequenceStorage destProfiled = cachedClass .cast (dest );
1860+ ArrayBasedSequenceStorage leftProfiled = cachedClass .cast (left );
1861+ ArrayBasedSequenceStorage rightProfiled = cachedClass .cast (right );
18611862 Object arr1 = leftProfiled .getInternalArrayObject ();
18621863 int len1 = leftProfiled .length ();
18631864 Object arr2 = rightProfiled .getInternalArrayObject ();
@@ -1868,12 +1869,12 @@ static SequenceStorage doManagedManagedSameType(BasicSequenceStorage dest, Basic
18681869 }
18691870
18701871 @ Specialization (guards = {"dest.getClass() == right.getClass()" , "cachedClass == dest.getClass()" }, limit = "1" )
1871- static SequenceStorage doEmptyManagedSameType ( BasicSequenceStorage dest , @ SuppressWarnings ("unused" ) EmptySequenceStorage left , BasicSequenceStorage right ,
1872+ static SequenceStorage doArrayBasedEmptyManagedSameType ( ArrayBasedSequenceStorage dest , @ SuppressWarnings ("unused" ) EmptySequenceStorage left , ArrayBasedSequenceStorage right ,
18721873 @ Bind ("this" ) Node inliningTarget ,
1873- @ Cached ("dest.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1874+ @ Cached ("dest.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
18741875 @ Shared @ Cached SetLenNode setLenNode ) {
1875- BasicSequenceStorage destProfiled = cachedClass .cast (dest );
1876- BasicSequenceStorage rightProfiled = cachedClass .cast (right );
1876+ ArrayBasedSequenceStorage destProfiled = cachedClass .cast (dest );
1877+ ArrayBasedSequenceStorage rightProfiled = cachedClass .cast (right );
18771878 Object arr2 = rightProfiled .getInternalArrayObject ();
18781879 int len2 = rightProfiled .length ();
18791880 PythonUtils .arraycopy (arr2 , 0 , destProfiled .getInternalArrayObject (), 0 , len2 );
@@ -1882,12 +1883,12 @@ static SequenceStorage doEmptyManagedSameType(BasicSequenceStorage dest, @Suppre
18821883 }
18831884
18841885 @ Specialization (guards = {"dest.getClass() == left.getClass()" , "cachedClass == dest.getClass()" }, limit = "1" )
1885- static SequenceStorage doManagedEmptySameType ( BasicSequenceStorage dest , BasicSequenceStorage left , @ SuppressWarnings ("unused" ) EmptySequenceStorage right ,
1886+ static SequenceStorage doArrayBasedManagedEmptySameType ( ArrayBasedSequenceStorage dest , ArrayBasedSequenceStorage left , @ SuppressWarnings ("unused" ) EmptySequenceStorage right ,
18861887 @ Bind ("this" ) Node inliningTarget ,
1887- @ Cached ("left.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1888+ @ Cached ("left.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
18881889 @ Shared @ Cached SetLenNode setLenNode ) {
1889- BasicSequenceStorage destProfiled = cachedClass .cast (dest );
1890- BasicSequenceStorage leftProfiled = cachedClass .cast (left );
1890+ ArrayBasedSequenceStorage destProfiled = cachedClass .cast (dest );
1891+ ArrayBasedSequenceStorage leftProfiled = cachedClass .cast (left );
18911892 Object arr1 = leftProfiled .getInternalArrayObject ();
18921893 int len1 = leftProfiled .length ();
18931894 PythonUtils .arraycopy (arr1 , 0 , destProfiled .getInternalArrayObject (), 0 , len1 );
@@ -2258,15 +2259,15 @@ ObjectSequenceStorage doObjectSingleElement(ObjectSequenceStorage s, int times,
22582259 }
22592260
22602261 @ Specialization (limit = "MAX_BASIC_STORAGES" , guards = {"times > 0" , "!isNative(s)" , "s.getClass() == cachedClass" })
2261- SequenceStorage doManaged ( BasicSequenceStorage s , int times ,
2262+ SequenceStorage doArrayBasedManaged ( ArrayBasedSequenceStorage s , int times ,
22622263 @ Shared @ Cached PRaiseNode raiseNode ,
2263- @ Cached ("s.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ) {
2264+ @ Cached ("s.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ) {
22642265 try {
2265- BasicSequenceStorage profiled = cachedClass .cast (s );
2266+ ArrayBasedSequenceStorage profiled = cachedClass .cast (s );
22662267 Object arr1 = profiled .getInternalArrayObject ();
22672268 int len = profiled .length ();
22682269 int newLength = PythonUtils .multiplyExact (len , times );
2269- BasicSequenceStorage repeated = profiled .createEmpty (newLength );
2270+ ArrayBasedSequenceStorage repeated = profiled .createEmpty (newLength );
22702271 Object destArr = repeated .getInternalArrayObject ();
22712272 repeat (destArr , arr1 , len , times );
22722273 repeated .setNewLength (newLength );
@@ -2278,7 +2279,7 @@ SequenceStorage doManaged(BasicSequenceStorage s, int times,
22782279 }
22792280 }
22802281
2281- @ Specialization (replaces = "doManaged " , guards = "times > 0" )
2282+ @ Specialization (replaces = "doArrayBasedManaged " , guards = "times > 0" )
22822283 @ SuppressWarnings ("truffle-static-method" )
22832284 SequenceStorage doGeneric (SequenceStorage s , int times ,
22842285 @ Bind ("this" ) Node inliningTarget ,
@@ -2931,8 +2932,8 @@ public static Object[] executeUncached(SequenceStorage s) {
29312932 }
29322933
29332934 @ Specialization (limit = "MAX_BASIC_STORAGES" , guards = "s.getClass() == cachedClass" )
2934- static Object [] doTyped ( BasicSequenceStorage s ,
2935- @ Cached ("s.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ) {
2935+ static Object [] doArrayBased ( ArrayBasedSequenceStorage s ,
2936+ @ Cached ("s.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ) {
29362937 return cachedClass .cast (s ).getCopyOfInternalArray ();
29372938 }
29382939
0 commit comments