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

Method instruction_context

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

Source from the content-addressed store, hash-verified

244 }
245
246 fn instruction_context(
247 diff: ObjectDiffBorrow,
248 symbol_ref: SymbolRef,
249 row_index: u32,
250 diff_config: DiffConfigBorrow,
251 ) -> Vec<ContextItem> {
252 let obj_diff = diff.get::<ResourceObjectDiff>();
253 let obj = obj_diff.0.as_ref();
254 let obj_diff = &obj_diff.1;
255 let symbol_display = from_symbol_ref(symbol_ref);
256 let symbol_diff = if symbol_display.is_mapping_symbol {
257 obj_diff
258 .mapping_symbols
259 .iter()
260 .find(|s| s.symbol_index == symbol_display.symbol)
261 .map(|s| &s.symbol_diff)
262 } else {
263 obj_diff.symbols.get(symbol_display.symbol)
264 };
265 let Some(ins_ref) = symbol_diff
266 .and_then(|sd| sd.instruction_rows.get(row_index as usize))
267 .and_then(|row| row.ins_ref)
268 else {
269 return Vec::new();
270 };
271 let diff_config = diff_config.get::<ResourceDiffConfig>().0.borrow();
272 let Some(resolved) = obj.resolve_instruction_ref(symbol_display.symbol, ins_ref) else {
273 return vec![ContextItem::Copy(ContextItemCopy {
274 value: "Failed to resolve instruction".to_string(),
275 label: Some("error".to_string()),
276 copy_string: None,
277 })];
278 };
279 let ins = match obj.arch.process_instruction(resolved, &diff_config) {
280 Ok(ins) => ins,
281 Err(e) => {
282 return vec![ContextItem::Copy(ContextItemCopy {
283 value: e.to_string(),
284 label: Some("error".to_string()),
285 copy_string: None,
286 })];
287 }
288 };
289 diff::display::instruction_context(obj, resolved, &ins, &diff_config)
290 .into_iter()
291 .map(ContextItem::from)
292 .collect()
293 }
294
295 fn instruction_hover(
296 diff: ObjectDiffBorrow,

Callers

nothing calls this directly

Calls 5

from_symbol_refFunction · 0.85
instruction_contextFunction · 0.85
getMethod · 0.80
process_instructionMethod · 0.80

Tested by

no test coverage detected