summaryrefslogtreecommitdiff
path: root/runtime/base/debug_stack.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2017-10-12 13:34:49 +0100
committer Vladimir Marko <vmarko@google.com> 2017-10-17 11:12:08 +0100
commit174b2e27ebf933b80f4e8b64b4b024ab4306aaac (patch)
tree968cdd8d7fd68571115db77cc288807c3b257911 /runtime/base/debug_stack.h
parent6783118d2ad9d759f0617b1219a9e29a10a569f7 (diff)
Use ScopedArenaAllocator for code generation.
Reuse the memory previously allocated on the ArenaStack by optimization passes. This CL handles only the architecture-independent codegen and slow paths, architecture-dependent codegen allocations shall be moved to the ScopedArenaAllocator in a follow-up. Memory needed to compile the two most expensive methods for aosp_angler-userdebug boot image: BatteryStats.dumpCheckinLocked() : 19.6MiB -> 18.5MiB (-1189KiB) BatteryStats.dumpLocked(): 39.3MiB -> 37.0MiB (-2379KiB) Also move definitions of functions that use bit_vector-inl.h from bit_vector.h also to bit_vector-inl.h . Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 64312607 Change-Id: I84688c3a5a95bf90f56bd3a150bc31fedc95f29c
Diffstat (limited to 'runtime/base/debug_stack.h')
-rw-r--r--runtime/base/debug_stack.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/runtime/base/debug_stack.h b/runtime/base/debug_stack.h
index e19aecb712..886065db30 100644
--- a/runtime/base/debug_stack.h
+++ b/runtime/base/debug_stack.h
@@ -94,11 +94,19 @@ class DebugStackReferenceImpl {
DebugStackReferenceImpl(const DebugStackReferenceImpl& other)
: counter_(other.counter_), ref_count_(counter_->IncrementRefCount()) {
}
+ DebugStackReferenceImpl(DebugStackReferenceImpl&& other)
+ : counter_(other.counter_), ref_count_(other.ref_count_) {
+ other.counter_ = nullptr;
+ }
DebugStackReferenceImpl& operator=(const DebugStackReferenceImpl& other) {
CHECK(counter_ == other.counter_);
return *this;
}
- ~DebugStackReferenceImpl() { counter_->DecrementRefCount(); }
+ ~DebugStackReferenceImpl() {
+ if (counter_ != nullptr) {
+ counter_->DecrementRefCount();
+ }
+ }
void CheckTop() { CHECK_EQ(counter_->GetRefCount(), ref_count_); }
private: