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;