///|
fn record_instruction_metadata(
buffer : CodeBuffer,
function : @vcode.Function[AArch64Inst],
allocation : @vcode.Allocation,
frame : AArch64Frame,
instruction : @vcode.Instruction,
offset : Int32,
sites : @vcode.CodeSites,
) -> Unit {
let metadata = function.instruction_annotations(instruction).unwrap()
if (metadata.trap() is Some(_) || metadata.safepoint() is Some(_)) &&
buffer.position() == offset {
buffer.emit_word(0xD503201FU)
}
sites.record(
function,
allocation,
frame.layout,
instruction,
metadata,
offset,
buffer.position(),
)
}