Skip to content

Commit 0c541bf

Browse files
committed
Simplify AddressResult.
1 parent 9613013 commit 0c541bf

File tree

3 files changed

+21
-27
lines changed

3 files changed

+21
-27
lines changed

samply-api/src/symbolicate/looked_up_addresses.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::collections::BTreeMap;
22

3-
use samply_symbols::{FrameDebugInfo, SourceFilePath, SourceFilePathHandle};
3+
use samply_symbols::{FrameDebugInfo, SourceFilePath, SourceFilePathHandle, SymbolInfo};
44

55
pub trait PathResolver {
66
fn resolve_source_file_path(&self, handle: SourceFilePathHandle) -> SourceFilePath<'_>;
@@ -13,27 +13,23 @@ impl PathResolver for () {
1313
}
1414

1515
pub struct AddressResult {
16-
pub symbol_address: u32,
17-
pub symbol_name: String,
18-
pub function_size: Option<u32>,
16+
pub symbol: SymbolInfo,
1917
pub inline_frames: Option<Vec<FrameDebugInfo>>,
2018
}
2119

2220
impl AddressResult {
23-
pub fn new(symbol_address: u32, symbol_name: String, function_size: Option<u32>) -> Self {
21+
pub fn new(symbol: SymbolInfo) -> Self {
2422
Self {
25-
symbol_address,
26-
symbol_name,
27-
function_size,
23+
symbol,
2824
inline_frames: None,
2925
}
3026
}
3127

3228
pub fn set_debug_info(&mut self, frames: Vec<FrameDebugInfo>) {
33-
let outer_function_name = frames.last().and_then(|f| f.function.as_deref());
29+
let outer_function_name = frames.last().and_then(|f| f.function.as_ref());
3430
// Overwrite the symbol name with the function name from the debug info.
3531
if let Some(name) = outer_function_name {
36-
self.symbol_name = name.to_string();
32+
self.symbol.name = name.clone();
3733
}
3834
// Add the inline frame info.
3935
self.inline_frames = Some(frames);

samply-api/src/symbolicate/mod.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,19 @@ impl<'a, H: FileAndPathHelper + 'static> SymbolicateApi<'a, H> {
9595
let mut external_addresses = Vec::new();
9696

9797
for (&address, address_result) in &mut address_results {
98-
if let Some(address_info) = symbol_map.lookup_sync(LookupAddress::Relative(address)) {
99-
*address_result = Some(AddressResult::new(
100-
address_info.symbol.address,
101-
address_info.symbol.name,
102-
address_info.symbol.size,
103-
));
104-
match address_info.frames {
105-
Some(FramesLookupResult::Available(frames)) => {
106-
address_result.as_mut().unwrap().set_debug_info(frames)
107-
}
108-
Some(FramesLookupResult::External(ext_address)) => {
109-
external_addresses.push((address, ext_address));
110-
}
111-
None => {}
98+
let Some(address_info) = symbol_map.lookup_sync(LookupAddress::Relative(address))
99+
else {
100+
continue;
101+
};
102+
*address_result = Some(AddressResult::new(address_info.symbol));
103+
match address_info.frames {
104+
Some(FramesLookupResult::Available(frames)) => {
105+
address_result.as_mut().unwrap().set_debug_info(frames)
112106
}
107+
Some(FramesLookupResult::External(ext_address)) => {
108+
external_addresses.push((address, ext_address));
109+
}
110+
None => {}
113111
}
114112
}
115113

samply-api/src/symbolicate/response_json.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,12 @@ impl<'a> serde::Serialize for ResponseFrame<'a> {
212212
let address_result = symbol_map.address_results.get(&frame.address).unwrap();
213213
// But the result might still be None.
214214
if let Some(address_result) = address_result {
215-
map.serialize_entry("function", &address_result.symbol_name)?;
215+
map.serialize_entry("function", &address_result.symbol.name)?;
216216
map.serialize_entry(
217217
"function_offset",
218-
&SerializeAsHexStr(frame.address - address_result.symbol_address),
218+
&SerializeAsHexStr(frame.address - address_result.symbol.address),
219219
)?;
220-
if let Some(function_size) = address_result.function_size {
220+
if let Some(function_size) = address_result.symbol.size {
221221
map.serialize_entry("function_size", &SerializeAsHexStr(function_size))?;
222222
}
223223

0 commit comments

Comments
 (0)