From a014d5e65d654a49936971ad0b4c4bb495883240 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Wed, 16 Oct 2013 19:51:42 +0200 Subject: [PATCH] FFI: Compile conversions from functions to function pointers. --- src/lj_crecord.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lj_crecord.c b/src/lj_crecord.c index 78e999f2..875160cc 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c @@ -651,7 +651,13 @@ static TRef crec_ct_tv(jit_State *J, CType *d, TRef dp, TRef sp, cTValue *sval) sid = argv2cdata(J, sp, sval)->ctypeid; s = ctype_raw(cts, sid); svisnz = cdataptr(cdataV(sval)); - t = crec_ct2irt(cts, s); + if (ctype_isfunc(s->info)) { + sid = lj_ctype_intern(cts, CTINFO(CT_PTR, CTALIGN_PTR|sid), CTSIZE_PTR); + s = ctype_get(cts, sid); + t = IRT_PTR; + } else { + t = crec_ct2irt(cts, s); + } if (ctype_isptr(s->info)) { sp = emitir(IRT(IR_FLOAD, t), sp, IRFL_CDATA_PTR); if (ctype_isref(s->info)) {