diff options
Diffstat (limited to '')
-rw-r--r-- | src/lj_buf.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/lj_buf.h b/src/lj_buf.h index b97d55ef..4ace2685 100644 --- a/src/lj_buf.h +++ b/src/lj_buf.h | |||
@@ -55,6 +55,7 @@ typedef struct SBufExt { | |||
55 | #define sbufisext(sb) (sbufflag((sb)) & SBUF_FLAG_EXT) | 55 | #define sbufisext(sb) (sbufflag((sb)) & SBUF_FLAG_EXT) |
56 | #define sbufiscow(sb) (sbufflag((sb)) & SBUF_FLAG_COW) | 56 | #define sbufiscow(sb) (sbufflag((sb)) & SBUF_FLAG_COW) |
57 | #define sbufisborrow(sb) (sbufflag((sb)) & SBUF_FLAG_BORROW) | 57 | #define sbufisborrow(sb) (sbufflag((sb)) & SBUF_FLAG_BORROW) |
58 | #define sbufiscoworborrow(sb) (sbufflag((sb)) & (SBUF_FLAG_COW|SBUF_FLAG_BORROW)) | ||
58 | #define sbufX(sb) \ | 59 | #define sbufX(sb) \ |
59 | (lj_assertG_(G(sbufL(sb)), sbufisext(sb), "not an SBufExt"), (SBufExt *)(sb)) | 60 | (lj_assertG_(G(sbufL(sb)), sbufisext(sb), "not an SBufExt"), (SBufExt *)(sb)) |
60 | #define setsbufflag(sb, flag) (setmrefu((sb)->L, (flag))) | 61 | #define setsbufflag(sb, flag) (setmrefu((sb)->L, (flag))) |
@@ -143,15 +144,24 @@ static LJ_AINLINE void lj_bufx_reset(SBufExt *sbx) | |||
143 | 144 | ||
144 | static LJ_AINLINE void lj_bufx_free(lua_State *L, SBufExt *sbx) | 145 | static LJ_AINLINE void lj_bufx_free(lua_State *L, SBufExt *sbx) |
145 | { | 146 | { |
146 | if (!sbufiscow(sbx)) lj_mem_free(G(L), sbx->b, sbufsz(sbx)); | 147 | if (!sbufiscoworborrow(sbx)) lj_mem_free(G(L), sbx->b, sbufsz(sbx)); |
147 | setsbufXL(sbx, L, SBUF_FLAG_EXT); | 148 | setsbufXL(sbx, L, SBUF_FLAG_EXT); |
148 | setgcrefnull(sbx->cowref); | 149 | setgcrefnull(sbx->cowref); |
149 | sbx->r = sbx->w = sbx->b = sbx->e = NULL; | 150 | sbx->r = sbx->w = sbx->b = sbx->e = NULL; |
150 | } | 151 | } |
151 | 152 | ||
153 | #if LJ_HASBUFFER && LJ_HASJIT | ||
154 | LJ_FUNC void lj_bufx_set(SBufExt *sbx, const char *p, MSize len, GCobj *o); | ||
155 | #if LJ_HASFFI | ||
156 | LJ_FUNC MSize LJ_FASTCALL lj_bufx_more(SBufExt *sbx, MSize sz); | ||
157 | #endif | ||
158 | #endif | ||
159 | |||
152 | /* Low-level buffer put operations */ | 160 | /* Low-level buffer put operations */ |
153 | LJ_FUNC SBuf *lj_buf_putmem(SBuf *sb, const void *q, MSize len); | 161 | LJ_FUNC SBuf *lj_buf_putmem(SBuf *sb, const void *q, MSize len); |
162 | #if LJ_HASJIT || LJ_HASFFI | ||
154 | LJ_FUNC SBuf * LJ_FASTCALL lj_buf_putchar(SBuf *sb, int c); | 163 | LJ_FUNC SBuf * LJ_FASTCALL lj_buf_putchar(SBuf *sb, int c); |
164 | #endif | ||
155 | LJ_FUNC SBuf * LJ_FASTCALL lj_buf_putstr(SBuf *sb, GCstr *s); | 165 | LJ_FUNC SBuf * LJ_FASTCALL lj_buf_putstr(SBuf *sb, GCstr *s); |
156 | 166 | ||
157 | static LJ_AINLINE char *lj_buf_wmem(char *p, const void *q, MSize len) | 167 | static LJ_AINLINE char *lj_buf_wmem(char *p, const void *q, MSize len) |