diff options
author | 2015-10-07 12:44:31 +0000 | |
---|---|---|
committer | 2015-10-07 13:49:42 +0100 | |
commit | 7bda3b600d74c9a5746840ebb8534443e486615a (patch) | |
tree | 857e13b3bd5a0435b8f2bf8fc15654df7b21810a | |
parent | 5928931541e07b4c98e677cfca3088106b2b9e64 (diff) |
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
-rw-r--r-- | compiler/dex/global_value_numbering.cc | 4 | ||||
-rw-r--r-- | compiler/dex/local_value_numbering.cc | 4 | ||||
-rw-r--r-- | compiler/dex/local_value_numbering.h | 1 | ||||
-rw-r--r-- | compiler/dex/mir_analysis.cc | 4 | ||||
-rw-r--r-- | runtime/base/arena_allocator.cc | 12 | ||||
-rw-r--r-- | runtime/base/arena_allocator.h | 17 |
6 files changed, 23 insertions, 19 deletions
diff --git a/compiler/dex/global_value_numbering.cc b/compiler/dex/global_value_numbering.cc index aee94dcf43..94ba4fad2a 100644 --- a/compiler/dex/global_value_numbering.cc +++ b/compiler/dex/global_value_numbering.cc @@ -41,13 +41,9 @@ GlobalValueNumbering::GlobalValueNumbering(CompilationUnit* cu, ScopedArenaAlloc 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 25a832604a..38f7d1e712 100644 --- a/compiler/dex/local_value_numbering.cc +++ b/compiler/dex/local_value_numbering.cc @@ -347,10 +347,6 @@ LocalValueNumbering::LocalValueNumbering(GlobalValueNumbering* gvn, uint16_t id, 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 715da41afd..dff5e27521 100644 --- a/compiler/dex/local_value_numbering.h +++ b/compiler/dex/local_value_numbering.h @@ -37,7 +37,6 @@ class LocalValueNumbering : public DeletableArenaObject<kArenaAllocMisc> { 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 6a761d3f68..39f8ee8f7e 100644 --- a/compiler/dex/mir_analysis.cc +++ b/compiler/dex/mir_analysis.cc @@ -1305,9 +1305,6 @@ void MIRGraph::DoCacheFieldLoweringInfo() { } } -// 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 @@ void MIRGraph::DoCacheMethodLoweringInfo() { 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 6f2aa46816..7aa71f9c3e 100644 --- a/runtime/base/arena_allocator.cc +++ b/runtime/base/arena_allocator.cc @@ -156,6 +156,18 @@ void ArenaAllocatorStatsImpl<kCount>::Dump(std::ostream& os, const Arena* first, // 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 565b416b38..47cd8b5d29 100644 --- a/runtime/base/arena_allocator.h +++ b/runtime/base/arena_allocator.h @@ -180,20 +180,25 @@ class ArenaAllocatorMemoryTool : private ArenaAllocatorMemoryToolCheck { 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 { |