summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2015-10-07 12:44:31 +0000
committer Vladimir Marko <vmarko@google.com> 2015-10-07 13:49:42 +0100
commit7bda3b600d74c9a5746840ebb8534443e486615a (patch)
tree857e13b3bd5a0435b8f2bf8fc15654df7b21810a
parent5928931541e07b4c98e677cfca3088106b2b9e64 (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.cc4
-rw-r--r--compiler/dex/local_value_numbering.cc4
-rw-r--r--compiler/dex/local_value_numbering.h1
-rw-r--r--compiler/dex/mir_analysis.cc4
-rw-r--r--runtime/base/arena_allocator.cc12
-rw-r--r--runtime/base/arena_allocator.h17
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 {