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 {