diff options
author | Christopher Ferris <cferris@google.com> | 2018-04-03 16:03:28 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2018-04-03 18:37:52 -0700 |
commit | 6633b0ca090dd3da45b8936d587a1316401e46ba (patch) | |
tree | 0b87776d1449833c2be01ed02d1b5352f23ac867 /libbacktrace | |
parent | a10d40e2b2a6132b7e06397f62ac07a4d9bfb5e1 (diff) | |
download | system_core-6633b0ca090dd3da45b8936d587a1316401e46ba.tar.gz system_core-6633b0ca090dd3da45b8936d587a1316401e46ba.tar.bz2 system_core-6633b0ca090dd3da45b8936d587a1316401e46ba.zip |
Add a MemoryOfflineBuffer object.
Use this for offline stack data so that it's not necessary to
copy any data around.
Add unit tests for the new object.
Bug: 77258731
Bug: 74354410
Test: Ran libunwindstack/libbacktrace unit tests.
Change-Id: I9b0f25d9520c96e64aedef5f295423c60ddb3488
Diffstat (limited to 'libbacktrace')
-rw-r--r-- | libbacktrace/UnwindStackMap.cpp | 13 | ||||
-rw-r--r-- | libbacktrace/UnwindStackMap.h | 3 |
2 files changed, 9 insertions, 7 deletions
diff --git a/libbacktrace/UnwindStackMap.cpp b/libbacktrace/UnwindStackMap.cpp index 9c6fed43c..d2d6ab8fa 100644 --- a/libbacktrace/UnwindStackMap.cpp +++ b/libbacktrace/UnwindStackMap.cpp @@ -149,13 +149,12 @@ bool UnwindStackOfflineMap::CreateProcessMemory(const backtrace_stackinfo_t& sta } // Create the process memory from the stack data. - uint64_t size = stack.end - stack.start; - unwindstack::MemoryBuffer* memory = new unwindstack::MemoryBuffer; - memory->Resize(size); - memcpy(memory->GetPtr(0), stack.data, size); - std::shared_ptr<unwindstack::Memory> shared_memory(memory); - - process_memory_.reset(new unwindstack::MemoryRange(shared_memory, 0, size, stack.start)); + if (memory_ == nullptr) { + memory_ = new unwindstack::MemoryOfflineBuffer(stack.data, stack.start, stack.end); + process_memory_.reset(memory_); + } else { + memory_->Reset(stack.data, stack.start, stack.end); + } return true; } diff --git a/libbacktrace/UnwindStackMap.h b/libbacktrace/UnwindStackMap.h index ec0d9c148..039f4a289 100644 --- a/libbacktrace/UnwindStackMap.h +++ b/libbacktrace/UnwindStackMap.h @@ -79,6 +79,9 @@ class UnwindStackOfflineMap : public UnwindStackMap { bool Build(const std::vector<backtrace_map_t>& maps); bool CreateProcessMemory(const backtrace_stackinfo_t& stack); + + private: + unwindstack::MemoryOfflineBuffer* memory_ = nullptr; }; #endif // _LIBBACKTRACE_UNWINDSTACK_MAP_H |