Avoid pesky compiler warnings about C++ keywords (eh?).

This commit is contained in:
Mike Pall 2012-07-03 13:19:32 +02:00
parent c740a30223
commit 17d3fc47f3
18 changed files with 97 additions and 97 deletions

View File

@ -198,7 +198,7 @@ LJLIB_ASM(tonumber) LJLIB_REC(.)
#if LJ_HASFFI #if LJ_HASFFI
if (tviscdata(o)) { if (tviscdata(o)) {
CTState *cts = ctype_cts(L); CTState *cts = ctype_cts(L);
CType *ct = lj_ctype_rawref(cts, cdataV(o)->typeid); CType *ct = lj_ctype_rawref(cts, cdataV(o)->ctypeid);
if (ctype_isenum(ct->info)) ct = ctype_child(cts, ct); if (ctype_isenum(ct->info)) ct = ctype_child(cts, ct);
if (ctype_isnum(ct->info) || ctype_iscomplex(ct->info)) { if (ctype_isnum(ct->info) || ctype_iscomplex(ct->info)) {
if (LJ_DUALNUM && ctype_isinteger_or_bool(ct->info) && if (LJ_DUALNUM && ctype_isinteger_or_bool(ct->info) &&

View File

@ -60,7 +60,7 @@ static CTypeID ffi_checkctype(lua_State *L, CTState *cts, TValue *param)
if (!tviscdata(o)) goto err_argtype; if (!tviscdata(o)) goto err_argtype;
if (param && param < L->top) lj_err_arg(L, 1, LJ_ERR_FFI_NUMPARAM); if (param && param < L->top) lj_err_arg(L, 1, LJ_ERR_FFI_NUMPARAM);
cd = cdataV(o); cd = cdataV(o);
return cd->typeid == CTID_CTYPEID ? *(CTypeID *)cdataptr(cd) : cd->typeid; return cd->ctypeid == CTID_CTYPEID ? *(CTypeID *)cdataptr(cd) : cd->ctypeid;
} }
} }
@ -213,11 +213,11 @@ LJLIB_CF(ffi_meta___call) LJLIB_REC(cdata_call)
{ {
CTState *cts = ctype_cts(L); CTState *cts = ctype_cts(L);
GCcdata *cd = ffi_checkcdata(L, 1); GCcdata *cd = ffi_checkcdata(L, 1);
CTypeID id = cd->typeid; CTypeID id = cd->ctypeid;
CType *ct; CType *ct;
cTValue *tv; cTValue *tv;
MMS mm = MM_call; MMS mm = MM_call;
if (cd->typeid == CTID_CTYPEID) { if (cd->ctypeid == CTID_CTYPEID) {
id = *(CTypeID *)cdataptr(cd); id = *(CTypeID *)cdataptr(cd);
mm = MM_new; mm = MM_new;
} else { } else {
@ -276,7 +276,7 @@ LJLIB_CF(ffi_meta___tostring)
{ {
GCcdata *cd = ffi_checkcdata(L, 1); GCcdata *cd = ffi_checkcdata(L, 1);
const char *msg = "cdata<%s>: %p"; const char *msg = "cdata<%s>: %p";
CTypeID id = cd->typeid; CTypeID id = cd->ctypeid;
void *p = cdataptr(cd); void *p = cdataptr(cd);
if (id == CTID_CTYPEID) { if (id == CTID_CTYPEID) {
msg = "ctype<%s>"; msg = "ctype<%s>";
@ -340,7 +340,7 @@ LJLIB_CF(ffi_clib___index) LJLIB_REC(clib_index 1)
if (tviscdata(tv)) { if (tviscdata(tv)) {
CTState *cts = ctype_cts(L); CTState *cts = ctype_cts(L);
GCcdata *cd = cdataV(tv); GCcdata *cd = cdataV(tv);
CType *s = ctype_get(cts, cd->typeid); CType *s = ctype_get(cts, cd->ctypeid);
if (ctype_isextern(s->info)) { if (ctype_isextern(s->info)) {
CTypeID sid = ctype_cid(s->info); CTypeID sid = ctype_cid(s->info);
void *sp = *(void **)cdataptr(cd); void *sp = *(void **)cdataptr(cd);
@ -362,7 +362,7 @@ LJLIB_CF(ffi_clib___newindex) LJLIB_REC(clib_index 0)
if (o < L->top && tviscdata(tv)) { if (o < L->top && tviscdata(tv)) {
CTState *cts = ctype_cts(L); CTState *cts = ctype_cts(L);
GCcdata *cd = cdataV(tv); GCcdata *cd = cdataV(tv);
CType *d = ctype_get(cts, cd->typeid); CType *d = ctype_get(cts, cd->ctypeid);
if (ctype_isextern(d->info)) { if (ctype_isextern(d->info)) {
CTInfo qual = 0; CTInfo qual = 0;
for (;;) { /* Skip attributes and collect qualifiers. */ for (;;) { /* Skip attributes and collect qualifiers. */
@ -398,7 +398,7 @@ static int ffi_callback_set(lua_State *L, GCfunc *fn)
{ {
GCcdata *cd = ffi_checkcdata(L, 1); GCcdata *cd = ffi_checkcdata(L, 1);
CTState *cts = ctype_cts(L); CTState *cts = ctype_cts(L);
CType *ct = ctype_raw(cts, cd->typeid); CType *ct = ctype_raw(cts, cd->ctypeid);
if (ctype_isptr(ct->info) && (LJ_32 || ct->size == 8)) { if (ctype_isptr(ct->info) && (LJ_32 || ct->size == 8)) {
MSize slot = lj_ccallback_ptr2slot(cts, *(void **)cdataptr(cd)); MSize slot = lj_ccallback_ptr2slot(cts, *(void **)cdataptr(cd));
if (slot < cts->cb.sizeid && cts->cb.cbid[slot] != 0) { if (slot < cts->cb.sizeid && cts->cb.cbid[slot] != 0) {
@ -504,7 +504,7 @@ LJLIB_CF(ffi_cast) LJLIB_REC(ffi_new)
L->top = o+1; /* Make sure this is the last item on the stack. */ L->top = o+1; /* Make sure this is the last item on the stack. */
if (!(ctype_isnum(d->info) || ctype_isptr(d->info) || ctype_isenum(d->info))) if (!(ctype_isnum(d->info) || ctype_isptr(d->info) || ctype_isenum(d->info)))
lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE); lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE);
if (!(tviscdata(o) && cdataV(o)->typeid == id)) { if (!(tviscdata(o) && cdataV(o)->ctypeid == id)) {
GCcdata *cd = lj_cdata_new(cts, id, d->size); GCcdata *cd = lj_cdata_new(cts, id, d->size);
lj_cconv_ct_tv(cts, d, cdataptr(cd), o, CCF_CAST); lj_cconv_ct_tv(cts, d, cdataptr(cd), o, CCF_CAST);
setcdataV(L, o, cd); setcdataV(L, o, cd);
@ -532,8 +532,8 @@ LJLIB_CF(ffi_istype) LJLIB_REC(ffi_istype)
int b = 0; int b = 0;
if (tviscdata(o)) { if (tviscdata(o)) {
GCcdata *cd = cdataV(o); GCcdata *cd = cdataV(o);
CTypeID id2 = cd->typeid == CTID_CTYPEID ? *(CTypeID *)cdataptr(cd) : CTypeID id2 = cd->ctypeid == CTID_CTYPEID ? *(CTypeID *)cdataptr(cd) :
cd->typeid; cd->ctypeid;
CType *ct1 = lj_ctype_rawref(cts, id1); CType *ct1 = lj_ctype_rawref(cts, id1);
CType *ct2 = lj_ctype_rawref(cts, id2); CType *ct2 = lj_ctype_rawref(cts, id2);
if (ct1 == ct2) { if (ct1 == ct2) {
@ -735,7 +735,7 @@ LJLIB_CF(ffi_gc)
TValue *fin = lj_lib_checkany(L, 2); TValue *fin = lj_lib_checkany(L, 2);
CTState *cts = ctype_cts(L); CTState *cts = ctype_cts(L);
GCtab *t = cts->finalizer; GCtab *t = cts->finalizer;
CType *ct = ctype_raw(cts, cd->typeid); CType *ct = ctype_raw(cts, cd->ctypeid);
if (!(ctype_isptr(ct->info) || ctype_isstruct(ct->info) || if (!(ctype_isptr(ct->info) || ctype_isstruct(ct->info) ||
ctype_isrefarray(ct->info))) ctype_isrefarray(ct->info)))
lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE); lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE);

View File

@ -947,9 +947,9 @@ static void asm_sload(ASMState *as, IRIns *ir)
static void asm_cnew(ASMState *as, IRIns *ir) static void asm_cnew(ASMState *as, IRIns *ir)
{ {
CTState *cts = ctype_ctsG(J2G(as->J)); CTState *cts = ctype_ctsG(J2G(as->J));
CTypeID typeid = (CTypeID)IR(ir->op1)->i; CTypeID ctypeid = (CTypeID)IR(ir->op1)->i;
CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ? CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ?
lj_ctype_size(cts, typeid) : (CTSize)IR(ir->op2)->i; lj_ctype_size(cts, ctypeid) : (CTSize)IR(ir->op2)->i;
const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco]; const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco];
IRRef args[2]; IRRef args[2];
RegSet allow = (RSET_GPR & ~RSET_SCRATCH); RegSet allow = (RSET_GPR & ~RSET_SCRATCH);
@ -982,12 +982,12 @@ static void asm_cnew(ASMState *as, IRIns *ir)
ofs -= 4; ir--; ofs -= 4; ir--;
} }
} }
/* Initialize gct and typeid. lj_mem_newgco() already sets marked. */ /* Initialize gct and ctypeid. lj_mem_newgco() already sets marked. */
{ {
uint32_t k = emit_isk12(ARMI_MOV, typeid); uint32_t k = emit_isk12(ARMI_MOV, ctypeid);
Reg r = k ? RID_R1 : ra_allock(as, typeid, allow); Reg r = k ? RID_R1 : ra_allock(as, ctypeid, allow);
emit_lso(as, ARMI_STRB, RID_TMP, RID_RET, offsetof(GCcdata, gct)); emit_lso(as, ARMI_STRB, RID_TMP, RID_RET, offsetof(GCcdata, gct));
emit_lsox(as, ARMI_STRH, r, RID_RET, offsetof(GCcdata, typeid)); emit_lsox(as, ARMI_STRH, r, RID_RET, offsetof(GCcdata, ctypeid));
emit_d(as, ARMI_MOV|ARMI_K12|~LJ_TCDATA, RID_TMP); emit_d(as, ARMI_MOV|ARMI_K12|~LJ_TCDATA, RID_TMP);
if (k) emit_d(as, ARMI_MOV^k, RID_R1); if (k) emit_d(as, ARMI_MOV^k, RID_R1);
} }

View File

@ -1043,9 +1043,9 @@ dotypecheck:
static void asm_cnew(ASMState *as, IRIns *ir) static void asm_cnew(ASMState *as, IRIns *ir)
{ {
CTState *cts = ctype_ctsG(J2G(as->J)); CTState *cts = ctype_ctsG(J2G(as->J));
CTypeID typeid = (CTypeID)IR(ir->op1)->i; CTypeID ctypeid = (CTypeID)IR(ir->op1)->i;
CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ? CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ?
lj_ctype_size(cts, typeid) : (CTSize)IR(ir->op2)->i; lj_ctype_size(cts, ctypeid) : (CTSize)IR(ir->op2)->i;
const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco]; const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco];
IRRef args[2]; IRRef args[2];
RegSet allow = (RSET_GPR & ~RSET_SCRATCH); RegSet allow = (RSET_GPR & ~RSET_SCRATCH);
@ -1079,11 +1079,11 @@ static void asm_cnew(ASMState *as, IRIns *ir)
ofs -= 4; if (LJ_BE) ir++; else ir--; ofs -= 4; if (LJ_BE) ir++; else ir--;
} }
} }
/* Initialize gct and typeid. lj_mem_newgco() already sets marked. */ /* Initialize gct and ctypeid. lj_mem_newgco() already sets marked. */
emit_tsi(as, MIPSI_SB, RID_RET+1, RID_RET, offsetof(GCcdata, gct)); emit_tsi(as, MIPSI_SB, RID_RET+1, RID_RET, offsetof(GCcdata, gct));
emit_tsi(as, MIPSI_SH, RID_TMP, RID_RET, offsetof(GCcdata, typeid)); emit_tsi(as, MIPSI_SH, RID_TMP, RID_RET, offsetof(GCcdata, ctypeid));
emit_ti(as, MIPSI_LI, RID_RET+1, ~LJ_TCDATA); emit_ti(as, MIPSI_LI, RID_RET+1, ~LJ_TCDATA);
emit_ti(as, MIPSI_LI, RID_TMP, typeid); /* Lower 16 bit used. Sign-ext ok. */ emit_ti(as, MIPSI_LI, RID_TMP, ctypeid); /* Lower 16 bit used. Sign-ext ok. */
asm_gencall(as, ci, args); asm_gencall(as, ci, args);
ra_allockreg(as, (int32_t)(sz+sizeof(GCcdata)), ra_allockreg(as, (int32_t)(sz+sizeof(GCcdata)),
ra_releasetmp(as, ASMREF_TMP1)); ra_releasetmp(as, ASMREF_TMP1));

View File

@ -1086,9 +1086,9 @@ dotypecheck:
static void asm_cnew(ASMState *as, IRIns *ir) static void asm_cnew(ASMState *as, IRIns *ir)
{ {
CTState *cts = ctype_ctsG(J2G(as->J)); CTState *cts = ctype_ctsG(J2G(as->J));
CTypeID typeid = (CTypeID)IR(ir->op1)->i; CTypeID ctypeid = (CTypeID)IR(ir->op1)->i;
CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ? CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ?
lj_ctype_size(cts, typeid) : (CTSize)IR(ir->op2)->i; lj_ctype_size(cts, ctypeid) : (CTSize)IR(ir->op2)->i;
const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco]; const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco];
IRRef args[2]; IRRef args[2];
RegSet allow = (RSET_GPR & ~RSET_SCRATCH); RegSet allow = (RSET_GPR & ~RSET_SCRATCH);
@ -1121,11 +1121,11 @@ static void asm_cnew(ASMState *as, IRIns *ir)
ofs -= 4; ir++; ofs -= 4; ir++;
} }
} }
/* Initialize gct and typeid. lj_mem_newgco() already sets marked. */ /* Initialize gct and ctypeid. lj_mem_newgco() already sets marked. */
emit_tai(as, PPCI_STB, RID_RET+1, RID_RET, offsetof(GCcdata, gct)); emit_tai(as, PPCI_STB, RID_RET+1, RID_RET, offsetof(GCcdata, gct));
emit_tai(as, PPCI_STH, RID_TMP, RID_RET, offsetof(GCcdata, typeid)); emit_tai(as, PPCI_STH, RID_TMP, RID_RET, offsetof(GCcdata, ctypeid));
emit_ti(as, PPCI_LI, RID_RET+1, ~LJ_TCDATA); emit_ti(as, PPCI_LI, RID_RET+1, ~LJ_TCDATA);
emit_ti(as, PPCI_LI, RID_TMP, typeid); /* Lower 16 bit used. Sign-ext ok. */ emit_ti(as, PPCI_LI, RID_TMP, ctypeid); /* Lower 16 bit used. Sign-ext ok. */
asm_gencall(as, ci, args); asm_gencall(as, ci, args);
ra_allockreg(as, (int32_t)(sz+sizeof(GCcdata)), ra_allockreg(as, (int32_t)(sz+sizeof(GCcdata)),
ra_releasetmp(as, ASMREF_TMP1)); ra_releasetmp(as, ASMREF_TMP1));

View File

@ -1476,9 +1476,9 @@ static void asm_sload(ASMState *as, IRIns *ir)
static void asm_cnew(ASMState *as, IRIns *ir) static void asm_cnew(ASMState *as, IRIns *ir)
{ {
CTState *cts = ctype_ctsG(J2G(as->J)); CTState *cts = ctype_ctsG(J2G(as->J));
CTypeID typeid = (CTypeID)IR(ir->op1)->i; CTypeID ctypeid = (CTypeID)IR(ir->op1)->i;
CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ? CTSize sz = (ir->o == IR_CNEWI || ir->op2 == REF_NIL) ?
lj_ctype_size(cts, typeid) : (CTSize)IR(ir->op2)->i; lj_ctype_size(cts, ctypeid) : (CTSize)IR(ir->op2)->i;
const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco]; const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco];
IRRef args[2]; IRRef args[2];
lua_assert(sz != CTSIZE_INVALID); lua_assert(sz != CTSIZE_INVALID);
@ -1529,10 +1529,10 @@ static void asm_cnew(ASMState *as, IRIns *ir)
lua_assert(sz == 4 || sz == 8); lua_assert(sz == 4 || sz == 8);
} }
/* Combine initialization of marked, gct and typeid. */ /* Combine initialization of marked, gct and ctypeid. */
emit_movtomro(as, RID_ECX, RID_RET, offsetof(GCcdata, marked)); emit_movtomro(as, RID_ECX, RID_RET, offsetof(GCcdata, marked));
emit_gri(as, XG_ARITHi(XOg_OR), RID_ECX, emit_gri(as, XG_ARITHi(XOg_OR), RID_ECX,
(int32_t)((~LJ_TCDATA<<8)+(typeid<<16))); (int32_t)((~LJ_TCDATA<<8)+(ctypeid<<16)));
emit_gri(as, XG_ARITHi(XOg_AND), RID_ECX, LJ_GC_WHITES); emit_gri(as, XG_ARITHi(XOg_AND), RID_ECX, LJ_GC_WHITES);
emit_opgl(as, XO_MOVZXb, RID_ECX, gc.currentwhite); emit_opgl(as, XO_MOVZXb, RID_ECX, gc.currentwhite);

View File

@ -164,7 +164,7 @@ static void bcwrite_kgc(BCWriteCtx *ctx, GCproto *pt)
tp = BCDUMP_KGC_CHILD; tp = BCDUMP_KGC_CHILD;
#if LJ_HASFFI #if LJ_HASFFI
} else if (o->gch.gct == ~LJ_TCDATA) { } else if (o->gch.gct == ~LJ_TCDATA) {
CTypeID id = gco2cd(o)->typeid; CTypeID id = gco2cd(o)->ctypeid;
need = 1+4*5; need = 1+4*5;
if (id == CTID_INT64) { if (id == CTID_INT64) {
tp = BCDUMP_KGC_I64; tp = BCDUMP_KGC_I64;

View File

@ -35,7 +35,7 @@ static int carith_checkarg(lua_State *L, CTState *cts, CDArith *ca)
for (i = 0; i < 2; i++, o++) { for (i = 0; i < 2; i++, o++) {
if (tviscdata(o)) { if (tviscdata(o)) {
GCcdata *cd = cdataV(o); GCcdata *cd = cdataV(o);
CTypeID id = (CTypeID)cd->typeid; CTypeID id = (CTypeID)cd->ctypeid;
CType *ct = ctype_raw(cts, id); CType *ct = ctype_raw(cts, id);
uint8_t *p = (uint8_t *)cdataptr(cd); uint8_t *p = (uint8_t *)cdataptr(cd);
if (ctype_isptr(ct->info)) { if (ctype_isptr(ct->info)) {
@ -199,9 +199,9 @@ static int lj_carith_meta(lua_State *L, CTState *cts, CDArith *ca, MMS mm)
{ {
cTValue *tv = NULL; cTValue *tv = NULL;
if (tviscdata(L->base)) if (tviscdata(L->base))
tv = lj_ctype_meta(cts, cdataV(L->base)->typeid, mm); tv = lj_ctype_meta(cts, cdataV(L->base)->ctypeid, mm);
if (!tv && L->base+1 < L->top && tviscdata(L->base+1)) if (!tv && L->base+1 < L->top && tviscdata(L->base+1))
tv = lj_ctype_meta(cts, cdataV(L->base+1)->typeid, mm); tv = lj_ctype_meta(cts, cdataV(L->base+1)->ctypeid, mm);
if (!tv) { if (!tv) {
const char *repr[2]; const char *repr[2];
int i; int i;

View File

@ -461,7 +461,7 @@ CTypeID lj_ccall_ctid_vararg(CTState *cts, cTValue *o)
if (tvisnumber(o)) { if (tvisnumber(o)) {
return CTID_DOUBLE; return CTID_DOUBLE;
} else if (tviscdata(o)) { } else if (tviscdata(o)) {
CTypeID id = cdataV(o)->typeid; CTypeID id = cdataV(o)->ctypeid;
CType *s = ctype_get(cts, id); CType *s = ctype_get(cts, id);
if (ctype_isrefarray(s->info)) { if (ctype_isrefarray(s->info)) {
return lj_ctype_intern(cts, return lj_ctype_intern(cts,
@ -692,7 +692,7 @@ static int ccall_get_results(lua_State *L, CTState *cts, CType *ct,
int lj_ccall_func(lua_State *L, GCcdata *cd) int lj_ccall_func(lua_State *L, GCcdata *cd)
{ {
CTState *cts = ctype_cts(L); CTState *cts = ctype_cts(L);
CType *ct = ctype_raw(cts, cd->typeid); CType *ct = ctype_raw(cts, cd->ctypeid);
CTSize sz = CTSIZE_PTR; CTSize sz = CTSIZE_PTR;
if (ctype_isptr(ct->info)) { if (ctype_isptr(ct->info)) {
sz = ct->size; sz = ct->size;

View File

@ -547,7 +547,7 @@ void lj_cconv_ct_tv(CTState *cts, CType *d,
flags |= CCF_FROMTV; flags |= CCF_FROMTV;
} else if (tviscdata(o)) { } else if (tviscdata(o)) {
sp = cdataptr(cdataV(o)); sp = cdataptr(cdataV(o));
sid = cdataV(o)->typeid; sid = cdataV(o)->ctypeid;
s = ctype_get(cts, sid); s = ctype_get(cts, sid);
if (ctype_isref(s->info)) { /* Resolve reference for value. */ if (ctype_isref(s->info)) { /* Resolve reference for value. */
lua_assert(s->size == CTSIZE_PTR); lua_assert(s->size == CTSIZE_PTR);

View File

@ -46,7 +46,7 @@ GCcdata *lj_cdata_newv(CTState *cts, CTypeID id, CTSize sz, CTSize align)
newwhite(g, obj2gco(cd)); newwhite(g, obj2gco(cd));
cd->marked |= 0x80; cd->marked |= 0x80;
cd->gct = ~LJ_TCDATA; cd->gct = ~LJ_TCDATA;
cd->typeid = id; cd->ctypeid = id;
return cd; return cd;
} }
@ -66,7 +66,7 @@ void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd)
setgcref(g->gc.mmudata, obj2gco(cd)); setgcref(g->gc.mmudata, obj2gco(cd));
} }
} else if (LJ_LIKELY(!cdataisv(cd))) { } else if (LJ_LIKELY(!cdataisv(cd))) {
CType *ct = ctype_raw(ctype_ctsG(g), cd->typeid); CType *ct = ctype_raw(ctype_ctsG(g), cd->ctypeid);
CTSize sz = ctype_hassize(ct->info) ? ct->size : CTSIZE_PTR; CTSize sz = ctype_hassize(ct->info) ? ct->size : CTSIZE_PTR;
lua_assert(ctype_hassize(ct->info) || ctype_isfunc(ct->info) || lua_assert(ctype_hassize(ct->info) || ctype_isfunc(ct->info) ||
ctype_isextern(ct->info)); ctype_isextern(ct->info));
@ -101,7 +101,7 @@ CType *lj_cdata_index(CTState *cts, GCcdata *cd, cTValue *key, uint8_t **pp,
CTInfo *qual) CTInfo *qual)
{ {
uint8_t *p = (uint8_t *)cdataptr(cd); uint8_t *p = (uint8_t *)cdataptr(cd);
CType *ct = ctype_get(cts, cd->typeid); CType *ct = ctype_get(cts, cd->ctypeid);
ptrdiff_t idx; ptrdiff_t idx;
/* Resolve reference for cdata object. */ /* Resolve reference for cdata object. */
@ -140,7 +140,7 @@ collect_attrib:
} }
} else if (tviscdata(key)) { /* Integer cdata key. */ } else if (tviscdata(key)) { /* Integer cdata key. */
GCcdata *cdk = cdataV(key); GCcdata *cdk = cdataV(key);
CType *ctk = ctype_raw(cts, cdk->typeid); CType *ctk = ctype_raw(cts, cdk->ctypeid);
if (ctype_isenum(ctk->info)) ctk = ctype_child(cts, ctk); if (ctype_isenum(ctk->info)) ctk = ctype_child(cts, ctk);
if (ctype_isinteger(ctk->info)) { if (ctype_isinteger(ctk->info)) {
lj_cconv_ct_ct(cts, ctype_get(cts, CTID_INT_PSZ), ctk, lj_cconv_ct_ct(cts, ctype_get(cts, CTID_INT_PSZ), ctk,
@ -167,7 +167,7 @@ collect_attrib:
return ct; return ct;
} }
} }
} else if (cd->typeid == CTID_CTYPEID) { } else if (cd->ctypeid == CTID_CTYPEID) {
/* Allow indexing a (pointer to) struct constructor to get constants. */ /* Allow indexing a (pointer to) struct constructor to get constants. */
CType *sct = ctype_raw(cts, *(CTypeID *)p); CType *sct = ctype_raw(cts, *(CTypeID *)p);
if (ctype_isptr(sct->info)) if (ctype_isptr(sct->info))

View File

@ -44,7 +44,7 @@ static LJ_AINLINE GCcdata *lj_cdata_new(CTState *cts, CTypeID id, CTSize sz)
#endif #endif
cd = (GCcdata *)lj_mem_newgco(cts->L, sizeof(GCcdata) + sz); cd = (GCcdata *)lj_mem_newgco(cts->L, sizeof(GCcdata) + sz);
cd->gct = ~LJ_TCDATA; cd->gct = ~LJ_TCDATA;
cd->typeid = ctype_check(cts, id); cd->ctypeid = ctype_check(cts, id);
return cd; return cd;
} }
@ -53,7 +53,7 @@ static LJ_AINLINE GCcdata *lj_cdata_new_(lua_State *L, CTypeID id, CTSize sz)
{ {
GCcdata *cd = (GCcdata *)lj_mem_newgco(L, sizeof(GCcdata) + sz); GCcdata *cd = (GCcdata *)lj_mem_newgco(L, sizeof(GCcdata) + sz);
cd->gct = ~LJ_TCDATA; cd->gct = ~LJ_TCDATA;
cd->typeid = id; cd->ctypeid = id;
return cd; return cd;
} }

View File

@ -227,10 +227,10 @@ static CPToken cp_param(CPState *cp)
GCcdata *cd; GCcdata *cd;
if (!tviscdata(o)) lj_err_argtype(cp->L, o-cp->L->base+1, "type parameter"); if (!tviscdata(o)) lj_err_argtype(cp->L, o-cp->L->base+1, "type parameter");
cd = cdataV(o); cd = cdataV(o);
if (cd->typeid == CTID_CTYPEID) if (cd->ctypeid == CTID_CTYPEID)
cp->val.id = *(CTypeID *)cdataptr(cd); cp->val.id = *(CTypeID *)cdataptr(cd);
else else
cp->val.id = cd->typeid; cp->val.id = cd->ctypeid;
return '$'; return '$';
} }
} }
@ -970,16 +970,16 @@ static void cp_decl_reset(CPDecl *decl)
/* Parse constant initializer. */ /* Parse constant initializer. */
/* NYI: FP constants and strings as initializers. */ /* NYI: FP constants and strings as initializers. */
static CTypeID cp_decl_constinit(CPState *cp, CType **ctp, CTypeID typeid) static CTypeID cp_decl_constinit(CPState *cp, CType **ctp, CTypeID ctypeid)
{ {
CType *ctt = ctype_get(cp->cts, typeid); CType *ctt = ctype_get(cp->cts, ctypeid);
CTInfo info; CTInfo info;
CTSize size; CTSize size;
CPValue k; CPValue k;
CTypeID constid; CTypeID constid;
while (ctype_isattrib(ctt->info)) { /* Skip attributes. */ while (ctype_isattrib(ctt->info)) { /* Skip attributes. */
typeid = ctype_cid(ctt->info); /* Update ID, too. */ ctypeid = ctype_cid(ctt->info); /* Update ID, too. */
ctt = ctype_get(cp->cts, typeid); ctt = ctype_get(cp->cts, ctypeid);
} }
info = ctt->info; info = ctt->info;
size = ctt->size; size = ctt->size;
@ -988,7 +988,7 @@ static CTypeID cp_decl_constinit(CPState *cp, CType **ctp, CTypeID typeid)
cp_check(cp, '='); cp_check(cp, '=');
cp_expr_sub(cp, &k, 0); cp_expr_sub(cp, &k, 0);
constid = lj_ctype_new(cp->cts, ctp); constid = lj_ctype_new(cp->cts, ctp);
(*ctp)->info = CTINFO(CT_CONSTVAL, CTF_CONST|typeid); (*ctp)->info = CTINFO(CT_CONSTVAL, CTF_CONST|ctypeid);
k.u32 <<= 8*(4-size); k.u32 <<= 8*(4-size);
if ((info & CTF_UNSIGNED)) if ((info & CTF_UNSIGNED))
k.u32 >>= 8*(4-size); k.u32 >>= 8*(4-size);
@ -1352,18 +1352,18 @@ static CTypeID cp_decl_struct(CPState *cp, CPDecl *sdecl, CTInfo sinfo)
CPARSE_MODE_DIRECT|CPARSE_MODE_ABSTRACT|CPARSE_MODE_FIELD; CPARSE_MODE_DIRECT|CPARSE_MODE_ABSTRACT|CPARSE_MODE_FIELD;
for (;;) { for (;;) {
CTypeID typeid; CTypeID ctypeid;
if (lastdecl) cp_err_token(cp, '}'); if (lastdecl) cp_err_token(cp, '}');
/* Parse field declarator. */ /* Parse field declarator. */
decl.bits = CTSIZE_INVALID; decl.bits = CTSIZE_INVALID;
cp_declarator(cp, &decl); cp_declarator(cp, &decl);
typeid = cp_decl_intern(cp, &decl); ctypeid = cp_decl_intern(cp, &decl);
if ((scl & CDF_STATIC)) { /* Static constant in struct namespace. */ if ((scl & CDF_STATIC)) { /* Static constant in struct namespace. */
CType *ct; CType *ct;
CTypeID fieldid = cp_decl_constinit(cp, &ct, typeid); CTypeID fieldid = cp_decl_constinit(cp, &ct, ctypeid);
ctype_get(cp->cts, lastid)->sib = fieldid; ctype_get(cp->cts, lastid)->sib = fieldid;
lastid = fieldid; lastid = fieldid;
ctype_setname(ct, decl.name); ctype_setname(ct, decl.name);
@ -1371,7 +1371,7 @@ static CTypeID cp_decl_struct(CPState *cp, CPDecl *sdecl, CTInfo sinfo)
CTSize bsz = CTBSZ_FIELD; /* Temp. for layout phase. */ CTSize bsz = CTBSZ_FIELD; /* Temp. for layout phase. */
CType *ct; CType *ct;
CTypeID fieldid = lj_ctype_new(cp->cts, &ct); /* Do this first. */ CTypeID fieldid = lj_ctype_new(cp->cts, &ct); /* Do this first. */
CType *tct = ctype_raw(cp->cts, typeid); CType *tct = ctype_raw(cp->cts, ctypeid);
if (decl.bits == CTSIZE_INVALID) { /* Regular field. */ if (decl.bits == CTSIZE_INVALID) { /* Regular field. */
if (ctype_isarray(tct->info) && tct->size == CTSIZE_INVALID) if (ctype_isarray(tct->info) && tct->size == CTSIZE_INVALID)
@ -1382,7 +1382,7 @@ static CTypeID cp_decl_struct(CPState *cp, CPDecl *sdecl, CTInfo sinfo)
if (!((ctype_isstruct(tct->info) && !(tct->info & CTF_VLA)) || if (!((ctype_isstruct(tct->info) && !(tct->info & CTF_VLA)) ||
ctype_isenum(tct->info))) ctype_isenum(tct->info)))
cp_err_token(cp, CTOK_IDENT); cp_err_token(cp, CTOK_IDENT);
ct->info = CTINFO(CT_ATTRIB, CTATTRIB(CTA_SUBTYPE) + typeid); ct->info = CTINFO(CT_ATTRIB, CTATTRIB(CTA_SUBTYPE) + ctypeid);
ct->size = ctype_isstruct(tct->info) ? ct->size = ctype_isstruct(tct->info) ?
(decl.attr|0x80000000u) : 0; /* For layout phase. */ (decl.attr|0x80000000u) : 0; /* For layout phase. */
goto add_field; goto add_field;
@ -1396,7 +1396,7 @@ static CTypeID cp_decl_struct(CPState *cp, CPDecl *sdecl, CTInfo sinfo)
} }
/* Create temporary field for layout phase. */ /* Create temporary field for layout phase. */
ct->info = CTINFO(CT_FIELD, typeid + (bsz << CTSHIFT_BITCSZ)); ct->info = CTINFO(CT_FIELD, ctypeid + (bsz << CTSHIFT_BITCSZ));
ct->size = decl.attr; ct->size = decl.attr;
if (decl.name) ctype_setname(ct, decl.name); if (decl.name) ctype_setname(ct, decl.name);
@ -1601,7 +1601,7 @@ static void cp_decl_func(CPState *cp, CPDecl *fdecl)
if (cp->tok != ')') { if (cp->tok != ')') {
do { do {
CPDecl decl; CPDecl decl;
CTypeID typeid, fieldid; CTypeID ctypeid, fieldid;
CType *ct; CType *ct;
if (cp_opt(cp, '.')) { /* Vararg function. */ if (cp_opt(cp, '.')) { /* Vararg function. */
cp_check(cp, '.'); /* Workaround for the minimalistic lexer. */ cp_check(cp, '.'); /* Workaround for the minimalistic lexer. */
@ -1612,16 +1612,16 @@ static void cp_decl_func(CPState *cp, CPDecl *fdecl)
cp_decl_spec(cp, &decl, CDF_REGISTER); cp_decl_spec(cp, &decl, CDF_REGISTER);
decl.mode = CPARSE_MODE_DIRECT|CPARSE_MODE_ABSTRACT; decl.mode = CPARSE_MODE_DIRECT|CPARSE_MODE_ABSTRACT;
cp_declarator(cp, &decl); cp_declarator(cp, &decl);
typeid = cp_decl_intern(cp, &decl); ctypeid = cp_decl_intern(cp, &decl);
ct = ctype_raw(cp->cts, typeid); ct = ctype_raw(cp->cts, ctypeid);
if (ctype_isvoid(ct->info)) if (ctype_isvoid(ct->info))
break; break;
else if (ctype_isrefarray(ct->info)) else if (ctype_isrefarray(ct->info))
typeid = lj_ctype_intern(cp->cts, ctypeid = lj_ctype_intern(cp->cts,
CTINFO(CT_PTR, CTALIGN_PTR|ctype_cid(ct->info)), CTSIZE_PTR); CTINFO(CT_PTR, CTALIGN_PTR|ctype_cid(ct->info)), CTSIZE_PTR);
else if (ctype_isfunc(ct->info)) else if (ctype_isfunc(ct->info))
typeid = lj_ctype_intern(cp->cts, ctypeid = lj_ctype_intern(cp->cts,
CTINFO(CT_PTR, CTALIGN_PTR|typeid), CTSIZE_PTR); CTINFO(CT_PTR, CTALIGN_PTR|ctypeid), CTSIZE_PTR);
/* Add new parameter. */ /* Add new parameter. */
fieldid = lj_ctype_new(cp->cts, &ct); fieldid = lj_ctype_new(cp->cts, &ct);
if (anchor) if (anchor)
@ -1630,7 +1630,7 @@ static void cp_decl_func(CPState *cp, CPDecl *fdecl)
anchor = fieldid; anchor = fieldid;
lastid = fieldid; lastid = fieldid;
if (decl.name) ctype_setname(ct, decl.name); if (decl.name) ctype_setname(ct, decl.name);
ct->info = CTINFO(CT_FIELD, typeid); ct->info = CTINFO(CT_FIELD, ctypeid);
ct->size = nargs++; ct->size = nargs++;
} while (cp_opt(cp, ',')); } while (cp_opt(cp, ','));
} }
@ -1794,28 +1794,28 @@ static void cp_decl_multi(CPState *cp)
goto decl_end; /* Accept empty declaration of struct/union/enum. */ goto decl_end; /* Accept empty declaration of struct/union/enum. */
} }
for (;;) { for (;;) {
CTypeID typeid; CTypeID ctypeid;
cp_declarator(cp, &decl); cp_declarator(cp, &decl);
typeid = cp_decl_intern(cp, &decl); ctypeid = cp_decl_intern(cp, &decl);
if (decl.name && !decl.nameid) { /* NYI: redeclarations are ignored. */ if (decl.name && !decl.nameid) { /* NYI: redeclarations are ignored. */
CType *ct; CType *ct;
CTypeID id; CTypeID id;
if ((scl & CDF_TYPEDEF)) { /* Create new typedef. */ if ((scl & CDF_TYPEDEF)) { /* Create new typedef. */
id = lj_ctype_new(cp->cts, &ct); id = lj_ctype_new(cp->cts, &ct);
ct->info = CTINFO(CT_TYPEDEF, typeid); ct->info = CTINFO(CT_TYPEDEF, ctypeid);
goto noredir; goto noredir;
} else if (ctype_isfunc(ctype_get(cp->cts, typeid)->info)) { } else if (ctype_isfunc(ctype_get(cp->cts, ctypeid)->info)) {
/* Treat both static and extern function declarations as extern. */ /* Treat both static and extern function declarations as extern. */
ct = ctype_get(cp->cts, typeid); ct = ctype_get(cp->cts, ctypeid);
/* We always get new anonymous functions (typedefs are copied). */ /* We always get new anonymous functions (typedefs are copied). */
lua_assert(gcref(ct->name) == NULL); lua_assert(gcref(ct->name) == NULL);
id = typeid; /* Just name it. */ id = ctypeid; /* Just name it. */
} else if ((scl & CDF_STATIC)) { /* Accept static constants. */ } else if ((scl & CDF_STATIC)) { /* Accept static constants. */
id = cp_decl_constinit(cp, &ct, typeid); id = cp_decl_constinit(cp, &ct, ctypeid);
goto noredir; goto noredir;
} else { /* External references have extern or no storage class. */ } else { /* External references have extern or no storage class. */
id = lj_ctype_new(cp->cts, &ct); id = lj_ctype_new(cp->cts, &ct);
ct->info = CTINFO(CT_EXTERN, typeid); ct->info = CTINFO(CT_EXTERN, ctypeid);
} }
if (decl.redir) { /* Add attribute for redirected symbol name. */ if (decl.redir) { /* Add attribute for redirected symbol name. */
CType *cta; CType *cta;

View File

@ -50,8 +50,8 @@ static GCcdata *argv2cdata(jit_State *J, TRef tr, cTValue *o)
lj_trace_err(J, LJ_TRERR_BADTYPE); lj_trace_err(J, LJ_TRERR_BADTYPE);
cd = cdataV(o); cd = cdataV(o);
/* Specialize to the CTypeID. */ /* Specialize to the CTypeID. */
trtypeid = emitir(IRT(IR_FLOAD, IRT_U16), tr, IRFL_CDATA_TYPEID); trtypeid = emitir(IRT(IR_FLOAD, IRT_U16), tr, IRFL_CDATA_CTYPEID);
emitir(IRTG(IR_EQ, IRT_INT), trtypeid, lj_ir_kint(J, (int32_t)cd->typeid)); emitir(IRTG(IR_EQ, IRT_INT), trtypeid, lj_ir_kint(J, (int32_t)cd->ctypeid));
return cd; return cd;
} }
@ -59,7 +59,7 @@ static GCcdata *argv2cdata(jit_State *J, TRef tr, cTValue *o)
static CTypeID crec_constructor(jit_State *J, GCcdata *cd, TRef tr) static CTypeID crec_constructor(jit_State *J, GCcdata *cd, TRef tr)
{ {
CTypeID id; CTypeID id;
lua_assert(tref_iscdata(tr) && cd->typeid == CTID_CTYPEID); lua_assert(tref_iscdata(tr) && cd->ctypeid == CTID_CTYPEID);
id = *(CTypeID *)cdataptr(cd); id = *(CTypeID *)cdataptr(cd);
tr = emitir(IRT(IR_ADD, IRT_PTR), tr, lj_ir_kintp(J, sizeof(GCcdata))); 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_XLOAD, IRT_INT), tr, 0);
@ -87,8 +87,8 @@ static CTypeID argv2ctype(jit_State *J, TRef tr, cTValue *o)
return cp.val.id; return cp.val.id;
} else { } else {
GCcdata *cd = argv2cdata(J, tr, o); GCcdata *cd = argv2cdata(J, tr, o);
return cd->typeid == CTID_CTYPEID ? crec_constructor(J, cd, tr) : return cd->ctypeid == CTID_CTYPEID ? crec_constructor(J, cd, tr) :
cd->typeid; cd->ctypeid;
} }
} }
@ -415,7 +415,7 @@ static TRef crec_ct_tv(jit_State *J, CType *d, TRef dp, TRef sp, cTValue *sval)
} }
} else { /* NYI: tref_istab(sp), tref_islightud(sp). */ } else { /* NYI: tref_istab(sp), tref_islightud(sp). */
IRType t; IRType t;
sid = argv2cdata(J, sp, sval)->typeid; sid = argv2cdata(J, sp, sval)->ctypeid;
s = ctype_raw(cts, sid); s = ctype_raw(cts, sid);
svisnz = cdataptr(cdataV(sval)); svisnz = cdataptr(cdataV(sval));
if (ctype_isenum(s->info)) s = ctype_child(cts, s); if (ctype_isenum(s->info)) s = ctype_child(cts, s);
@ -514,7 +514,7 @@ void LJ_FASTCALL recff_cdata_index(jit_State *J, RecordFFData *rd)
ptrdiff_t ofs = sizeof(GCcdata); ptrdiff_t ofs = sizeof(GCcdata);
GCcdata *cd = argv2cdata(J, ptr, &rd->argv[0]); GCcdata *cd = argv2cdata(J, ptr, &rd->argv[0]);
CTState *cts = ctype_ctsG(J2G(J)); CTState *cts = ctype_ctsG(J2G(J));
CType *ct = ctype_raw(cts, cd->typeid); CType *ct = ctype_raw(cts, cd->ctypeid);
CTypeID sid = 0; CTypeID sid = 0;
/* Resolve pointer or reference for cdata object. */ /* Resolve pointer or reference for cdata object. */
@ -553,7 +553,7 @@ again:
} }
} else if (tref_iscdata(idx)) { } else if (tref_iscdata(idx)) {
GCcdata *cdk = cdataV(&rd->argv[1]); GCcdata *cdk = cdataV(&rd->argv[1]);
CType *ctk = ctype_raw(cts, cdk->typeid); CType *ctk = ctype_raw(cts, cdk->ctypeid);
IRType t; IRType t;
if (ctype_isenum(ctk->info)) ctk = ctype_child(cts, ctk); if (ctype_isenum(ctk->info)) ctk = ctype_child(cts, ctk);
if (ctype_ispointer(ct->info) && if (ctype_ispointer(ct->info) &&
@ -577,7 +577,7 @@ again:
} }
} else if (tref_isstr(idx)) { } else if (tref_isstr(idx)) {
GCstr *name = strV(&rd->argv[1]); GCstr *name = strV(&rd->argv[1]);
if (cd->typeid == CTID_CTYPEID) if (cd->ctypeid == CTID_CTYPEID)
ct = ctype_raw(cts, crec_constructor(J, cd, ptr)); ct = ctype_raw(cts, crec_constructor(J, cd, ptr));
if (ctype_isstruct(ct->info)) { if (ctype_isstruct(ct->info)) {
CTSize fofs; CTSize fofs;
@ -879,7 +879,7 @@ static void crec_snap_caller(jit_State *J)
static int crec_call(jit_State *J, RecordFFData *rd, GCcdata *cd) static int crec_call(jit_State *J, RecordFFData *rd, GCcdata *cd)
{ {
CTState *cts = ctype_ctsG(J2G(J)); CTState *cts = ctype_ctsG(J2G(J));
CType *ct = ctype_raw(cts, cd->typeid); CType *ct = ctype_raw(cts, cd->ctypeid);
IRType tp = IRT_PTR; IRType tp = IRT_PTR;
if (ctype_isptr(ct->info)) { if (ctype_isptr(ct->info)) {
tp = (LJ_64 && ct->size == 8) ? IRT_P64 : IRT_P32; tp = (LJ_64 && ct->size == 8) ? IRT_P64 : IRT_P32;
@ -946,7 +946,7 @@ void LJ_FASTCALL recff_cdata_call(jit_State *J, RecordFFData *rd)
{ {
CTState *cts = ctype_ctsG(J2G(J)); CTState *cts = ctype_ctsG(J2G(J));
GCcdata *cd = argv2cdata(J, J->base[0], &rd->argv[0]); GCcdata *cd = argv2cdata(J, J->base[0], &rd->argv[0]);
CTypeID id = cd->typeid; CTypeID id = cd->ctypeid;
CType *ct; CType *ct;
cTValue *tv; cTValue *tv;
MMS mm = MM_call; MMS mm = MM_call;
@ -1084,10 +1084,10 @@ static void crec_arith_meta(jit_State *J, CTState *cts, RecordFFData *rd)
cTValue *tv = NULL; cTValue *tv = NULL;
if (J->base[0]) { if (J->base[0]) {
if (tviscdata(&rd->argv[0])) if (tviscdata(&rd->argv[0]))
tv = lj_ctype_meta(cts, argv2cdata(J, J->base[0], &rd->argv[0])->typeid, tv = lj_ctype_meta(cts, argv2cdata(J, J->base[0], &rd->argv[0])->ctypeid,
(MMS)rd->data); (MMS)rd->data);
if (!tv && J->base[1] && tviscdata(&rd->argv[1])) if (!tv && J->base[1] && tviscdata(&rd->argv[1]))
tv = lj_ctype_meta(cts, argv2cdata(J, J->base[1], &rd->argv[1])->typeid, tv = lj_ctype_meta(cts, argv2cdata(J, J->base[1], &rd->argv[1])->ctypeid,
(MMS)rd->data); (MMS)rd->data);
} }
if (tv) { if (tv) {
@ -1115,7 +1115,7 @@ void LJ_FASTCALL recff_cdata_arith(jit_State *J, RecordFFData *rd)
if (!tr) { if (!tr) {
goto trymeta; goto trymeta;
} else if (tref_iscdata(tr)) { } else if (tref_iscdata(tr)) {
CTypeID id = argv2cdata(J, tr, &rd->argv[i])->typeid; CTypeID id = argv2cdata(J, tr, &rd->argv[i])->ctypeid;
ct = ctype_raw(cts, id); ct = ctype_raw(cts, id);
if (ctype_isptr(ct->info)) { /* Resolve pointer or reference. */ if (ctype_isptr(ct->info)) { /* Resolve pointer or reference. */
IRType t = (LJ_64 && ct->size == 8) ? IRT_P64 : IRT_P32; IRType t = (LJ_64 && ct->size == 8) ? IRT_P64 : IRT_P32;
@ -1323,7 +1323,7 @@ void LJ_FASTCALL recff_ffi_abi(jit_State *J, RecordFFData *rd)
void LJ_FASTCALL lj_crecord_tonumber(jit_State *J, RecordFFData *rd) void LJ_FASTCALL lj_crecord_tonumber(jit_State *J, RecordFFData *rd)
{ {
CTState *cts = ctype_ctsG(J2G(J)); CTState *cts = ctype_ctsG(J2G(J));
CType *d, *ct = lj_ctype_rawref(cts, cdataV(&rd->argv[0])->typeid); CType *d, *ct = lj_ctype_rawref(cts, cdataV(&rd->argv[0])->ctypeid);
if (ctype_isenum(ct->info)) ct = ctype_child(cts, ct); if (ctype_isenum(ct->info)) ct = ctype_child(cts, ct);
if (ctype_isnum(ct->info) || ctype_iscomplex(ct->info)) { if (ctype_isnum(ct->info) || ctype_iscomplex(ct->info)) {
if (ctype_isinteger_or_bool(ct->info) && ct->size <= 4 && if (ctype_isinteger_or_bool(ct->info) && ct->size <= 4 &&

View File

@ -195,7 +195,7 @@ IRFPMDEF(FPMENUM)
_(UDATA_META, offsetof(GCudata, metatable)) \ _(UDATA_META, offsetof(GCudata, metatable)) \
_(UDATA_UDTYPE, offsetof(GCudata, udtype)) \ _(UDATA_UDTYPE, offsetof(GCudata, udtype)) \
_(UDATA_FILE, sizeof(GCudata)) \ _(UDATA_FILE, sizeof(GCudata)) \
_(CDATA_TYPEID, offsetof(GCcdata, typeid)) \ _(CDATA_CTYPEID, offsetof(GCcdata, ctypeid)) \
_(CDATA_PTR, sizeof(GCcdata)) \ _(CDATA_PTR, sizeof(GCcdata)) \
_(CDATA_INT, sizeof(GCcdata)) \ _(CDATA_INT, sizeof(GCcdata)) \
_(CDATA_INT64, sizeof(GCcdata)) \ _(CDATA_INT64, sizeof(GCcdata)) \

View File

@ -264,7 +264,7 @@ enum {
/* C data object. Payload follows. */ /* C data object. Payload follows. */
typedef struct GCcdata { typedef struct GCcdata {
GCHeader; GCHeader;
uint16_t typeid; /* C type ID. */ uint16_t ctypeid; /* C type ID. */
} GCcdata; } GCcdata;
/* Prepended to variable-sized or realigned C data objects. */ /* Prepended to variable-sized or realigned C data objects. */

View File

@ -1939,11 +1939,11 @@ LJFOLDF(fload_str_len_snew)
} }
/* The C type ID of cdata objects is immutable. */ /* The C type ID of cdata objects is immutable. */
LJFOLD(FLOAD KGC IRFL_CDATA_TYPEID) LJFOLD(FLOAD KGC IRFL_CDATA_CTYPEID)
LJFOLDF(fload_cdata_typeid_kgc) LJFOLDF(fload_cdata_typeid_kgc)
{ {
if (LJ_LIKELY(J->flags & JIT_F_OPT_FOLD)) if (LJ_LIKELY(J->flags & JIT_F_OPT_FOLD))
return INTFOLD((int32_t)ir_kcdata(fleft)->typeid); return INTFOLD((int32_t)ir_kcdata(fleft)->ctypeid);
return NEXTFOLD; return NEXTFOLD;
} }
@ -1962,8 +1962,8 @@ LJFOLDF(fload_cdata_int64_kgc)
return NEXTFOLD; return NEXTFOLD;
} }
LJFOLD(FLOAD CNEW IRFL_CDATA_TYPEID) LJFOLD(FLOAD CNEW IRFL_CDATA_CTYPEID)
LJFOLD(FLOAD CNEWI IRFL_CDATA_TYPEID) LJFOLD(FLOAD CNEWI IRFL_CDATA_CTYPEID)
LJFOLDF(fload_cdata_typeid_cnew) LJFOLDF(fload_cdata_typeid_cnew)
{ {
if (LJ_LIKELY(J->flags & JIT_F_OPT_FOLD)) if (LJ_LIKELY(J->flags & JIT_F_OPT_FOLD))
@ -1983,7 +1983,7 @@ LJFOLDF(fload_cdata_ptr_int64_cnew)
} }
LJFOLD(FLOAD any IRFL_STR_LEN) LJFOLD(FLOAD any IRFL_STR_LEN)
LJFOLD(FLOAD any IRFL_CDATA_TYPEID) LJFOLD(FLOAD any IRFL_CDATA_CTYPEID)
LJFOLD(FLOAD any IRFL_CDATA_PTR) LJFOLD(FLOAD any IRFL_CDATA_PTR)
LJFOLD(FLOAD any IRFL_CDATA_INT) LJFOLD(FLOAD any IRFL_CDATA_INT)
LJFOLD(FLOAD any IRFL_CDATA_INT64) LJFOLD(FLOAD any IRFL_CDATA_INT64)

View File

@ -938,7 +938,7 @@ static void bcemit_unop(FuncState *fs, BCOp op, ExpDesc *e)
if (e->k == VKCDATA) { /* Fold in-place since cdata is not interned. */ if (e->k == VKCDATA) { /* Fold in-place since cdata is not interned. */
GCcdata *cd = cdataV(&e->u.nval); GCcdata *cd = cdataV(&e->u.nval);
int64_t *p = (int64_t *)cdataptr(cd); int64_t *p = (int64_t *)cdataptr(cd);
if (cd->typeid == CTID_COMPLEX_DOUBLE) if (cd->ctypeid == CTID_COMPLEX_DOUBLE)
p[1] ^= (int64_t)U64x(80000000,00000000); p[1] ^= (int64_t)U64x(80000000,00000000);
else else
*p = -*p; *p = -*p;