|
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