mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 16:55:08 +00:00
[dart2wasm] Avoid passing int args boxed in JS array implementation
Change-Id: Ic238a7dfc372822f02dcf7aeca3b28332f425862 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/336380 Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Ömer Ağacan <omersa@google.com>
This commit is contained in:
parent
d165793821
commit
dad57a4ced
|
@ -30,18 +30,18 @@ class JSArrayImpl<T extends JSAny?> implements List<T> {
|
|||
T removeAt(int index) {
|
||||
RangeError.checkValueInInterval(index, 0, length - 1);
|
||||
return js.JSValue.boxT<T>(js.JS<WasmExternRef?>(
|
||||
'(a, i) => a.splice(i, 1)[0]', toExternRef, index.toJS.toExternRef));
|
||||
'(a, i) => a.splice(i, 1)[0]', toExternRef, WasmI32.fromInt(index)));
|
||||
}
|
||||
|
||||
@override
|
||||
void insert(int index, T value) {
|
||||
RangeError.checkValueInInterval(index, 0, length);
|
||||
js.JS<void>('(a, i, v) => a.splice(i, 0, v)', toExternRef,
|
||||
index.toJS.toExternRef, value.toExternRef);
|
||||
WasmI32.fromInt(index), value.toExternRef);
|
||||
}
|
||||
|
||||
void _setLengthUnsafe(int newLength) => js.JS<void>(
|
||||
'(a, l) => a.length = l', toExternRef, newLength.toJS.toExternRef);
|
||||
'(a, l) => a.length = l', toExternRef, WasmI32.fromInt(newLength));
|
||||
|
||||
@override
|
||||
void insertAll(int index, Iterable<T> iterable) {
|
||||
|
@ -72,7 +72,7 @@ class JSArrayImpl<T extends JSAny?> implements List<T> {
|
|||
for (var i = 0; i < length; i++) {
|
||||
if (this[i] == element) {
|
||||
js.JS<void>(
|
||||
'(a, i) => a.splice(i, 1)', toExternRef, i.toJS.toExternRef);
|
||||
'(a, i) => a.splice(i, 1)', toExternRef, WasmI32.fromInt(i));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -240,7 +240,7 @@ class JSArrayImpl<T extends JSAny?> implements List<T> {
|
|||
List<T> sublist(int start, [int? end]) {
|
||||
end = RangeError.checkValidRange(start, end, length);
|
||||
return JSArrayImpl<T>(js.JS<WasmExternRef?>('(a, s, e) => a.slice(s, e)',
|
||||
toExternRef, start.toJS.toExternRef, end.toJS.toExternRef));
|
||||
toExternRef, WasmI32.fromInt(start), WasmI32.fromInt(end)));
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -273,7 +273,7 @@ class JSArrayImpl<T extends JSAny?> implements List<T> {
|
|||
RangeError.checkValidRange(start, end, length);
|
||||
int deleteCount = end - start;
|
||||
js.JS<void>('(a, s, e) => a.splice(s, e)', toExternRef,
|
||||
start.toJS.toExternRef, deleteCount.toJS.toExternRef);
|
||||
WasmI32.fromInt(start), WasmI32.fromInt(deleteCount));
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -459,12 +459,12 @@ class JSArrayImpl<T extends JSAny?> implements List<T> {
|
|||
throw RangeError.range(newLength, 0, null);
|
||||
}
|
||||
js.JS<void>(
|
||||
'(a, l) => a.length = l', toExternRef, newLength.toJS.toExternRef);
|
||||
'(a, l) => a.length = l', toExternRef, WasmI32.fromInt(newLength));
|
||||
}
|
||||
|
||||
@pragma("wasm:prefer-inline")
|
||||
T _getUnchecked(int index) => js.JSValue.boxT<T>(js.JS<WasmExternRef?>(
|
||||
'(a, i) => a[i]', toExternRef, index.toJS.toExternRef));
|
||||
'(a, i) => a[i]', toExternRef, WasmI32.fromInt(index)));
|
||||
|
||||
@override
|
||||
@pragma("wasm:prefer-inline")
|
||||
|
@ -475,7 +475,7 @@ class JSArrayImpl<T extends JSAny?> implements List<T> {
|
|||
|
||||
@pragma("wasm:prefer-inline")
|
||||
void _setUnchecked(int index, T value) => js.JS<void>('(a, i, v) => a[i] = v',
|
||||
toExternRef, index.toJS.toExternRef, value.toExternRef);
|
||||
toExternRef, WasmI32.fromInt(index), value.toExternRef);
|
||||
|
||||
@override
|
||||
@pragma("wasm:prefer-inline")
|
||||
|
|
Loading…
Reference in a new issue