diff options
author | Mike Pall <mike> | 2021-07-19 16:41:29 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2021-07-19 16:46:27 +0200 |
commit | 02bcbea8b0f1b30b75460f31fb8749fec55d1e2e (patch) | |
tree | 741a23b5d54e6bda4f254d2c4f5cec70e8a2d8d8 /src/lj_asm_x86.h | |
parent | 1d5ef35fed472140fcb4c5f9a1fee6d05a8a6591 (diff) | |
download | luajit-02bcbea8b0f1b30b75460f31fb8749fec55d1e2e.tar.gz luajit-02bcbea8b0f1b30b75460f31fb8749fec55d1e2e.tar.bz2 luajit-02bcbea8b0f1b30b75460f31fb8749fec55d1e2e.zip |
String buffers, part 3c: Add IRBUFHDR_WRITE mode.
Sponsored by fmad.io.
Diffstat (limited to 'src/lj_asm_x86.h')
-rw-r--r-- | src/lj_asm_x86.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h index b8abf9d6..c8ed46d2 100644 --- a/src/lj_asm_x86.h +++ b/src/lj_asm_x86.h | |||
@@ -791,6 +791,21 @@ static void asm_retf(ASMState *as, IRIns *ir) | |||
791 | #endif | 791 | #endif |
792 | } | 792 | } |
793 | 793 | ||
794 | /* -- Buffer operations --------------------------------------------------- */ | ||
795 | |||
796 | #if LJ_HASBUFFER | ||
797 | static void asm_bufhdr_write(ASMState *as, Reg sb) | ||
798 | { | ||
799 | Reg tmp = ra_scratch(as, rset_exclude(RSET_GPR, sb)); | ||
800 | IRIns irgc; | ||
801 | irgc.ot = IRT(0, IRT_PGC); /* GC type. */ | ||
802 | emit_storeofs(as, &irgc, tmp, sb, offsetof(SBuf, L)); | ||
803 | emit_opgl(as, XO_ARITH(XOg_OR), tmp|REX_GC64, cur_L); | ||
804 | emit_gri(as, XG_ARITHi(XOg_AND), tmp, SBUF_MASK_FLAG); | ||
805 | emit_loadofs(as, &irgc, tmp, sb, offsetof(SBuf, L)); | ||
806 | } | ||
807 | #endif | ||
808 | |||
794 | /* -- Type conversions ---------------------------------------------------- */ | 809 | /* -- Type conversions ---------------------------------------------------- */ |
795 | 810 | ||
796 | static void asm_tointg(ASMState *as, IRIns *ir, Reg left) | 811 | static void asm_tointg(ASMState *as, IRIns *ir, Reg left) |