]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
FFI: ctypeid of ctype object is immutable.
authorMike Pall <mike>
Thu, 27 Sep 2012 12:48:13 +0000 (14:48 +0200)
committerMike Pall <mike>
Thu, 27 Sep 2012 12:48:13 +0000 (14:48 +0200)
src/lj_crecord.c
src/lj_opt_fold.c

index 5e91737cc0e22b851c94006f6ff42a2e39afed30..99303310e8954b9381494ec7bdb68876d1073617 100644 (file)
@@ -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;
 }
index 8f1c87708143aafc1e4143dc66068828bbf38788..c1e30511c31affe5f410d14a6424a2220fd5bc8a 100644 (file)
@@ -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)
 {