From dad57a4cedb673058e349435ae71757130310fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Sinan=20A=C4=9Facan?= Date: Fri, 8 Mar 2024 10:19:01 +0000 Subject: [PATCH] [dart2wasm] Avoid passing int args boxed in JS array implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ic238a7dfc372822f02dcf7aeca3b28332f425862 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/336380 Reviewed-by: Martin Kustermann Commit-Queue: Ömer Ağacan --- sdk/lib/_internal/wasm/lib/js_array.dart | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sdk/lib/_internal/wasm/lib/js_array.dart b/sdk/lib/_internal/wasm/lib/js_array.dart index 24d442f3422..0ac7943988b 100644 --- a/sdk/lib/_internal/wasm/lib/js_array.dart +++ b/sdk/lib/_internal/wasm/lib/js_array.dart @@ -30,18 +30,18 @@ class JSArrayImpl implements List { T removeAt(int index) { RangeError.checkValueInInterval(index, 0, length - 1); return js.JSValue.boxT(js.JS( - '(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('(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( - '(a, l) => a.length = l', toExternRef, newLength.toJS.toExternRef); + '(a, l) => a.length = l', toExternRef, WasmI32.fromInt(newLength)); @override void insertAll(int index, Iterable iterable) { @@ -72,7 +72,7 @@ class JSArrayImpl implements List { for (var i = 0; i < length; i++) { if (this[i] == element) { js.JS( - '(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 implements List { List sublist(int start, [int? end]) { end = RangeError.checkValidRange(start, end, length); return JSArrayImpl(js.JS('(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 implements List { RangeError.checkValidRange(start, end, length); int deleteCount = end - start; js.JS('(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 implements List { throw RangeError.range(newLength, 0, null); } js.JS( - '(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(js.JS( - '(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 implements List { @pragma("wasm:prefer-inline") void _setUnchecked(int index, T value) => js.JS('(a, i, v) => a[i] = v', - toExternRef, index.toJS.toExternRef, value.toExternRef); + toExternRef, WasmI32.fromInt(index), value.toExternRef); @override @pragma("wasm:prefer-inline")