1
0
mirror of https://github.com/dart-lang/sdk synced 2024-07-08 12:06:26 +00:00
dart-sdk/sdk
Ömer Sinan Ağacan 8b1aa1860f [dart2wasm] Use single unsigned cmp instead of two cmps when possible
wasm-opt doesn't optimize `0 < x || x > y` when y is known to be
positive (e.g. a positive integer constant), so we do it manually.

We also do it in a few places where `y` is not known to be positive in
the Wasm code, but we know it's always positive, for example when it's a
length.

Example improvement in the wasm-opt output:

```
   (func $_newArrayLengthCheck (;426;) (param $var0 i64) (result i64)
     local.get $var0
     i64.const 2147483647
-    i64.le_s
-    local.get $var0
-    i64.const 0
-    i64.ge_s
-    i32.and
-    i32.eqz
+    i64.gt_u
     if
       i32.const 46
       i32.const 0
@@ -19190,13 +19172,8 @@
               i64.const 97
               i64.sub
               local.tee $var3
-              i64.const 0
-              i64.ge_s
-              local.get $var3
               i64.const 5
-              i64.le_s
-              i32.and
-              i32.eqz
+              i64.gt_u
               if
                 local.get $var0
                 local.get $var6
@@ -19810,10 +19787,10 @@
     global.get $global4
     array.new_fixed $Array<_Type> 2
   )
```

Closes #56083.

Change-Id: Idb1dd0d0809b26be8aec3d082aa341c59e1a353d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/373663
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
2024-06-29 08:12:50 +00:00
..
bin [dart2wasm] Remove sdk/bin/dart2wasm{,_developer} scripts 2024-01-19 16:05:27 +00:00
lib [dart2wasm] Use single unsigned cmp instead of two cmps when possible 2024-06-29 08:12:50 +00:00
.gitignore [sdk] Generate a version file for the unpatched SDK 2022-05-05 10:36:05 +00:00
api_readme.md [docs/api] Minor adjustments and fixes to api.dart.dev homepage 2024-02-01 21:41:38 +00:00
BUILD.gn Reland "[SDK] - Ensure we only build an AOT snapshot for the frontend-server" 2024-04-17 20:42:51 +00:00
OWNERS [infra] Add OWNERS to the Dart SDK 2022-02-14 14:06:34 +00:00