ruby-changes:73109
From: Maxime <ko1@a...>
Date: Tue, 30 Aug 2022 00:51:32 +0900 (JST)
Subject: [ruby-changes:73109] 99cfbdca6b (master): Fix bug with asm.comment()
https://git.ruby-lang.org/ruby.git/commit/?id=99cfbdca6b From 99cfbdca6b7c2dd167137e7256cc861961969ffd Mon Sep 17 00:00:00 2001 From: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@s...> Date: Thu, 19 May 2022 12:26:20 -0400 Subject: Fix bug with asm.comment() --- yjit/src/backend/ir.rs | 3 +++ yjit/src/backend/x86_64/mod.rs | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/yjit/src/backend/ir.rs b/yjit/src/backend/ir.rs index 7f6a20c191..7971f69842 100644 --- a/yjit/src/backend/ir.rs +++ b/yjit/src/backend/ir.rs @@ -359,6 +359,7 @@ impl Assembler https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/ir.rs#L359 pos: None }; self.insns.push(insn); + self.live_ranges.push(self.insns.len()); } /// Add a label at the current position @@ -375,6 +376,7 @@ impl Assembler https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/ir.rs#L376 pos: None }; self.insns.push(insn); + self.live_ranges.push(self.insns.len()); Target::LabelIdx(insn_idx) } @@ -762,6 +764,7 @@ mod tests { https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/ir.rs#L764 { let mut asm = Assembler::new(); let mut cb = CodeBlock::new_dummy(1024); + asm.comment("check that comments work too"); asm.mov(Opnd::mem(64, SP, 0), Opnd::mem(64, SP, 8)); asm.compile(&mut cb); } diff --git a/yjit/src/backend/x86_64/mod.rs b/yjit/src/backend/x86_64/mod.rs index 00b9998b69..ed68e13eb6 100644 --- a/yjit/src/backend/x86_64/mod.rs +++ b/yjit/src/backend/x86_64/mod.rs @@ -59,7 +59,9 @@ impl Assembler https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/x86_64/mod.rs#L59 // For each instruction for insn in &self.insns { match insn.op { + // TODO: need to map the position of comments in the machine code Op::Comment => {}, + Op::Label => {}, Op::Add => add(cb, insn.opnds[0].into(), insn.opnds[1].into()), @@ -70,13 +72,12 @@ impl Assembler https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/x86_64/mod.rs#L72 */ Op::Load => add(cb, insn.out.into(), insn.opnds[0].into()), - Op::Mov => add(cb, insn.opnds[0].into(), insn.opnds[1].into()), + Op::Mov => mov(cb, insn.opnds[0].into(), insn.opnds[1].into()), // Test and set flags - Op::Test => add(cb, insn.opnds[0].into(), insn.opnds[1].into()), + Op::Test => test(cb, insn.opnds[0].into(), insn.opnds[1].into()), /* - Test, Cmp, Jnz, Jbe, -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/