109
109
import com .oracle .graal .python .runtime .exception .PException ;
110
110
import com .oracle .graal .python .runtime .object .PythonObjectFactory ;
111
111
import com .oracle .graal .python .runtime .sequence .PSequence ;
112
+ import com .oracle .graal .python .runtime .sequence .storage .ArrayBasedSequenceStorage ;
112
113
import com .oracle .graal .python .runtime .sequence .storage .BasicSequenceStorage ;
113
114
import com .oracle .graal .python .runtime .sequence .storage .BoolSequenceStorage ;
114
115
import com .oracle .graal .python .runtime .sequence .storage .ByteSequenceStorage ;
@@ -1180,8 +1181,8 @@ protected static void nothing(SequenceStorage storage, int distPos, int srcPos,
1180
1181
}
1181
1182
1182
1183
@ 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 ) {
1185
1186
Object array = cachedClass .cast (storage ).getInternalArrayObject ();
1186
1187
PythonUtils .arraycopy (array , srcPos , array , distPos , length );
1187
1188
}
@@ -1214,8 +1215,8 @@ protected static void nothing(SequenceStorage dist, int distPos, SequenceStorage
1214
1215
}
1215
1216
1216
1217
@ 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 ) {
1219
1220
Object distArray = cachedClass .cast (dist ).getInternalArrayObject ();
1220
1221
Object srcArray = cachedClass .cast (src ).getInternalArrayObject ();
1221
1222
PythonUtils .arraycopy (srcArray , srcPos , distArray , distPos , length );
@@ -1314,10 +1315,10 @@ abstract static class SetStorageSliceNode extends Node {
1314
1315
public abstract void execute (SequenceStorage s , SliceInfo info , SequenceStorage iterable , boolean canGeneralize );
1315
1316
1316
1317
@ 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 );
1321
1322
selfProfiled .setInternalArrayObject (otherProfiled .getCopyOfInternalArrayObject ());
1322
1323
selfProfiled .setNewLength (otherProfiled .length ());
1323
1324
selfProfiled .minimizeCapacity ();
@@ -1835,12 +1836,12 @@ static SequenceStorage doRightEmpty(@SuppressWarnings("unused") EmptySequenceSto
1835
1836
}
1836
1837
1837
1838
@ 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 ,
1839
1840
@ Bind ("this" ) Node inliningTarget ,
1840
- @ Cached ("left.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1841
+ @ Cached ("left.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
1841
1842
@ 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 );
1844
1845
Object arr1 = leftProfiled .getInternalArrayObject ();
1845
1846
int len1 = leftProfiled .length ();
1846
1847
Object arr2 = rightProfiled .getInternalArrayObject ();
@@ -1851,13 +1852,13 @@ static SequenceStorage doManagedManagedSameTypeInplace(@SuppressWarnings("unused
1851
1852
}
1852
1853
1853
1854
@ 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 ,
1855
1856
@ Bind ("this" ) Node inliningTarget ,
1856
- @ Cached ("left.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1857
+ @ Cached ("left.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
1857
1858
@ 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 );
1861
1862
Object arr1 = leftProfiled .getInternalArrayObject ();
1862
1863
int len1 = leftProfiled .length ();
1863
1864
Object arr2 = rightProfiled .getInternalArrayObject ();
@@ -1868,12 +1869,12 @@ static SequenceStorage doManagedManagedSameType(BasicSequenceStorage dest, Basic
1868
1869
}
1869
1870
1870
1871
@ 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 ,
1872
1873
@ Bind ("this" ) Node inliningTarget ,
1873
- @ Cached ("dest.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1874
+ @ Cached ("dest.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
1874
1875
@ 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 );
1877
1878
Object arr2 = rightProfiled .getInternalArrayObject ();
1878
1879
int len2 = rightProfiled .length ();
1879
1880
PythonUtils .arraycopy (arr2 , 0 , destProfiled .getInternalArrayObject (), 0 , len2 );
@@ -1882,12 +1883,12 @@ static SequenceStorage doEmptyManagedSameType(BasicSequenceStorage dest, @Suppre
1882
1883
}
1883
1884
1884
1885
@ 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 ,
1886
1887
@ Bind ("this" ) Node inliningTarget ,
1887
- @ Cached ("left.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ,
1888
+ @ Cached ("left.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ,
1888
1889
@ 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 );
1891
1892
Object arr1 = leftProfiled .getInternalArrayObject ();
1892
1893
int len1 = leftProfiled .length ();
1893
1894
PythonUtils .arraycopy (arr1 , 0 , destProfiled .getInternalArrayObject (), 0 , len1 );
@@ -2259,15 +2260,15 @@ ObjectSequenceStorage doObjectSingleElement(ObjectSequenceStorage s, int times,
2259
2260
}
2260
2261
2261
2262
@ Specialization (limit = "MAX_BASIC_STORAGES" , guards = {"times > 0" , "!isNative(s)" , "s.getClass() == cachedClass" })
2262
- SequenceStorage doManaged ( BasicSequenceStorage s , int times ,
2263
+ SequenceStorage doArrayBasedManaged ( ArrayBasedSequenceStorage s , int times ,
2263
2264
@ Shared @ Cached PRaiseNode raiseNode ,
2264
- @ Cached ("s.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ) {
2265
+ @ Cached ("s.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ) {
2265
2266
try {
2266
- BasicSequenceStorage profiled = cachedClass .cast (s );
2267
+ ArrayBasedSequenceStorage profiled = cachedClass .cast (s );
2267
2268
Object arr1 = profiled .getInternalArrayObject ();
2268
2269
int len = profiled .length ();
2269
2270
int newLength = PythonUtils .multiplyExact (len , times );
2270
- BasicSequenceStorage repeated = profiled .createEmpty (newLength );
2271
+ ArrayBasedSequenceStorage repeated = profiled .createEmpty (newLength );
2271
2272
Object destArr = repeated .getInternalArrayObject ();
2272
2273
repeat (destArr , arr1 , len , times );
2273
2274
repeated .setNewLength (newLength );
@@ -2279,7 +2280,7 @@ SequenceStorage doManaged(BasicSequenceStorage s, int times,
2279
2280
}
2280
2281
}
2281
2282
2282
- @ Specialization (replaces = "doManaged " , guards = "times > 0" )
2283
+ @ Specialization (replaces = "doArrayBasedManaged " , guards = "times > 0" )
2283
2284
@ SuppressWarnings ("truffle-static-method" )
2284
2285
SequenceStorage doGeneric (SequenceStorage s , int times ,
2285
2286
@ Bind ("this" ) Node inliningTarget ,
@@ -2935,8 +2936,8 @@ public static Object[] executeUncached(SequenceStorage s) {
2935
2936
}
2936
2937
2937
2938
@ Specialization (limit = "MAX_BASIC_STORAGES" , guards = "s.getClass() == cachedClass" )
2938
- static Object [] doTyped ( BasicSequenceStorage s ,
2939
- @ Cached ("s.getClass()" ) Class <? extends BasicSequenceStorage > cachedClass ) {
2939
+ static Object [] doArrayBased ( ArrayBasedSequenceStorage s ,
2940
+ @ Cached ("s.getClass()" ) Class <? extends ArrayBasedSequenceStorage > cachedClass ) {
2940
2941
return cachedClass .cast (s ).getCopyOfInternalArray ();
2941
2942
}
2942
2943
0 commit comments