summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-01-25 11:09:15 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-01-25 11:09:15 +0900
commitac88f85a9eb0d03707fc382cbaa442da146d9203 (patch)
tree6d155bb6cbb8ee06a2d50ef3c6d8cd956ed09b35 /src/vm.c
parent51d7a69ab04d1e58618c419543744783de0a9670 (diff)
downloadmruby-ac88f85a9eb0d03707fc382cbaa442da146d9203.tar.gz
mruby-ac88f85a9eb0d03707fc382cbaa442da146d9203.zip
Copy mrb_float values from pool when MRB_WORD_BOXING; ref #3396
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 8c91ae1e7..9684dabfd 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -859,7 +859,15 @@ RETRY_TRY_BLOCK:
CASE(OP_LOADL) {
/* A Bx R(A) := Pool(Bx) */
+#ifdef MRB_WORD_BOXING
+ mrb_value val = pool[GETARG_Bx(i)];
+ if (mrb_float_p(val)) {
+ val = mrb_float_value(mrb, mrb_float(val));
+ }
+ regs[GETARG_A(i)] = val;
+#else
regs[GETARG_A(i)] = pool[GETARG_Bx(i)];
+#endif
NEXT;
}