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

ruby-changes:68752

From: Maxime <ko1@a...>
Date: Thu, 21 Oct 2021 08:13:25 +0900 (JST)
Subject: [ruby-changes:68752] 05d36f31ca (master): Fix bug in putobject found by @tenderlove

https://git.ruby-lang.org/ruby.git/commit/?id=05d36f31ca

From 05d36f31ca919a2cc1c2db210dd70639457dca35 Mon Sep 17 00:00:00 2001
From: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@s...>
Date: Wed, 10 Feb 2021 23:09:44 -0500
Subject: Fix bug in putobject found by @tenderlove

---
 ujit_codegen.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/ujit_codegen.c b/ujit_codegen.c
index ee47f49af6..ba215dc008 100644
--- a/ujit_codegen.c
+++ b/ujit_codegen.c
@@ -292,7 +292,19 @@ gen_putobject(jitstate_t* jit, ctx_t* ctx) https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L292
     {
         // Keep track of the fixnum type tag
         x86opnd_t stack_top = ctx_stack_push(ctx, T_FIXNUM);
-        mov(cb, stack_top, imm_opnd((int64_t)arg));
+
+        x86opnd_t imm = imm_opnd((int64_t)arg);
+
+        // 64-bit immediates can't be directly written to memory
+        if (imm.num_bits <= 32)
+        {
+            mov(cb, stack_top, imm);
+        }
+        else
+        {
+            mov(cb, REG0, imm);
+            mov(cb, stack_top, REG0);
+        }
     }
     else if (arg == Qtrue || arg == Qfalse)
     {
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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