Browse Source

FFI: ctypeid of ctype object is immutable.

Mike Pall 13 năm trước cách đây
mục cha
commit
e013206dd8
2 tập tin đã thay đổi với 2 bổ sung2 xóa
  1. 1 2
      src/lj_crecord.c
  2. 1 0
      src/lj_opt_fold.c

+ 1 - 2
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;
 }

+ 1 - 0
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)
 {