[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:
Ömer Sinan Ağacan 2024-03-08 10:19:01 +00:00 committed by Commit Queue
parent d165793821
commit dad57a4ced

View file

@ -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")