diff options
Diffstat (limited to 'src/lj_crecord.c')
-rw-r--r-- | src/lj_crecord.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c index 743137de..180f255c 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c | |||
@@ -969,6 +969,10 @@ void LJ_FASTCALL recff_cdata_arith(jit_State *J, RecordFFData *rd) | |||
969 | tr = emitir(IRT(IR_FLOAD, t), tr, IRFL_CDATA_INT64); | 969 | tr = emitir(IRT(IR_FLOAD, t), tr, IRFL_CDATA_INT64); |
970 | lj_needsplit(J); | 970 | lj_needsplit(J); |
971 | goto ok; | 971 | goto ok; |
972 | } else if (ctype_isfunc(ct->info)) { | ||
973 | tr = emitir(IRT(IR_FLOAD, IRT_PTR), tr, IRFL_CDATA_PTR); | ||
974 | ct = ctype_get(cts, | ||
975 | lj_ctype_intern(cts, CTINFO(CT_PTR, CTALIGN_PTR|id), CTSIZE_PTR)); | ||
972 | } else { | 976 | } else { |
973 | tr = emitir(IRT(IR_ADD, IRT_PTR), tr, lj_ir_kintp(J, sizeof(GCcdata))); | 977 | tr = emitir(IRT(IR_ADD, IRT_PTR), tr, lj_ir_kintp(J, sizeof(GCcdata))); |
974 | } | 978 | } |