aboutsummaryrefslogtreecommitdiff
path: root/src/lj_ffrecord.c
diff options
context:
space:
mode:
authorMike Pall <mike>2012-10-07 15:47:11 +0200
committerMike Pall <mike>2012-10-07 15:47:11 +0200
commit0561a5693884d76db5b75f7cc746478b325b311b (patch)
treebeef0d8674adf5b0f24a101e4e92613ee85e996e /src/lj_ffrecord.c
parent0d62e2e1ab450a2d2d2291dc9da43606bd573bf7 (diff)
downloadluajit-0561a5693884d76db5b75f7cc746478b325b311b.tar.gz
luajit-0561a5693884d76db5b75f7cc746478b325b311b.tar.bz2
luajit-0561a5693884d76db5b75f7cc746478b325b311b.zip
From Lua 5.2: Add math.log(x, base).
Diffstat (limited to 'src/lj_ffrecord.c')
-rw-r--r--src/lj_ffrecord.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c
index b9e0d8f9..270c10c5 100644
--- a/src/lj_ffrecord.c
+++ b/src/lj_ffrecord.c
@@ -447,6 +447,28 @@ static void LJ_FASTCALL recff_math_unary(jit_State *J, RecordFFData *rd)
447 J->base[0] = emitir(IRTN(IR_FPMATH), lj_ir_tonum(J, J->base[0]), rd->data); 447 J->base[0] = emitir(IRTN(IR_FPMATH), lj_ir_tonum(J, J->base[0]), rd->data);
448} 448}
449 449
450/* Record math.log. */
451static void LJ_FASTCALL recff_math_log(jit_State *J, RecordFFData *rd)
452{
453 TRef tr = lj_ir_tonum(J, J->base[0]);
454 if (J->base[1]) {
455#ifdef LUAJIT_NO_LOG2
456 uint32_t fpm = IRFPM_LOG;
457#else
458 uint32_t fpm = IRFPM_LOG2;
459#endif
460 TRef trb = lj_ir_tonum(J, J->base[1]);
461 tr = emitir(IRTN(IR_FPMATH), tr, fpm);
462 trb = emitir(IRTN(IR_FPMATH), trb, fpm);
463 trb = emitir(IRTN(IR_DIV), lj_ir_knum_one(J), trb);
464 tr = emitir(IRTN(IR_MUL), tr, trb);
465 } else {
466 tr = emitir(IRTN(IR_FPMATH), tr, IRFPM_LOG);
467 }
468 J->base[0] = tr;
469 UNUSED(rd);
470}
471
450/* Record math.atan2. */ 472/* Record math.atan2. */
451static void LJ_FASTCALL recff_math_atan2(jit_State *J, RecordFFData *rd) 473static void LJ_FASTCALL recff_math_atan2(jit_State *J, RecordFFData *rd)
452{ 474{