| commit | 4b273b44816bdd73c0f2247d257df53e27787443 | [log] [tgz] |
|---|---|---|
| author | Bernardo Ferrari <bernaferrari2@gmail.com> | Wed Jan 17 21:39:34 2024 +0000 |
| committer | Commit Queue <dart-scoped@luci-project-accounts.iam.gserviceaccount.com> | Wed Jan 17 21:39:34 2024 +0000 |
| tree | 5bb0b4b110d61b62cc0f88d40b2df5bdba05430d | |
| parent | daf06f3fe4d0eb29c91384b09ba029666ba9e192 [diff] |
Make `sign` faster. Closes https://github.com/dart-lang/sdk/pull/54653 GitOrigin-RevId: af94934e2fb2bac0989742364fd2e33b49398469 Change-Id: I412d48ff24bd80120cf1de4e580b85eeca8e9619 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/346687 Reviewed-by: Slava Egorov <vegorov@google.com> Commit-Queue: Slava Egorov <vegorov@google.com>
diff --git a/sdk/lib/_internal/vm/lib/integers.dart b/sdk/lib/_internal/vm/lib/integers.dart index c75ffa2..dad8e42 100644 --- a/sdk/lib/_internal/vm/lib/integers.dart +++ b/sdk/lib/_internal/vm/lib/integers.dart
@@ -188,13 +188,8 @@ return this < 0 ? -this : this; } - int get sign { - return (this > 0) - ? 1 - : (this < 0) - ? -1 - : 0; - } + @pragma('vm:prefer-inline') + int get sign => (this >> 63) | (-this >>> 63); bool get isEven => ((this & 1) == 0); bool get isOdd => !isEven;
diff --git a/sdk/lib/_internal/wasm/lib/boxed_int.dart b/sdk/lib/_internal/wasm/lib/boxed_int.dart index 48448e1..3b3cc0f 100644 --- a/sdk/lib/_internal/wasm/lib/boxed_int.dart +++ b/sdk/lib/_internal/wasm/lib/boxed_int.dart
@@ -136,13 +136,7 @@ } @pragma("wasm:prefer-inline") - int get sign { - return (this > 0) - ? 1 - : (this < 0) - ? -1 - : 0; - } + int get sign => (this >> 63) | (-this >>> 63); @pragma("wasm:prefer-inline") bool get isEven => (this & 1) == 0;