[dart2wasm] Fix JSCM convert patch TextDecoder use

Change-Id: Ib2de3df8495ab16c172a39627c8d79c1c442ef16
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/336000
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
diff --git a/sdk/lib/_internal/wasm_js_compatibility/lib/convert_patch.dart b/sdk/lib/_internal/wasm_js_compatibility/lib/convert_patch.dart
index cef1d72..f4fd587 100644
--- a/sdk/lib/_internal/wasm_js_compatibility/lib/convert_patch.dart
+++ b/sdk/lib/_internal/wasm_js_compatibility/lib/convert_patch.dart
@@ -70,17 +70,12 @@
     }
 
     if (0 == start && end == codeUnits.length) {
-      return _useTextDecoder(decoder, codeUnits.toExternRef);
+      return _useTextDecoder(decoder, codeUnits.toJSArrayExternRef());
     }
-    final length = codeUnits.length;
-    end = RangeError.checkValidRange(start, end, length);
+    RangeError.checkValidRange(start, end, codeUnits.length);
+    final length = end - start;
     return _useTextDecoder(
-        decoder,
-        js.JS<WasmExternRef?>(
-            '(codeUnits, start, end) => codeUnits.subarray(start, end)',
-            codeUnits.toExternRef,
-            start.toDouble,
-            end.toDouble));
+        decoder, codeUnits.toJSArrayExternRef(start, length));
   }
 
   static String? _useTextDecoder(