MCPcopy Index your code
hub / github.com/encounter/objdiff / instruction_hover

Method instruction_hover

objdiff-wasm/src/api.rs:295–342  ·  view source on GitHub ↗
(
        diff: ObjectDiffBorrow,
        symbol_ref: SymbolRef,
        row_index: u32,
        diff_config: DiffConfigBorrow,
    )

Source from the content-addressed store, hash-verified

293 }
294
295 fn instruction_hover(
296 diff: ObjectDiffBorrow,
297 symbol_ref: SymbolRef,
298 row_index: u32,
299 diff_config: DiffConfigBorrow,
300 ) -> Vec<HoverItem> {
301 let obj_diff = diff.get::<ResourceObjectDiff>();
302 let obj = obj_diff.0.as_ref();
303 let obj_diff = &obj_diff.1;
304 let symbol_display = from_symbol_ref(symbol_ref);
305 let symbol_diff = if symbol_display.is_mapping_symbol {
306 obj_diff
307 .mapping_symbols
308 .iter()
309 .find(|s| s.symbol_index == symbol_display.symbol)
310 .map(|s| &s.symbol_diff)
311 } else {
312 obj_diff.symbols.get(symbol_display.symbol)
313 };
314 let Some(ins_ref) = symbol_diff
315 .and_then(|sd| sd.instruction_rows.get(row_index as usize))
316 .and_then(|row| row.ins_ref)
317 else {
318 return Vec::new();
319 };
320 let diff_config = diff_config.get::<ResourceDiffConfig>().0.borrow();
321 let Some(resolved) = obj.resolve_instruction_ref(symbol_display.symbol, ins_ref) else {
322 return vec![HoverItem::Text(HoverItemText {
323 label: "Error".to_string(),
324 value: "Failed to resolve instruction".to_string(),
325 color: HoverItemColor::Delete,
326 })];
327 };
328 let ins = match obj.arch.process_instruction(resolved, &diff_config) {
329 Ok(ins) => ins,
330 Err(e) => {
331 return vec![HoverItem::Text(HoverItemText {
332 label: "Error".to_string(),
333 value: e.to_string(),
334 color: HoverItemColor::Delete,
335 })];
336 }
337 };
338 diff::display::instruction_hover(obj, resolved, &ins, &diff_config)
339 .into_iter()
340 .map(HoverItem::from)
341 .collect()
342 }
343
344 fn display_data_row(
345 diff: ObjectDiffBorrow,

Callers

nothing calls this directly

Calls 5

from_symbol_refFunction · 0.85
instruction_hoverFunction · 0.85
getMethod · 0.80
process_instructionMethod · 0.80

Tested by

no test coverage detected