aboutsummaryrefslogtreecommitdiff
path: root/src/lib_jit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib_jit.c')
-rw-r--r--src/lib_jit.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lib_jit.c b/src/lib_jit.c
index 125b48ce..555e581c 100644
--- a/src/lib_jit.c
+++ b/src/lib_jit.c
@@ -16,7 +16,11 @@
16#include "lj_debug.h" 16#include "lj_debug.h"
17#include "lj_str.h" 17#include "lj_str.h"
18#include "lj_tab.h" 18#include "lj_tab.h"
19#include "lj_state.h"
19#include "lj_bc.h" 20#include "lj_bc.h"
21#if LJ_HASFFI
22#include "lj_ctype.h"
23#endif
20#if LJ_HASJIT 24#if LJ_HASJIT
21#include "lj_ir.h" 25#include "lj_ir.h"
22#include "lj_jit.h" 26#include "lj_jit.h"
@@ -332,6 +336,13 @@ LJLIB_CF(jit_util_tracek)
332 slot = ir->op2; 336 slot = ir->op2;
333 ir = &T->ir[ir->op1]; 337 ir = &T->ir[ir->op1];
334 } 338 }
339#if LJ_HASFFI
340 if (ir->o == IR_KINT64 && !ctype_ctsG(G(L))) {
341 ptrdiff_t oldtop = savestack(L, L->top);
342 luaopen_ffi(L); /* Load FFI library on-demand. */
343 L->top = restorestack(L, oldtop);
344 }
345#endif
335 lj_ir_kvalue(L, L->top-2, ir); 346 lj_ir_kvalue(L, L->top-2, ir);
336 setintV(L->top-1, (int32_t)irt_type(ir->t)); 347 setintV(L->top-1, (int32_t)irt_type(ir->t));
337 if (slot == -1) 348 if (slot == -1)