mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2025-12-25 16:54:43 +01:00
Add serialization of inlines and inline origins for FastSourceLineResolver so that it can construct inlined frames later.
Bug: 1190878 Change-Id: Ie3b0f2f44e04e790501ea54680fe223974c750ab Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3294126 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
parent
c472afe064
commit
0ae29c99d1
8 changed files with 379 additions and 27 deletions
|
|
@ -43,10 +43,15 @@
|
|||
|
||||
namespace google_breakpad {
|
||||
|
||||
// Definition of static member variable in SimplerSerializer<Funcion>, which
|
||||
// is declared in file "simple_serializer-inl.h"
|
||||
RangeMapSerializer< MemAddr, linked_ptr<BasicSourceLineResolver::Line> >
|
||||
SimpleSerializer<BasicSourceLineResolver::Function>::range_map_serializer_;
|
||||
// Definition of static member variables in SimplerSerializer<Funcion> and
|
||||
// SimplerSerializer<Inline>, which are declared in file
|
||||
// "simple_serializer-inl.h"
|
||||
RangeMapSerializer<MemAddr, linked_ptr<BasicSourceLineResolver::Line>>
|
||||
SimpleSerializer<BasicSourceLineResolver::Function>::range_map_serializer_;
|
||||
ContainedRangeMapSerializer<MemAddr,
|
||||
linked_ptr<BasicSourceLineResolver::Inline>>
|
||||
SimpleSerializer<
|
||||
BasicSourceLineResolver::Function>::inline_range_map_serializer_;
|
||||
|
||||
size_t ModuleSerializer::SizeOf(const BasicSourceLineResolver::Module& module) {
|
||||
size_t total_size_alloc_ = 0;
|
||||
|
|
@ -66,6 +71,8 @@ size_t ModuleSerializer::SizeOf(const BasicSourceLineResolver::Module& module) {
|
|||
module.cfi_initial_rules_);
|
||||
map_sizes_[map_index++] = cfi_delta_rules_serializer_.SizeOf(
|
||||
module.cfi_delta_rules_);
|
||||
map_sizes_[map_index++] =
|
||||
inline_origin_serializer_.SizeOf(module.inline_origins_);
|
||||
|
||||
// Header size.
|
||||
total_size_alloc_ += kNumberMaps_ * sizeof(uint32_t);
|
||||
|
|
@ -95,6 +102,7 @@ char* ModuleSerializer::Write(const BasicSourceLineResolver::Module& module,
|
|||
dest = wfi_serializer_.Write(&(module.windows_frame_info_[i]), dest);
|
||||
dest = cfi_init_rules_serializer_.Write(module.cfi_initial_rules_, dest);
|
||||
dest = cfi_delta_rules_serializer_.Write(module.cfi_delta_rules_, dest);
|
||||
dest = inline_origin_serializer_.Write(module.inline_origins_, dest);
|
||||
// Write a null terminator.
|
||||
dest = SimpleSerializer<char>::Write(0, dest);
|
||||
return dest;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue