Revert "[platform] Fix Utils::IsAbsoluteUint and rename to MagnitudeIsUint."

This reverts commit 2ea5507fc380bb1bc5b1375e446b84f55aa89538.

Reason for revert: Broke vm-kernel-precomp-linux-debug-simarm_x64

Original change's description:
> [platform] Fix Utils::IsAbsoluteUint and rename to MagnitudeIsUint.
>
> Also remove previous (incorrect) uses in datastream.cc and
> image_snapshot.cc, now that Utils::IsInt<T>(N, value) can now
> be run for values of N >= sizeof(T).
>
> Fixes https://github.com/dart-lang/sdk/issues/46572
>
> TEST=language/generic/super_bounded_types_test passes on NNBD simarm,
>      added value that triggered failure to vm/cc/MagnitudeIsUint
>
> Cq-Include-Trybots: luci.dart.try:vm-kernel-nnbd-linux-release-simarm-try
> Change-Id: Ibc2d2bb5037a8fdee11fc26fa2a313149d3ca274
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/206083
> Commit-Queue: Tess Strickland <sstrickl@google.com>
> Reviewed-by: Daco Harkes <dacoharkes@google.com>

TBR=vegorov@google.com,dacoharkes@google.com,sstrickl@google.com

Change-Id: I5194ba777d8811bb5557338c6b071ea152b93d44
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Cq-Include-Trybots: luci.dart.try:vm-kernel-nnbd-linux-release-simarm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/206143
Reviewed-by: Liam Appelbe <liama@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
diff --git a/runtime/platform/utils.h b/runtime/platform/utils.h
index a1d6b1b..98f1a1c 100644
--- a/runtime/platform/utils.h
+++ b/runtime/platform/utils.h
@@ -229,22 +229,12 @@
     return value <= limit;
   }
 
-  // Check whether the magnitude of value fits in N bits. This differs from
-  // IsInt(N + 1, value) only in that this returns false for the minimum value
-  // of a N+1 bit two's complement value.
-  //
-  // Primarily used for testing whether a two's complement value can be used in
-  // a place where the sign is replaced with a marker that says whether the
-  // magnitude is added or subtracted, e.g., the U bit (bit 23) in some ARM7
-  // instructions.
+  // Check whether the magnitude of value fits in N bits, i.e., whether an
+  // (N+1)-bit sign-magnitude representation can hold value.
   template <typename T>
