aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm_x86.h
diff options
context:
space:
mode:
authorMike Pall <mike>2021-07-19 16:41:29 +0200
committerMike Pall <mike>2021-07-19 16:46:27 +0200
commit02bcbea8b0f1b30b75460f31fb8749fec55d1e2e (patch)
tree741a23b5d54e6bda4f254d2c4f5cec70e8a2d8d8 /src/lj_asm_x86.h
parent1d5ef35fed472140fcb4c5f9a1fee6d05a8a6591 (diff)
downloadluajit-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.h15
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
797static 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
796static void asm_tointg(ASMState *as, IRIns *ir, Reg left) 811static void asm_tointg(ASMState *as, IRIns *ir, Reg left)