diff options
author | Mike Pall <mike> | 2021-06-01 05:16:32 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2021-06-01 05:16:32 +0200 |
commit | a119497becdf2894fb7fa737f106464309dd7947 (patch) | |
tree | 95c7f88198ba3f12eff52fd5646207ffb31da2d5 /src/lj_crecord.c | |
parent | edd5cbadc5cdc7b5b66d5340ee97c5abe5a3892a (diff) | |
download | luajit-a119497becdf2894fb7fa737f106464309dd7947.tar.gz luajit-a119497becdf2894fb7fa737f106464309dd7947.tar.bz2 luajit-a119497becdf2894fb7fa737f106464309dd7947.zip |
String buffers, part 2d: basic string buffer methods.
Sponsored by fmad.io.
Diffstat (limited to 'src/lj_crecord.c')
-rw-r--r-- | src/lj_crecord.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c index be23cd62..b0de5423 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c | |||
@@ -616,10 +616,12 @@ static TRef crec_ct_tv(jit_State *J, CType *d, TRef dp, TRef sp, cTValue *sval) | |||
616 | sp = lj_ir_kptr(J, NULL); | 616 | sp = lj_ir_kptr(J, NULL); |
617 | } else if (tref_isudata(sp)) { | 617 | } else if (tref_isudata(sp)) { |
618 | GCudata *ud = udataV(sval); | 618 | GCudata *ud = udataV(sval); |
619 | if (ud->udtype == UDTYPE_IO_FILE) { | 619 | if (ud->udtype == UDTYPE_IO_FILE || ud->udtype == UDTYPE_BUFFER) { |
620 | TRef tr = emitir(IRT(IR_FLOAD, IRT_U8), sp, IRFL_UDATA_UDTYPE); | 620 | TRef tr = emitir(IRT(IR_FLOAD, IRT_U8), sp, IRFL_UDATA_UDTYPE); |
621 | emitir(IRTGI(IR_EQ), tr, lj_ir_kint(J, UDTYPE_IO_FILE)); | 621 | emitir(IRTGI(IR_EQ), tr, lj_ir_kint(J, ud->udtype)); |
622 | sp = emitir(IRT(IR_FLOAD, IRT_PTR), sp, IRFL_UDATA_FILE); | 622 | sp = emitir(IRT(IR_FLOAD, IRT_PTR), sp, |
623 | ud->udtype == UDTYPE_IO_FILE ? IRFL_UDATA_FILE : | ||
624 | IRFL_UDATA_BUF_R); | ||
623 | } else { | 625 | } else { |
624 | 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))); |
625 | } | 627 | } |