Skip to content

Commit ba06c33

Browse files
committed
Fix x86_64 nop snapshot and lir_string snapshot
Multi-byte NOPs (>9 bytes) are split into multiple NOP instructions by the assembler, producing multiple disasm lines.
1 parent 21a4ccd commit ba06c33

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

zjit/src/asm/x86_64/tests.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,8 +610,11 @@ fn test_nop() {
610610
0x0: nop
611611
0x0: nop
612612
0x0: nop
613+
0x9: nop
613614
0x0: nop
615+
0x9: nop
614616
0x0: nop
617+
0x9: nop
615618
");
616619

617620
assert_snapshot!(hexdumps!(cb01, cb02, cb03, cb04, cb05, cb06, cb07, cb08, cb09, cb10, cb11, cb12), @"

zjit/src/backend/x86_64/mod.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1269,7 +1269,22 @@ mod tests {
12691269
asm.cret(val64);
12701270

12711271
asm.frame_teardown(JIT_PRESERVED_REGS);
1272-
assert_disasm_snapshot!(lir_string(&mut asm), @"");
1272+
assert_disasm_snapshot!(lir_string(&mut asm), @"
1273+
test():
1274+
bb0():
1275+
# bb0(): foo@/tmp/a.rb:1
1276+
FrameSetup 1, r13, rbx, r12
1277+
v0 = Add r13, 0x40
1278+
Store [rbx + 0x10], v0
1279+
Joz Exit(Interrupt), v0
1280+
Mov rdi, eax
1281+
Mov rsi, [rbx - 8]
1282+
v1 = Sub Value(0x14), Imm(1)
1283+
Store Mem32[r12 + 0x10], VReg32(v1)
1284+
Je bb0
1285+
CRet v0
1286+
FrameTeardown r13, rbx, r12
1287+
");
12731288
}
12741289

12751290
#[test]

0 commit comments

Comments
 (0)