-  static inline bool MagnitudeIsUint(intptr_t N, T value) {
+  static inline bool IsAbsoluteUint(intptr_t N, T value) {
     ASSERT(N >= 1);
-    if constexpr (std::is_signed<T>::value) {
-      using Unsigned = typename std::make_unsigned<T>::type;
-      if (value < 0) return IsUint<Unsigned>(N, -value);
-    }
-    return IsUint(N, value);
+    return IsInt(N + 1, value);
   }
 
   static inline int32_t Low16Bits(int32_t value) {
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index d285792..7cf8272 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -2336,20 +2336,19 @@
     case kUnsignedTwoBytes:
     case kWordPair: {
       *offset_mask = 0xff;
-      return Utils::MagnitudeIsUint(8, offset);  // Addressing mode 3.
+      return Utils::IsAbsoluteUint(8, offset);  // Addressing mode 3.
     }
     case kUnsignedByte:
     case kFourBytes:
     case kUnsignedFourBytes: {
       *offset_mask = 0xfff;
-      return Utils::MagnitudeIsUint(12, offset);  // Addressing mode 2.
+      return Utils::IsAbsoluteUint(12, offset);  // Addressing mode 2.
     }
     case kSWord:
     case kDWord: {
       *offset_mask = 0x3fc;  // Multiple of 4.
       // VFP addressing mode.
-      return (Utils::MagnitudeIsUint(10, offset) &&
-              Utils::IsAligned(offset, 4));
+      return (Utils::IsAbsoluteUint(10, offset) && Utils::IsAligned(offset, 4));
     }
     case kRegList: {
       *offset_mask = 0x0;
@@ -2370,21 +2369,20 @@
     case kUnsignedTwoBytes:
     case kWordPair: {
       *offset_mask = 0xff;
-      return Utils::MagnitudeIsUint(8, offset);  // Addressing mode 3.
+      return Utils::IsAbsoluteUint(8, offset);  // Addressing mode 3.
     }
     case kByte:
     case kUnsignedByte:
     case kFourBytes:
     case kUnsignedFourBytes: {
       *offset_mask = 0xfff;
-      return Utils::MagnitudeIsUint(12, offset);  // Addressing mode 2.
+      return Utils::IsAbsoluteUint(12, offset);  // Addressing mode 2.
     }
     case kSWord:
     case kDWord: {
       *offset_mask = 0x3fc;  // Multiple of 4.
       // VFP addressing mode.
-      return (Utils::MagnitudeIsUint(10, offset) &&
-              Utils::IsAligned(offset, 4));
+      return (Utils::IsAbsoluteUint(10, offset) && Utils::IsAligned(offset, 4));
     }
     case kRegList: {
       *offset_mask = 0x0;
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index c41b62d..09162f4 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -238,7 +238,7 @@
   }
 
   explicit Address(Register rn, int32_t offset = 0, Mode am = Offset) {
-    ASSERT(Utils::MagnitudeIsUint(12, offset));
+    ASSERT(Utils::IsAbsoluteUint(12, offset));
     kind_ = Immediate;
     if (offset < 0) {
       encoding_ = (am ^ (1 << kUShift)) | -offset;  // Flip U to adjust sign.
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index b71c702..979db7e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -712,7 +712,7 @@
     } else {
       __ add(LR, DISPATCH_TABLE_REG,
              compiler::Operand(cid_reg, LSL, compiler::target::kWordSizeLog2));
-      if (!Utils::MagnitudeIsUint(12, offset)) {
+      if (!Utils::IsAbsoluteUint(12, offset)) {
         const intptr_t adjust = offset & -(1 << 12);
         __ AddImmediate(LR, LR, adjust);
         offset -= adjust;
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index 0c07ad2..80aaa47 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -1855,7 +1855,7 @@
   const intptr_t base_offset =
       (is_external ? 0 : (Instance::DataOffsetFor(cid) - kHeapObjectTag));
   const int64_t offset = index * scale + base_offset;
-  if (!Utils::MagnitudeIsUint(12, offset)) {
+  if (!Utils::IsAbsoluteUint(12, offset)) {
     return false;
   }
   if (compiler::Address::CanHoldImmediateOffset(is_load, cid, offset)) {
diff --git a/runtime/vm/datastream.cc b/runtime/vm/datastream.cc
index 8236bf2..6d398fe 100644
--- a/runtime/vm/datastream.cc
+++ b/runtime/vm/datastream.cc
@@ -10,7 +10,8 @@
 namespace dart {
 
 void BaseWriteStream::WriteTargetWord(word value) {
-  ASSERT(Utils::IsInt(compiler::target::kBitsPerWord, value));
+  ASSERT(compiler::target::kBitsPerWord == kBitsPerWord ||
+         Utils::IsAbsoluteUint(compiler::target::kBitsPerWord, value));
   WriteFixed(static_cast<compiler::target::word>(value));
 }
 
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index 715bd93..658892b 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -1207,7 +1207,8 @@
 }
 
 intptr_t AssemblyImageWriter::WriteTargetWord(word value) {
-  ASSERT(Utils::IsInt(compiler::target::kBitsPerWord, value));
+  ASSERT(compiler::target::kBitsPerWord == kBitsPerWord ||
+         Utils::IsAbsoluteUint(compiler::target::kBitsPerWord, value));
   // Padding is helpful for comparing the .S with --disassemble.
   assembly_stream_->Printf("%s 0x%.*" Px "\n", kWordDirective,
                            2 * compiler::target::kWordSize, value);
diff --git a/runtime/vm/utils_test.cc b/runtime/vm/utils_test.cc
index 2b0369f..ba4e296 100644
--- a/runtime/vm/utils_test.cc
+++ b/runtime/vm/utils_test.cc
@@ -290,26 +290,22 @@
   EXPECT(!Utils::IsUint(32, 4294967296LL));
 }
 
-VM_UNIT_TEST_CASE(MagnitudeIsUint) {
-  EXPECT(Utils::MagnitudeIsUint(8, 16));
-  EXPECT(Utils::MagnitudeIsUint(8, 0));
-  EXPECT(Utils::MagnitudeIsUint(8, -128));
-  EXPECT(Utils::MagnitudeIsUint(8, 255));
-  EXPECT(!Utils::MagnitudeIsUint(8, 256));
-  EXPECT(Utils::MagnitudeIsUint(12, 4095));
-  EXPECT(Utils::MagnitudeIsUint(12, -4095));
-  EXPECT(!Utils::MagnitudeIsUint(12, 4096));
-  EXPECT(!Utils::MagnitudeIsUint(12, -4096));
-  EXPECT(Utils::MagnitudeIsUint(16, 16));
-  EXPECT(Utils::MagnitudeIsUint(16, 0));
-  EXPECT(Utils::MagnitudeIsUint(16, 65535));
-  EXPECT(Utils::MagnitudeIsUint(16, -32768));
-  EXPECT(!Utils::MagnitudeIsUint(16, 65536));
-  EXPECT(Utils::MagnitudeIsUint(32, 16LL));
-  EXPECT(Utils::MagnitudeIsUint(32, 0LL));
-  EXPECT(Utils::MagnitudeIsUint(32, -2147483648LL));
-  EXPECT(Utils::MagnitudeIsUint(32, 4294967295LL));
-  EXPECT(!Utils::MagnitudeIsUint(32, 4294967296LL));
+VM_UNIT_TEST_CASE(IsAbsoluteUint) {
+  EXPECT(Utils::IsAbsoluteUint(8, 16));
+  EXPECT(Utils::IsAbsoluteUint(8, 0));
+  EXPECT(Utils::IsAbsoluteUint(8, -128));
+  EXPECT(Utils::IsAbsoluteUint(8, 255));
+  EXPECT(!Utils::IsAbsoluteUint(8, 256));
+  EXPECT(Utils::IsAbsoluteUint(16, 16));
+  EXPECT(Utils::IsAbsoluteUint(16, 0));
+  EXPECT(Utils::IsAbsoluteUint(16, 65535));
+  EXPECT(Utils::IsAbsoluteUint(16, -32768));
+  EXPECT(!Utils::IsAbsoluteUint(16, 65536));
+  EXPECT(Utils::IsAbsoluteUint(32, 16LL));
+  EXPECT(Utils::IsAbsoluteUint(32, 0LL));
+  EXPECT(Utils::IsAbsoluteUint(32, -2147483648LL));
+  EXPECT(Utils::IsAbsoluteUint(32, 4294967295LL));
+  EXPECT(!Utils::IsAbsoluteUint(32, 4294967296LL));
 }
 
 VM_UNIT_TEST_CASE(LowBits) {