mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 23:12:19 +00:00
Add a TODO on Array#copyWithin
This commit is contained in:
parent
93c9a4afd9
commit
b7ca4baf42
@ -35,6 +35,8 @@ export class Array<T> extends ArrayBufferView {
|
||||
// length is modified in a way that a null value would exist. Otherwise, the compiler wouldn't be
|
||||
// able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".
|
||||
|
||||
// Also note that capacity, not length, indicates the actual retained contents.
|
||||
|
||||
private length_: i32;
|
||||
|
||||
static isArray<U>(value: U): bool {
|
||||
@ -244,19 +246,24 @@ export class Array<T> extends ArrayBufferView {
|
||||
var last = end < 0 ? max(len + end, 0) : min(end, len);
|
||||
var count = min(last - from, len - to);
|
||||
|
||||
if (from < to && to < (from + count)) {
|
||||
from += count - 1;
|
||||
to += count - 1;
|
||||
while (count) {
|
||||
store<T>(dataStart + (<usize>to << alignof<T>()), load<T>(dataStart + (<usize>from << alignof<T>())));
|
||||
--from, --to, --count;
|
||||
}
|
||||
if (isManaged<T>()) {
|
||||
// TODO: retain/release + consider intersection, only releasing what's removed
|
||||
ERROR("not implemented");
|
||||
} else {
|
||||
memory.copy(
|
||||
dataStart + (<usize>to << alignof<T>()),
|
||||
dataStart + (<usize>from << alignof<T>()),
|
||||
<usize>count << alignof<T>()
|
||||
);
|
||||
if (from < to && to < (from + count)) {
|
||||
from += count - 1;
|
||||
to += count - 1;
|
||||
while (count) {
|
||||
store<T>(dataStart + (<usize>to << alignof<T>()), load<T>(dataStart + (<usize>from << alignof<T>())));
|
||||
--from, --to, --count;
|
||||
}
|
||||
} else {
|
||||
memory.copy(
|
||||
dataStart + (<usize>to << alignof<T>()),
|
||||
dataStart + (<usize>from << alignof<T>()),
|
||||
<usize>count << alignof<T>()
|
||||
);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
@ -64,7 +64,7 @@
|
||||
if
|
||||
i32.const 24
|
||||
i32.const 136
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -78,7 +78,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -105,7 +105,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -106,7 +106,7 @@
|
||||
if
|
||||
i32.const 24
|
||||
i32.const 136
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -120,7 +120,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -168,7 +168,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -2015,7 +2015,7 @@
|
||||
if
|
||||
i32.const 424
|
||||
i32.const 376
|
||||
i32.const 266
|
||||
i32.const 273
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -3782,7 +3782,7 @@
|
||||
if
|
||||
i32.const 424
|
||||
i32.const 376
|
||||
i32.const 266
|
||||
i32.const 273
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -3824,7 +3824,7 @@
|
||||
if
|
||||
i32.const 472
|
||||
i32.const 376
|
||||
i32.const 56
|
||||
i32.const 58
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -3855,7 +3855,7 @@
|
||||
if
|
||||
i32.const 472
|
||||
i32.const 376
|
||||
i32.const 56
|
||||
i32.const 58
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -26,7 +26,7 @@
|
||||
if
|
||||
i32.const 24
|
||||
i32.const 136
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -40,7 +40,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -63,7 +63,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -43,7 +43,7 @@
|
||||
if
|
||||
i32.const 24
|
||||
i32.const 136
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -57,7 +57,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -85,7 +85,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -134,7 +134,7 @@
|
||||
if
|
||||
i32.const 24
|
||||
i32.const 136
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -148,7 +148,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -374,7 +374,7 @@
|
||||
if
|
||||
i32.const 24
|
||||
i32.const 136
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -388,7 +388,7 @@
|
||||
if
|
||||
i32.const 184
|
||||
i32.const 136
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -47,7 +47,7 @@
|
||||
if
|
||||
i32.const 136
|
||||
i32.const 192
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -68,7 +68,7 @@
|
||||
if
|
||||
i32.const 136
|
||||
i32.const 192
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -70,7 +70,7 @@
|
||||
if
|
||||
i32.const 136
|
||||
i32.const 192
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -102,7 +102,7 @@
|
||||
if
|
||||
i32.const 136
|
||||
i32.const 192
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -2367,7 +2367,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -2521,7 +2521,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -2858,7 +2858,7 @@
|
||||
if
|
||||
i32.const 872
|
||||
i32.const 488
|
||||
i32.const 266
|
||||
i32.const 273
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -2905,7 +2905,7 @@
|
||||
call $~lib/rt/pure/__release
|
||||
i32.const 272
|
||||
i32.const 488
|
||||
i32.const 213
|
||||
i32.const 215
|
||||
i32.const 59
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -3144,7 +3144,7 @@
|
||||
if
|
||||
i32.const 872
|
||||
i32.const 488
|
||||
i32.const 327
|
||||
i32.const 334
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -3985,7 +3985,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -5397,7 +5397,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -5911,7 +5911,7 @@
|
||||
if
|
||||
i32.const 272
|
||||
i32.const 488
|
||||
i32.const 45
|
||||
i32.const 47
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -6187,7 +6187,7 @@
|
||||
call $~lib/rt/pure/__release
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 112
|
||||
i32.const 114
|
||||
i32.const 38
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -6443,7 +6443,7 @@
|
||||
if
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -6457,7 +6457,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -6636,7 +6636,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -4243,7 +4243,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -4448,7 +4448,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -4856,7 +4856,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -4877,7 +4877,7 @@
|
||||
if
|
||||
i32.const 872
|
||||
i32.const 488
|
||||
i32.const 266
|
||||
i32.const 273
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -4933,7 +4933,7 @@
|
||||
block
|
||||
i32.const 272
|
||||
i32.const 488
|
||||
i32.const 213
|
||||
i32.const 215
|
||||
i32.const 59
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -5296,7 +5296,7 @@
|
||||
if
|
||||
i32.const 872
|
||||
i32.const 488
|
||||
i32.const 327
|
||||
i32.const 334
|
||||
i32.const 20
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -6337,7 +6337,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -8288,7 +8288,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -9390,7 +9390,7 @@
|
||||
if
|
||||
i32.const 272
|
||||
i32.const 488
|
||||
i32.const 45
|
||||
i32.const 47
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -9669,7 +9669,7 @@
|
||||
if
|
||||
i32.const 272
|
||||
i32.const 488
|
||||
i32.const 45
|
||||
i32.const 47
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -9739,7 +9739,7 @@
|
||||
block
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 112
|
||||
i32.const 114
|
||||
i32.const 38
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -10033,7 +10033,7 @@
|
||||
if
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -10047,7 +10047,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -10161,7 +10161,7 @@
|
||||
if
|
||||
i32.const 272
|
||||
i32.const 488
|
||||
i32.const 45
|
||||
i32.const 47
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -10246,7 +10246,7 @@
|
||||
block
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 112
|
||||
i32.const 114
|
||||
i32.const 38
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -10534,7 +10534,7 @@
|
||||
if
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -10548,7 +10548,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -10853,7 +10853,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -11356,7 +11356,7 @@
|
||||
if
|
||||
i32.const 272
|
||||
i32.const 488
|
||||
i32.const 45
|
||||
i32.const 47
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -11632,7 +11632,7 @@
|
||||
block
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 112
|
||||
i32.const 114
|
||||
i32.const 38
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -11898,7 +11898,7 @@
|
||||
if
|
||||
i32.const 4040
|
||||
i32.const 488
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -11912,7 +11912,7 @@
|
||||
if
|
||||
i32.const 176
|
||||
i32.const 488
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -37,7 +37,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -624,7 +624,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -668,7 +668,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -712,7 +712,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -59,7 +59,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1999,7 +1999,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -2067,7 +2067,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -2135,7 +2135,7 @@
|
||||
if
|
||||
i32.const 320
|
||||
i32.const 376
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -4018,7 +4018,7 @@
|
||||
if
|
||||
i32.const 2296
|
||||
i32.const 2248
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -4032,7 +4032,7 @@
|
||||
if
|
||||
i32.const 232
|
||||
i32.const 2248
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -6331,7 +6331,7 @@
|
||||
if
|
||||
i32.const 2296
|
||||
i32.const 2248
|
||||
i32.const 97
|
||||
i32.const 99
|
||||
i32.const 45
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -6345,7 +6345,7 @@
|
||||
if
|
||||
i32.const 232
|
||||
i32.const 2248
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -3354,7 +3354,7 @@
|
||||
if
|
||||
i32.const 336
|
||||
i32.const 512
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -3605,7 +3605,7 @@
|
||||
if
|
||||
i32.const 336
|
||||
i32.const 512
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
@ -5439,7 +5439,7 @@
|
||||
if
|
||||
i32.const 336
|
||||
i32.const 512
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -5766,7 +5766,7 @@
|
||||
if
|
||||
i32.const 336
|
||||
i32.const 512
|
||||
i32.const 100
|
||||
i32.const 102
|
||||
i32.const 61
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
Loading…
x
Reference in New Issue
Block a user