summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zjit/src/backend/lir.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/zjit/src/backend/lir.rs b/zjit/src/backend/lir.rs
index f8a8352604..b15029df97 100644
--- a/zjit/src/backend/lir.rs
+++ b/zjit/src/backend/lir.rs
@@ -1702,6 +1702,10 @@ impl Assembler
/// Compile Target::SideExit and convert it into Target::CodePtr for all instructions
pub fn compile_side_exits(&mut self) {
+ fn join_opnds(opnds: &Vec<Opnd>, delimiter: &str) -> String {
+ opnds.iter().map(|opnd| format!("{opnd}")).collect::<Vec<_>>().join(delimiter)
+ }
+
let mut targets = HashMap::new();
for (idx, insn) in self.insns.iter().enumerate() {
if let Some(target @ Target::SideExit { .. }) = insn.target() {
@@ -1723,12 +1727,12 @@ impl Assembler
// Restore the PC and the stack for regular side exits. We don't do this for
// side exits right after JIT-to-JIT calls, which restore them before the call.
- asm_comment!(self, "write stack slots: {stack:?}");
+ asm_comment!(self, "write stack slots: {}", join_opnds(&stack, ", "));
for (idx, &opnd) in stack.iter().enumerate() {
self.store(Opnd::mem(64, SP, idx as i32 * SIZEOF_VALUE_I32), opnd);
}
- asm_comment!(self, "write locals: {locals:?}");
+ asm_comment!(self, "write locals: {}", join_opnds(&locals, ", "));
for (idx, &opnd) in locals.iter().enumerate() {
self.store(Opnd::mem(64, SP, (-local_size_and_idx_to_ep_offset(locals.len(), idx) - 1) * SIZEOF_VALUE_I32), opnd);
}