aboutsummaryrefslogtreecommitdiff
path: root/src/lj_ffrecord.c
diff options
context:
space:
mode:
authorMike Pall <mike>2012-09-24 17:33:32 +0200
committerMike Pall <mike>2012-09-24 17:33:32 +0200
commitca0bb4881f17838c9d84f0df310aa1d44da9298d (patch)
tree6429dabaa8674839701050ab7655833675a54b0d /src/lj_ffrecord.c
parent4c7c2c831992c836cbdfd0bbad1dcc26fbd007cc (diff)
downloadluajit-ca0bb4881f17838c9d84f0df310aa1d44da9298d.tar.gz
luajit-ca0bb4881f17838c9d84f0df310aa1d44da9298d.tar.bz2
luajit-ca0bb4881f17838c9d84f0df310aa1d44da9298d.zip
From Lua 5.2: Add rawlen(). Needs -DLUAJIT_ENABLE_LUA52COMPAT.
Diffstat (limited to 'src/lj_ffrecord.c')
-rw-r--r--src/lj_ffrecord.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c
index 42bbc5f4..39c3140f 100644
--- a/src/lj_ffrecord.c
+++ b/src/lj_ffrecord.c
@@ -213,6 +213,19 @@ static void LJ_FASTCALL recff_rawequal(jit_State *J, RecordFFData *rd)
213 } /* else: Interpreter will throw. */ 213 } /* else: Interpreter will throw. */
214} 214}
215 215
216#if LJ_52
217static void LJ_FASTCALL recff_rawlen(jit_State *J, RecordFFData *rd)
218{
219 TRef tr = J->base[0];
220 if (tref_isstr(tr))
221 J->base[0] = emitir(IRTI(IR_FLOAD), tr, IRFL_STR_LEN);
222 else if (tref_istab(tr))
223 J->base[0] = lj_ir_call(J, IRCALL_lj_tab_len, tr);
224 /* else: Interpreter will throw. */
225 UNUSED(rd);
226}
227#endif
228
216/* Determine mode of select() call. */ 229/* Determine mode of select() call. */
217int32_t lj_ffrecord_select_mode(jit_State *J, TRef tr, TValue *tv) 230int32_t lj_ffrecord_select_mode(jit_State *J, TRef tr, TValue *tv)
218{ 231{