[ddc] Cleanup dynamic calls in core_patch.dart

Change-Id: I453b9b034c4656db96bb034a39602c5514a5bed9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/328663
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
diff --git a/pkg/dev_compiler/test/dynamic/platform_allowed.json b/pkg/dev_compiler/test/dynamic/platform_allowed.json
index 1d80d5c..eafefc7 100644
--- a/pkg/dev_compiler/test/dynamic/platform_allowed.json
+++ b/pkg/dev_compiler/test/dynamic/platform_allowed.json
@@ -70,9 +70,5 @@
   },
   "sdk/lib/core/errors.dart": {
     "Dynamic access of 'length'.": 2
-  },
-  "sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart": {
-    "Dynamic access of 'length'.": 1,
-    "Dynamic invocation of 'sublist'.": 1
   }
 }
\ No newline at end of file
diff --git a/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart b/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart
index f0ca6d7..7a33904 100644
--- a/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart
+++ b/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart
@@ -598,7 +598,7 @@
   @patch
   factory String.fromCharCodes(Iterable<int> charCodes,
       [int start = 0, int? end]) {
-    if (charCodes is JSArray) {
+    if (charCodes is JSArray<int>) {
       return _stringFromJSArray(charCodes, start, end);
     }
     if (charCodes is NativeUint8List) {
@@ -620,11 +620,11 @@
   }
 
   static String _stringFromJSArray(
-      /*=JSArray<int>*/ list, int start, int? endOrNull) {
+      JSArray<int> list, int start, int? endOrNull) {
     int len = list.length;
     int end = RangeError.checkValidRange(start, endOrNull, len);
     if (start > 0 || end < len) {
-      list = list.sublist(start, end);
+      list = JS('!', '#.slice(#, #)', list, start, end);
     }
     return Primitives.stringFromCharCodes(list);
   }