@@ -72,6 +72,10 @@ export class Int8Array extends ArrayBufferView {
72
72
return SUBARRAY < Int8Array , i8 > ( this , begin , end ) ;
73
73
}
74
74
75
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Int8Array {
76
+ return COPY_WITHIN < Int8Array , i8 > ( this , target , start , end ) ;
77
+ }
78
+
75
79
reduce < T > (
76
80
fn : ( accumulator : T , value : i8 , index : i32 , array : Int8Array ) => T ,
77
81
initialValue : T ,
@@ -188,6 +192,10 @@ export class Uint8Array extends ArrayBufferView {
188
192
return SUBARRAY < Uint8Array , u8 > ( this , begin , end ) ;
189
193
}
190
194
195
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Uint8Array {
196
+ return COPY_WITHIN < Uint8Array , u8 > ( this , target , start , end ) ;
197
+ }
198
+
191
199
reduce < T > (
192
200
fn : ( accumulator : T , value : u8 , index : i32 , array : Uint8Array ) => T ,
193
201
initialValue : T ,
@@ -304,6 +312,10 @@ export class Uint8ClampedArray extends ArrayBufferView {
304
312
return SUBARRAY < Uint8ClampedArray , u8 > ( this , start , end ) ;
305
313
}
306
314
315
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Uint8ClampedArray {
316
+ return COPY_WITHIN < Uint8ClampedArray , u8 > ( this , target , start , end ) ;
317
+ }
318
+
307
319
reduce < T > (
308
320
fn : ( accumulator : T , value : u8 , index : i32 , array : Uint8ClampedArray ) => T ,
309
321
initialValue : T ,
@@ -420,6 +432,10 @@ export class Int16Array extends ArrayBufferView {
420
432
return SUBARRAY < Int16Array , i16 > ( this , begin , end ) ;
421
433
}
422
434
435
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Int16Array {
436
+ return COPY_WITHIN < Int16Array , i16 > ( this , target , start , end ) ;
437
+ }
438
+
423
439
reduce < T > (
424
440
fn : ( accumulator : T , value : i16 , index : i32 , array : Int16Array ) => T ,
425
441
initialValue : T ,
@@ -536,6 +552,10 @@ export class Uint16Array extends ArrayBufferView {
536
552
return SUBARRAY < Uint16Array , u16 > ( this , begin , end ) ;
537
553
}
538
554
555
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Uint16Array {
556
+ return COPY_WITHIN < Uint16Array , u16 > ( this , target , start , end ) ;
557
+ }
558
+
539
559
reduce < T > (
540
560
fn : ( accumulator : T , value : u16 , index : i32 , array : Uint16Array ) => T ,
541
561
initialValue : T ,
@@ -652,6 +672,10 @@ export class Int32Array extends ArrayBufferView {
652
672
return SUBARRAY < Int32Array , i32 > ( this , begin , end ) ;
653
673
}
654
674
675
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Int32Array {
676
+ return COPY_WITHIN < Int32Array , i32 > ( this , target , start , end ) ;
677
+ }
678
+
655
679
reduce < T > (
656
680
fn : ( accumulator : T , value : i32 , index : i32 , array : Int32Array ) => T ,
657
681
initialValue : T ,
@@ -768,6 +792,10 @@ export class Uint32Array extends ArrayBufferView {
768
792
return SUBARRAY < Uint32Array , u32 > ( this , begin , end ) ;
769
793
}
770
794
795
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Uint32Array {
796
+ return COPY_WITHIN < Uint32Array , u32 > ( this , target , start , end ) ;
797
+ }
798
+
771
799
reduce < T > (
772
800
fn : ( accumulator : T , value : u32 , index : i32 , array : Uint32Array ) => T ,
773
801
initialValue : T ,
@@ -884,6 +912,10 @@ export class Int64Array extends ArrayBufferView {
884
912
return SUBARRAY < Int64Array , i64 > ( this , begin , end ) ;
885
913
}
886
914
915
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Int64Array {
916
+ return COPY_WITHIN < Int64Array , i64 > ( this , target , start , end ) ;
917
+ }
918
+
887
919
reduce < T > (
888
920
fn : ( accumulator : T , value : i64 , index : i32 , array : Int64Array ) => T ,
889
921
initialValue : T ,
@@ -1000,6 +1032,10 @@ export class Uint64Array extends ArrayBufferView {
1000
1032
return SUBARRAY < Uint64Array , u64 > ( this , begin , end ) ;
1001
1033
}
1002
1034
1035
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Uint64Array {
1036
+ return COPY_WITHIN < Uint64Array , u64 > ( this , target , start , end ) ;
1037
+ }
1038
+
1003
1039
reduce < T > (
1004
1040
fn : ( accumulator : T , value : u64 , index : i32 , array : Uint64Array ) => T ,
1005
1041
initialValue : T ,
@@ -1116,6 +1152,10 @@ export class Float32Array extends ArrayBufferView {
1116
1152
return SUBARRAY < Float32Array , f32 > ( this , begin , end ) ;
1117
1153
}
1118
1154
1155
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Float32Array {
1156
+ return COPY_WITHIN < Float32Array , f32 > ( this , target , start , end ) ;
1157
+ }
1158
+
1119
1159
reduce < T > (
1120
1160
fn : ( accumulator : T , value : f32 , index : i32 , array : Float32Array ) => T ,
1121
1161
initialValue : T ,
@@ -1232,6 +1272,10 @@ export class Float64Array extends ArrayBufferView {
1232
1272
return SUBARRAY < Float64Array , f64 > ( this , begin , end ) ;
1233
1273
}
1234
1274
1275
+ copyWithin ( target : i32 , start : i32 , end : i32 = i32 . MAX_VALUE ) : Float64Array {
1276
+ return COPY_WITHIN < Float64Array , f64 > ( this , target , start , end ) ;
1277
+ }
1278
+
1235
1279
reduce < T > (
1236
1280
fn : ( accumulator : T , value : f64 , index : i32 , array : Float64Array ) => T ,
1237
1281
initialValue : T ,
@@ -1361,6 +1405,31 @@ function SUBARRAY<TArray extends ArrayBufferView, T>(
1361
1405
return out ;
1362
1406
}
1363
1407
1408
+ // @ts -ignore: decorator
1409
+ @inline
1410
+ function COPY_WITHIN < TArray extends ArrayBufferView , T > (
1411
+ array : TArray ,
1412
+ target : i32 ,
1413
+ start : i32 ,
1414
+ end : i32
1415
+ ) : TArray {
1416
+ var len = array . length ;
1417
+ var dataStart = array . dataStart ;
1418
+
1419
+ end = min < i32 > ( end , len ) ;
1420
+ var to = target < 0 ? max ( len + target , 0 ) : min ( target , len ) ;
1421
+ var from = start < 0 ? max ( len + start , 0 ) : min ( start , len ) ;
1422
+ var last = end < 0 ? max ( len + end , 0 ) : min ( end , len ) ;
1423
+ var count = min ( last - from , len - to ) ;
1424
+
1425
+ memory . copy (
1426
+ dataStart + ( < usize > to << alignof < T > ( ) ) ,
1427
+ dataStart + ( < usize > from << alignof < T > ( ) ) ,
1428
+ < usize > count << alignof < T > ( )
1429
+ ) ;
1430
+ return array ;
1431
+ }
1432
+
1364
1433
// @ts -ignore: decorator
1365
1434
@inline
1366
1435
function REDUCE < TArray extends ArrayBufferView , T , TRet > (
0 commit comments