aboutsummaryrefslogtreecommitdiff
path: root/src/lj_buf.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_buf.h')
-rw-r--r--src/lj_buf.h16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lj_buf.h b/src/lj_buf.h
index 02f0ac61..b97d55ef 100644
--- a/src/lj_buf.h
+++ b/src/lj_buf.h
@@ -27,6 +27,7 @@ typedef struct SBufExt {
27 MRef bsb; /* Borrowed string buffer. */ 27 MRef bsb; /* Borrowed string buffer. */
28 }; 28 };
29 char *r; /* Read pointer. */ 29 char *r; /* Read pointer. */
30 GCRef dict; /* Serialization string dictionary table. */
30 int depth; /* Remaining recursion depth. */ 31 int depth; /* Remaining recursion depth. */
31} SBufExt; 32} SBufExt;
32 33
@@ -114,19 +115,17 @@ static LJ_AINLINE void lj_bufx_init(lua_State *L, SBufExt *sbx)
114 setsbufXL(sbx, L, SBUF_FLAG_EXT); 115 setsbufXL(sbx, L, SBUF_FLAG_EXT);
115} 116}
116 117
117static LJ_AINLINE void lj_bufx_init_borrow(lua_State *L, SBufExt *sbx, SBuf *sb) 118static LJ_AINLINE void lj_bufx_set_borrow(lua_State *L, SBufExt *sbx, SBuf *sb)
118{ 119{
119 memset(sbx, 0, sizeof(SBufExt));
120 setsbufXL(sbx, L, SBUF_FLAG_EXT | SBUF_FLAG_BORROW); 120 setsbufXL(sbx, L, SBUF_FLAG_EXT | SBUF_FLAG_BORROW);
121 setmref(sbx->bsb, sb); 121 setmref(sbx->bsb, sb);
122 sbx->r = sbx->w = sbx->b = sb->b; 122 sbx->r = sbx->w = sbx->b = sb->b;
123 sbx->e = sb->e; 123 sbx->e = sb->e;
124} 124}
125 125
126static LJ_AINLINE void lj_bufx_init_cow(lua_State *L, SBufExt *sbx, 126static LJ_AINLINE void lj_bufx_set_cow(lua_State *L, SBufExt *sbx,
127 const char *p, MSize len) 127 const char *p, MSize len)
128{ 128{
129 memset(sbx, 0, sizeof(SBufExt));
130 setsbufXL(sbx, L, SBUF_FLAG_EXT | SBUF_FLAG_COW); 129 setsbufXL(sbx, L, SBUF_FLAG_EXT | SBUF_FLAG_COW);
131 sbx->r = sbx->b = (char *)p; 130 sbx->r = sbx->b = (char *)p;
132 sbx->w = sbx->e = (char *)p + len; 131 sbx->w = sbx->e = (char *)p + len;
@@ -142,9 +141,12 @@ static LJ_AINLINE void lj_bufx_reset(SBufExt *sbx)
142 sbx->r = sbx->w = sbx->b; 141 sbx->r = sbx->w = sbx->b;
143} 142}
144 143
145static LJ_AINLINE void lj_bufx_free(global_State *g, SBufExt *sbx) 144static LJ_AINLINE void lj_bufx_free(lua_State *L, SBufExt *sbx)
146{ 145{
147 if (!sbufiscow(sbx)) lj_mem_free(g, sbx->b, sbufsz(sbx)); 146 if (!sbufiscow(sbx)) lj_mem_free(G(L), sbx->b, sbufsz(sbx));
147 setsbufXL(sbx, L, SBUF_FLAG_EXT);
148 setgcrefnull(sbx->cowref);
149 sbx->r = sbx->w = sbx->b = sbx->e = NULL;
148} 150}
149 151
150/* Low-level buffer put operations */ 152/* Low-level buffer put operations */