ARM64: Enable implicit suspend checks after CCCR.

After compiled code check rewrite in
    https://android-review.googlesource.com/2318778 .

Test: run-gtests.sh
Test: testrunner.py --target --64 --optimizing --jit
Bug: 38383823
Change-Id: I90222c4e4d1fded1ed75a8d76a1e3301fa102fd5
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index 1754a68..f205565 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -845,9 +845,7 @@
     // Set the compilation target's implicit checks options.
     switch (compiler_options_->GetInstructionSet()) {
       case InstructionSet::kArm64:
-        // TODO: Implicit suspend checks are currently disabled to facilitate search
-        // for unrelated memory use regressions. Bug: 213757852.
-        compiler_options_->implicit_suspend_checks_ = false;
+        compiler_options_->implicit_suspend_checks_ = true;
         FALLTHROUGH_INTENDED;
       case InstructionSet::kArm:
       case InstructionSet::kThumb2:
diff --git a/runtime/oat.h b/runtime/oat.h
index 20d32cb..3b32e11 100644
--- a/runtime/oat.h
+++ b/runtime/oat.h
@@ -32,8 +32,8 @@
 class PACKED(4) OatHeader {
  public:
   static constexpr std::array<uint8_t, 4> kOatMagic { { 'o', 'a', 't', '\n' } };
-  // Last oat version changed reason: Add a new QuickEntryPoint for a String constructor.
-  static constexpr std::array<uint8_t, 4> kOatVersion { { '2', '2', '9', '\0' } };
+  // Last oat version changed reason: ARM64: Enable implicit suspend checks; compiled code check.
+  static constexpr std::array<uint8_t, 4> kOatVersion { { '2', '3', '0', '\0' } };
 
   static constexpr const char* kDex2OatCmdLineKey = "dex2oat-cmdline";
   static constexpr const char* kDebuggableKey = "debuggable";
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 1fc434e..b74db7d 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -1749,9 +1749,7 @@
   // Change the implicit checks flags based on runtime architecture.
   switch (kRuntimeISA) {
     case InstructionSet::kArm64:
-      // TODO: Implicit suspend checks are currently disabled to facilitate search
-      // for unrelated memory use regressions. Bug: 213757852.
-      implicit_suspend_checks_ = false;
+      implicit_suspend_checks_ = true;
       FALLTHROUGH_INTENDED;
     case InstructionSet::kArm:
     case InstructionSet::kThumb2:
diff --git a/test/2233-checker-remove-loop-suspend-check/src/Main.java b/test/2233-checker-remove-loop-suspend-check/src/Main.java
index bea67e7..c56bd66 100644
--- a/test/2233-checker-remove-loop-suspend-check/src/Main.java
+++ b/test/2233-checker-remove-loop-suspend-check/src/Main.java
@@ -26,7 +26,6 @@
   /// CHECK-NEXT:   dex_pc:{{.*}}
   /// CHECK:        Goto                 loop:<<LoopId>>
   /// CHECK-NEXT:   b
-  /// CHECK-NOT:    SuspendCheckSlowPathARM64
 
   public static void $noinline$testRemoveSuspendCheck(int[] a) {
     for (int i = 0; i < ITERATIONS; i++) {
@@ -41,8 +40,6 @@
   /// CHECK:        SuspendCheck         loop:<<LoopId:B\d+>>
   /// CHECK:        Goto                 loop:<<LoopId>>
   /// CHECK-NEXT:   ldr
-  /// CHECK:        SuspendCheckSlowPathARM64
-  /// CHECK:        SuspendCheckSlowPathARM64
 
   public static void testRemoveSuspendCheckWithCall(int[] a) {
     for (int i = 0; i < ITERATIONS; i++) {
@@ -58,7 +55,6 @@
   /// CHECK:        SuspendCheck         loop:<<LoopId:B\d+>>
   /// CHECK:        Goto                 loop:<<LoopId>>
   /// CHECK-NEXT:   ldr
-  /// CHECK:        SuspendCheckSlowPathARM64
 
   public static void testRemoveSuspendCheckAboveHeuristic(int[] a) {
     for (int i = 0; i < ITERATIONS * 6; i++) {
@@ -73,7 +69,6 @@
   /// CHECK:        SuspendCheck         loop:<<LoopId:B\d+>>
   /// CHECK:        Goto                 loop:<<LoopId>>
   /// CHECK-NEXT:   ldr
-  /// CHECK:        SuspendCheckSlowPathARM64
 
   public static void testRemoveSuspendCheckUnknownCount(int[] a, int n) {
     for (int i = 0; i < n; i++) {