aboutsummaryrefslogtreecommitdiff
path: root/src/lj_crecord.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_crecord.c')
-rw-r--r--src/lj_crecord.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index aa4c5842..95850611 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -621,7 +621,7 @@ static TRef crec_ct_tv(jit_State *J, CType *d, TRef dp, TRef sp, cTValue *sval)
621 emitir(IRTGI(IR_EQ), tr, lj_ir_kint(J, ud->udtype)); 621 emitir(IRTGI(IR_EQ), tr, lj_ir_kint(J, ud->udtype));
622 sp = emitir(IRT(IR_FLOAD, IRT_PTR), sp, 622 sp = emitir(IRT(IR_FLOAD, IRT_PTR), sp,
623 ud->udtype == UDTYPE_IO_FILE ? IRFL_UDATA_FILE : 623 ud->udtype == UDTYPE_IO_FILE ? IRFL_UDATA_FILE :
624 IRFL_UDATA_BUF_R); 624 IRFL_SBUF_R);
625 } else { 625 } else {
626 sp = emitir(IRT(IR_ADD, IRT_PTR), sp, lj_ir_kintp(J, sizeof(GCudata))); 626 sp = emitir(IRT(IR_ADD, IRT_PTR), sp, lj_ir_kintp(J, sizeof(GCudata)));
627 } 627 }
@@ -1918,10 +1918,25 @@ TRef lj_crecord_loadiu64(jit_State *J, TRef tr, cTValue *o)
1918 CTypeID id = argv2cdata(J, tr, o)->ctypeid; 1918 CTypeID id = argv2cdata(J, tr, o)->ctypeid;
1919 if (!(id == CTID_INT64 || id == CTID_UINT64)) 1919 if (!(id == CTID_INT64 || id == CTID_UINT64))
1920 lj_trace_err(J, LJ_TRERR_BADTYPE); 1920 lj_trace_err(J, LJ_TRERR_BADTYPE);
1921 lj_needsplit(J);
1921 return emitir(IRT(IR_FLOAD, id == CTID_INT64 ? IRT_I64 : IRT_U64), tr, 1922 return emitir(IRT(IR_FLOAD, id == CTID_INT64 ? IRT_I64 : IRT_U64), tr,
1922 IRFL_CDATA_INT64); 1923 IRFL_CDATA_INT64);
1923} 1924}
1924 1925
1926#if LJ_HASBUFFER
1927TRef lj_crecord_topcvoid(jit_State *J, TRef tr, cTValue *o)
1928{
1929 CTState *cts = ctype_ctsG(J2G(J));
1930 if (!tref_iscdata(tr)) lj_trace_err(J, LJ_TRERR_BADTYPE);
1931 return crec_ct_tv(J, ctype_get(cts, CTID_P_CVOID), 0, tr, o);
1932}
1933
1934TRef lj_crecord_topuint8(jit_State *J, TRef tr)
1935{
1936 return emitir(IRTG(IR_CNEWI, IRT_CDATA), lj_ir_kint(J, CTID_P_UINT8), tr);
1937}
1938#endif
1939
1925#undef IR 1940#undef IR
1926#undef emitir 1941#undef emitir
1927#undef emitconv 1942#undef emitconv