From e013206dd845861c2e27766ada75a98501033cfd Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Thu, 27 Sep 2012 14:48:13 +0200 Subject: [PATCH] FFI: ctypeid of ctype object is immutable. --- src/lj_crecord.c | 3 +-- src/lj_opt_fold.c | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lj_crecord.c b/src/lj_crecord.c index 5e91737c..99303310 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c @@ -61,8 +61,7 @@ static CTypeID crec_constructor(jit_State *J, GCcdata *cd, TRef tr) CTypeID id; lua_assert(tref_iscdata(tr) && cd->ctypeid == CTID_CTYPEID); id = *(CTypeID *)cdataptr(cd); - tr = emitir(IRT(IR_ADD, IRT_PTR), tr, lj_ir_kintp(J, sizeof(GCcdata))); - tr = emitir(IRT(IR_XLOAD, IRT_INT), tr, 0); + tr = emitir(IRT(IR_FLOAD, IRT_INT), tr, IRFL_CDATA_INT); emitir(IRTG(IR_EQ, IRT_INT), tr, lj_ir_kint(J, (int32_t)id)); return id; } diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 8f1c8770..c1e30511 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c @@ -1992,6 +1992,7 @@ LJFOLDF(fload_cdata_typeid_kgc) /* Get the contents of immutable cdata objects. */ LJFOLD(FLOAD KGC IRFL_CDATA_PTR) +LJFOLD(FLOAD KGC IRFL_CDATA_INT) LJFOLD(FLOAD KGC IRFL_CDATA_INT64) LJFOLDF(fload_cdata_int64_kgc) {