|
1 | 1 | import { COMPARATOR, SORT } from "./util/sort"; |
2 | 2 | import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_NOTIMPLEMENTED } from "./util/error"; |
3 | 3 | import { joinIntegerArray, joinFloatArray } from "./util/string"; |
| 4 | +import { REVERSE } from "./util/bytes"; |
4 | 5 | import { idof } from "./builtins"; |
5 | 6 | import { ArrayBufferView } from "./arraybuffer"; |
6 | 7 |
|
@@ -124,7 +125,8 @@ export class Int8Array extends ArrayBufferView { |
124 | 125 | } |
125 | 126 |
|
126 | 127 | reverse(): this { |
127 | | - return REVERSE<this, i8>(this); |
| 128 | + REVERSE<u8>(this.dataStart, this.length); |
| 129 | + return this; |
128 | 130 | } |
129 | 131 |
|
130 | 132 | join(separator: string = ","): string { |
@@ -264,7 +266,8 @@ export class Uint8Array extends ArrayBufferView { |
264 | 266 | } |
265 | 267 |
|
266 | 268 | reverse(): this { |
267 | | - return REVERSE<this, u8>(this); |
| 269 | + REVERSE<u8>(this.dataStart, this.length); |
| 270 | + return this; |
268 | 271 | } |
269 | 272 |
|
270 | 273 | join(separator: string = ","): string { |
@@ -404,7 +407,8 @@ export class Uint8ClampedArray extends ArrayBufferView { |
404 | 407 | } |
405 | 408 |
|
406 | 409 | reverse(): this { |
407 | | - return REVERSE<this, u8>(this); |
| 410 | + REVERSE<u8>(this.dataStart, this.length); |
| 411 | + return this; |
408 | 412 | } |
409 | 413 |
|
410 | 414 | join(separator: string = ","): string { |
@@ -544,7 +548,8 @@ export class Int16Array extends ArrayBufferView { |
544 | 548 | } |
545 | 549 |
|
546 | 550 | reverse(): this { |
547 | | - return REVERSE<this, i16>(this); |
| 551 | + REVERSE<u16>(this.dataStart, this.length); |
| 552 | + return this; |
548 | 553 | } |
549 | 554 |
|
550 | 555 | join(separator: string = ","): string { |
@@ -684,7 +689,8 @@ export class Uint16Array extends ArrayBufferView { |
684 | 689 | } |
685 | 690 |
|
686 | 691 | reverse(): this { |
687 | | - return REVERSE<this, u16>(this); |
| 692 | + REVERSE<u16>(this.dataStart, this.length); |
| 693 | + return this; |
688 | 694 | } |
689 | 695 |
|
690 | 696 | join(separator: string = ","): string { |
@@ -824,7 +830,8 @@ export class Int32Array extends ArrayBufferView { |
824 | 830 | } |
825 | 831 |
|
826 | 832 | reverse(): this { |
827 | | - return REVERSE<this, i32>(this); |
| 833 | + REVERSE<u32>(this.dataStart, this.length); |
| 834 | + return this; |
828 | 835 | } |
829 | 836 |
|
830 | 837 | join(separator: string = ","): string { |
@@ -964,7 +971,8 @@ export class Uint32Array extends ArrayBufferView { |
964 | 971 | } |
965 | 972 |
|
966 | 973 | reverse(): this { |
967 | | - return REVERSE<this, u32>(this); |
| 974 | + REVERSE<u32>(this.dataStart, this.length); |
| 975 | + return this; |
968 | 976 | } |
969 | 977 |
|
970 | 978 | join(separator: string = ","): string { |
@@ -1104,7 +1112,8 @@ export class Int64Array extends ArrayBufferView { |
1104 | 1112 | } |
1105 | 1113 |
|
1106 | 1114 | reverse(): this { |
1107 | | - return REVERSE<this, i64>(this); |
| 1115 | + REVERSE<u64>(this.dataStart, this.length); |
| 1116 | + return this; |
1108 | 1117 | } |
1109 | 1118 |
|
1110 | 1119 | join(separator: string = ","): string { |
@@ -1244,7 +1253,8 @@ export class Uint64Array extends ArrayBufferView { |
1244 | 1253 | } |
1245 | 1254 |
|
1246 | 1255 | reverse(): this { |
1247 | | - return REVERSE<this, u64>(this); |
| 1256 | + REVERSE<u64>(this.dataStart, this.length); |
| 1257 | + return this; |
1248 | 1258 | } |
1249 | 1259 |
|
1250 | 1260 | join(separator: string = ","): string { |
@@ -1384,7 +1394,8 @@ export class Float32Array extends ArrayBufferView { |
1384 | 1394 | } |
1385 | 1395 |
|
1386 | 1396 | reverse(): this { |
1387 | | - return REVERSE<this, f32>(this); |
| 1397 | + REVERSE<f32>(this.dataStart, this.length); |
| 1398 | + return this; |
1388 | 1399 | } |
1389 | 1400 |
|
1390 | 1401 | join(separator: string = ","): string { |
@@ -1524,7 +1535,8 @@ export class Float64Array extends ArrayBufferView { |
1524 | 1535 | } |
1525 | 1536 |
|
1526 | 1537 | reverse(): this { |
1527 | | - return REVERSE<this, f64>(this); |
| 1538 | + REVERSE<f64>(this.dataStart, this.length); |
| 1539 | + return this; |
1528 | 1540 | } |
1529 | 1541 |
|
1530 | 1542 | join(separator: string = ","): string { |
@@ -1844,20 +1856,6 @@ function FOREACH<TArray extends ArrayBufferView, T>( |
1844 | 1856 | } |
1845 | 1857 | } |
1846 | 1858 |
|
1847 | | -// @ts-ignore: decorator |
1848 | | -@inline |
1849 | | -function REVERSE<TArray extends ArrayBufferView, T>(array: TArray): TArray { |
1850 | | - var ptr = array.dataStart; |
1851 | | - for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) { |
1852 | | - let frontPtr = ptr + (front << alignof<T>()); |
1853 | | - let backPtr = ptr + (back << alignof<T>()); |
1854 | | - let temp = load<T>(frontPtr); |
1855 | | - store<T>(frontPtr, load<T>(backPtr)); |
1856 | | - store<T>(backPtr, temp); |
1857 | | - } |
1858 | | - return array; |
1859 | | -} |
1860 | | - |
1861 | 1859 | // @ts-ignore: decorator |
1862 | 1860 | @inline |
1863 | 1861 | function WRAP<TArray extends ArrayBufferView, T>( |
|
0 commit comments