diff options
Diffstat (limited to 'src/lib_jit.c')
-rw-r--r-- | src/lib_jit.c | 11 |
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) |