diff options
Diffstat (limited to 'src/lj_buf.c')
-rw-r--r-- | src/lj_buf.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lj_buf.c b/src/lj_buf.c index c08d23c9..ef48b580 100644 --- a/src/lj_buf.c +++ b/src/lj_buf.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include "lj_gc.h" | 12 | #include "lj_gc.h" |
13 | #include "lj_err.h" | 13 | #include "lj_err.h" |
14 | #include "lj_buf.h" | 14 | #include "lj_buf.h" |
15 | #include "lj_str.h" | ||
15 | 16 | ||
16 | LJ_NOINLINE void LJ_FASTCALL lj_buf_grow(SBuf *sb, char *en) | 17 | LJ_NOINLINE void LJ_FASTCALL lj_buf_grow(SBuf *sb, char *en) |
17 | { | 18 | { |
@@ -64,6 +65,34 @@ void lj_buf_putmem(SBuf *sb, const void *q, MSize len) | |||
64 | setsbufP(sb, p); | 65 | setsbufP(sb, p); |
65 | } | 66 | } |
66 | 67 | ||
68 | #if LJ_HASJIT | ||
69 | SBuf * LJ_FASTCALL lj_buf_putstr(SBuf *sb, GCstr *s) | ||
70 | { | ||
71 | MSize len = s->len; | ||
72 | char *p = lj_buf_more(sb, len); | ||
73 | p = lj_buf_wmem(p, strdata(s), len); | ||
74 | setsbufP(sb, p); | ||
75 | return sb; | ||
76 | } | ||
77 | |||
78 | SBuf * LJ_FASTCALL lj_buf_putint(SBuf *sb, int32_t k) | ||
79 | { | ||
80 | setsbufP(sb, lj_str_bufint(lj_buf_more(sb, LJ_STR_INTBUF), k)); | ||
81 | return sb; | ||
82 | } | ||
83 | |||
84 | SBuf * LJ_FASTCALL lj_buf_putnum(SBuf *sb, cTValue *o) | ||
85 | { | ||
86 | setsbufP(sb, lj_str_bufnum(lj_buf_more(sb, LJ_STR_NUMBUF), o)); | ||
87 | return sb; | ||
88 | } | ||
89 | |||
90 | GCstr * LJ_FASTCALL lj_buf_tostr(SBuf *sb) | ||
91 | { | ||
92 | return lj_str_new(sbufL(sb), sbufB(sb), sbuflen(sb)); | ||
93 | } | ||
94 | #endif | ||
95 | |||
67 | uint32_t LJ_FASTCALL lj_buf_ruleb128(const char **pp) | 96 | uint32_t LJ_FASTCALL lj_buf_ruleb128(const char **pp) |
68 | { | 97 | { |
69 | const uint8_t *p = (const uint8_t *)*pp; | 98 | const uint8_t *p = (const uint8_t *)*pp; |