summaryrefslogtreecommitdiff
path: root/src/lj_crecord.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_crecord.c')
-rw-r--r--src/lj_crecord.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index dbd0b83b..30d315d5 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -1316,6 +1316,18 @@ void LJ_FASTCALL recff_ffi_fill(jit_State *J, RecordFFData *rd)
1316 } /* else: interpreter will throw. */ 1316 } /* else: interpreter will throw. */
1317} 1317}
1318 1318
1319void LJ_FASTCALL recff_ffi_typeof(jit_State *J, RecordFFData *rd)
1320{
1321 if (tref_iscdata(J->base[0])) {
1322 TRef trid = lj_ir_kint(J, argv2ctype(J, J->base[0], &rd->argv[0]));
1323 J->base[0] = emitir(IRTG(IR_CNEWI, IRT_CDATA),
1324 lj_ir_kint(J, CTID_CTYPEID), trid);
1325 } else {
1326 setfuncV(J->L, &J->errinfo, J->fn);
1327 lj_trace_err_info(J, LJ_TRERR_NYIFFU);
1328 }
1329}
1330
1319void LJ_FASTCALL recff_ffi_istype(jit_State *J, RecordFFData *rd) 1331void LJ_FASTCALL recff_ffi_istype(jit_State *J, RecordFFData *rd)
1320{ 1332{
1321 argv2ctype(J, J->base[0], &rd->argv[0]); 1333 argv2ctype(J, J->base[0], &rd->argv[0]);