[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]