Revert "Quick: Work around large frame sizes for x86_64."

Instead, move the MEMORY_TOOL_MAKE_* calls out-of-line.

Bug: 24729377

This reverts commit d4cf1e4fe0624b99df22ed5556dc1d042b32a7e0.

Change-Id: I9bccc8bd4a691a2d018b84de8b95bc68fafad4e1
diff --git a/compiler/dex/global_value_numbering.cc b/compiler/dex/global_value_numbering.cc
index aee94dc..94ba4fa 100644
--- a/compiler/dex/global_value_numbering.cc
+++ b/compiler/dex/global_value_numbering.cc
@@ -41,13 +41,9 @@
       merge_lvns_(allocator->Adapter()) {
 }
 
-// FIXME: Large frame size for x86_64 target. Bug: 24729377.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wframe-larger-than="
 GlobalValueNumbering::~GlobalValueNumbering() {
   STLDeleteElements(&lvns_);
 }
-#pragma GCC diagnostic pop
 
 LocalValueNumbering* GlobalValueNumbering::PrepareBasicBlock(BasicBlock* bb,
                                                              ScopedArenaAllocator* allocator) {
diff --git a/compiler/dex/local_value_numbering.cc b/compiler/dex/local_value_numbering.cc
index 25a8326..38f7d1e 100644
--- a/compiler/dex/local_value_numbering.cc
+++ b/compiler/dex/local_value_numbering.cc
@@ -347,10 +347,6 @@
   std::fill_n(unresolved_ifield_version_, arraysize(unresolved_ifield_version_), 0u);
 }
 
-LocalValueNumbering::~LocalValueNumbering() {
-  // All done by member destructors.
-}
-
 bool LocalValueNumbering::Equals(const LocalValueNumbering& other) const {
   DCHECK(gvn_ == other.gvn_);
   // Compare the maps/sets and memory versions.
diff --git a/compiler/dex/local_value_numbering.h b/compiler/dex/local_value_numbering.h
index 715da41..dff5e27 100644
--- a/compiler/dex/local_value_numbering.h
+++ b/compiler/dex/local_value_numbering.h
@@ -37,7 +37,6 @@
 
  public:
   LocalValueNumbering(GlobalValueNumbering* gvn, BasicBlockId id, ScopedArenaAllocator* allocator);
-  ~LocalValueNumbering();
 
   BasicBlockId Id() const {
     return id_;
diff --git a/compiler/dex/mir_analysis.cc b/compiler/dex/mir_analysis.cc
index 6a761d3..39f8ee8 100644
--- a/compiler/dex/mir_analysis.cc
+++ b/compiler/dex/mir_analysis.cc
@@ -1305,9 +1305,6 @@
   }
 }
 
-// FIXME: Large frame size for x86_64 target. Bug: 24729377.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wframe-larger-than="
 void MIRGraph::DoCacheMethodLoweringInfo() {
   static constexpr uint16_t invoke_types[] = { kVirtual, kSuper, kDirect, kStatic, kInterface };
   static constexpr uint32_t kMethodIdxFlagQuickened = 0x80000000;
@@ -1432,7 +1429,6 @@
   MirMethodLoweringInfo::Resolve(cu_->compiler_driver, GetCurrentDexCompilationUnit(),
                                  method_lowering_infos_.data(), count);
 }
-#pragma GCC diagnostic pop
 
 bool MIRGraph::SkipCompilationByName(const std::string& methodname) {
   return cu_->compiler_driver->SkipCompilation(methodname);
diff --git a/runtime/base/arena_allocator.cc b/runtime/base/arena_allocator.cc
index 6f2aa46..7aa71f9 100644
--- a/runtime/base/arena_allocator.cc
+++ b/runtime/base/arena_allocator.cc
@@ -156,6 +156,18 @@
 // Explicitly instantiate the used implementation.
 template class ArenaAllocatorStatsImpl<kArenaAllocatorCountAllocations>;
 
+void ArenaAllocatorMemoryTool::DoMakeDefined(void* ptr, size_t size) {
+  MEMORY_TOOL_MAKE_DEFINED(ptr, size);
+}
+
+void ArenaAllocatorMemoryTool::DoMakeUndefined(void* ptr, size_t size) {
+  MEMORY_TOOL_MAKE_UNDEFINED(ptr, size);
+}
+
+void ArenaAllocatorMemoryTool::DoMakeInaccessible(void* ptr, size_t size) {
+  MEMORY_TOOL_MAKE_NOACCESS(ptr, size);
+}
+
 Arena::Arena() : bytes_allocated_(0), next_(nullptr) {
 }
 
diff --git a/runtime/base/arena_allocator.h b/runtime/base/arena_allocator.h
index 565b416..47cd8b5 100644
--- a/runtime/base/arena_allocator.h
+++ b/runtime/base/arena_allocator.h
@@ -180,20 +180,25 @@
   using ArenaAllocatorMemoryToolCheck::IsRunningOnMemoryTool;
 
   void MakeDefined(void* ptr, size_t size) {
-    if (IsRunningOnMemoryTool()) {
-      MEMORY_TOOL_MAKE_DEFINED(ptr, size);
+    if (UNLIKELY(IsRunningOnMemoryTool())) {
+      DoMakeDefined(ptr, size);
     }
   }
   void MakeUndefined(void* ptr, size_t size) {
-    if (IsRunningOnMemoryTool()) {
-      MEMORY_TOOL_MAKE_UNDEFINED(ptr, size);
+    if (UNLIKELY(IsRunningOnMemoryTool())) {
+      DoMakeUndefined(ptr, size);
     }
   }
   void MakeInaccessible(void* ptr, size_t size) {
-    if (IsRunningOnMemoryTool()) {
-      MEMORY_TOOL_MAKE_NOACCESS(ptr, size);
+    if (UNLIKELY(IsRunningOnMemoryTool())) {
+      DoMakeInaccessible(ptr, size);
     }
   }
+
+ private:
+  void DoMakeDefined(void* ptr, size_t size);
+  void DoMakeUndefined(void* ptr, size_t size);
+  void DoMakeInaccessible(void* ptr, size_t size);
 };
 
 class Arena {