Begin forwarded message:

From: sergos <sergos@tarantool.org>
Subject: Re: [Tarantool-patches] [PATCH luajit v2] Don't compile math.modf() anymore.
Date: 30 November 2022, 16:23:31 GMT+3
To: Maxim Kokryashkin <m.kokryashkin@tarantool.org>

Hi!

The change looks like “I don’t know why it might not work, lets drop it”.
But since it just leads to a FUNCC and trace can be stiched thereafter
it LGTM.

Sergos

От кого: Maxim Kokryashkin via Tarantool-patches <tarantool-patches@dev.tarantool.org>
Кому: tarantool-patches@dev.tarantool.org, imun@tarantool.org, skaplun@tarantool.org
Дата: Пятница, 19 августа 2022, 0:21 +03:00
Тема: [Tarantool-patches] [PATCH luajit v2] Don't compile math.modf() anymore.
 
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