[Tarantool-patches] [PATCH luajit v2] Don't compile math.modf() anymore.

Maxim Kokryashkin max.kokryashkin at gmail.com
Fri Aug 19 00:20:45 MSK 2022


From: Mike Pall <mike>

This commit disables compilation for the `math.modf` function since it's
rarely used and compiling it in a performant enough way would be
difficult.

Part of tarantool/tarantool#7230
---

There are no issues with correctenss of compilation
of math.modf whatsoever. There are no known issues with it, and all of
the possible edge cases are handled well both with active
and inactivve JIT. It's safe to assume that the `properly compiling`
in the original commit message refers to performance rather than
correctness.

PR: https://github.com/tarantool/tarantool/pull/7586
Branch: https://github.com/tarantool/luajit/tree/fckxorg/gh-7230-math-modf

 src/lib_math.c    |  2 +-
 src/lj_ffrecord.c | 16 ----------------
 2 files changed, 1 insertion(+), 17 deletions(-)

diff --git a/src/lib_math.c b/src/lib_math.c
index ef9dda2d..4e6d2458 100644
--- a/src/lib_math.c
+++ b/src/lib_math.c
@@ -45,7 +45,7 @@ LJLIB_ASM_(math_sinh)		LJLIB_REC(math_htrig IRCALL_sinh)
 LJLIB_ASM_(math_cosh)		LJLIB_REC(math_htrig IRCALL_cosh)
 LJLIB_ASM_(math_tanh)		LJLIB_REC(math_htrig IRCALL_tanh)
 LJLIB_ASM_(math_frexp)
-LJLIB_ASM_(math_modf)		LJLIB_REC(.)
+LJLIB_ASM_(math_modf)

 LJLIB_ASM(math_log)		LJLIB_REC(math_log)
 {
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c
index be890a93..ac9c9ba1 100644
--- a/src/lj_ffrecord.c
+++ b/src/lj_ffrecord.c
@@ -601,22 +601,6 @@ static void LJ_FASTCALL recff_math_htrig(jit_State *J, RecordFFData *rd)
   J->base[0] = emitir(IRTN(IR_CALLN), tr, rd->data);
 }

-static void LJ_FASTCALL recff_math_modf(jit_State *J, RecordFFData *rd)
-{
-  TRef tr = J->base[0];
-  if (tref_isinteger(tr)) {
-    J->base[0] = tr;
-    J->base[1] = lj_ir_kint(J, 0);
-  } else {
-    TRef trt;
-    tr = lj_ir_tonum(J, tr);
-    trt = emitir(IRTN(IR_FPMATH), tr, IRFPM_TRUNC);
-    J->base[0] = trt;
-    J->base[1] = emitir(IRTN(IR_SUB), tr, trt);
-  }
-  rd->nres = 2;
-}
-
 static void LJ_FASTCALL recff_math_pow(jit_State *J, RecordFFData *rd)
 {
   J->base[0] = lj_opt_narrow_pow(J, J->base[0], J->base[1],
--
2.36.1



More information about the Tarantool-patches mailing list