aboutsummaryrefslogtreecommitdiff
path: root/src/lj_ircall.h
diff options
context:
space:
mode:
authorMike Pall <mike>2021-03-23 00:33:34 +0100
committerMike Pall <mike>2021-03-23 00:33:34 +0100
commitddd0fd8f3754ad83423623655d8b3f8454a7cf1e (patch)
tree3d31dd242cc0c85984b04799ec0bff62cf841e42 /src/lj_ircall.h
parentde89c602c285bc0226dbfcd9e31dc61ff8c49e4f (diff)
downloadluajit-ddd0fd8f3754ad83423623655d8b3f8454a7cf1e.tar.gz
luajit-ddd0fd8f3754ad83423623655d8b3f8454a7cf1e.tar.bz2
luajit-ddd0fd8f3754ad83423623655d8b3f8454a7cf1e.zip
Use weak guards for on-trace allocations.
Diffstat (limited to 'src/lj_ircall.h')
-rw-r--r--src/lj_ircall.h56
1 files changed, 29 insertions, 27 deletions
diff --git a/src/lj_ircall.h b/src/lj_ircall.h
index d467403e..13501ba1 100644
--- a/src/lj_ircall.h
+++ b/src/lj_ircall.h
@@ -30,10 +30,12 @@ typedef struct CCallInfo {
30#define CCI_CALL_L (IR_CALLL << CCI_OPSHIFT) 30#define CCI_CALL_L (IR_CALLL << CCI_OPSHIFT)
31#define CCI_CALL_S (IR_CALLS << CCI_OPSHIFT) 31#define CCI_CALL_S (IR_CALLS << CCI_OPSHIFT)
32#define CCI_CALL_FN (CCI_CALL_N|CCI_CC_FASTCALL) 32#define CCI_CALL_FN (CCI_CALL_N|CCI_CC_FASTCALL)
33#define CCI_CALL_FA (CCI_CALL_A|CCI_CC_FASTCALL)
33#define CCI_CALL_FL (CCI_CALL_L|CCI_CC_FASTCALL) 34#define CCI_CALL_FL (CCI_CALL_L|CCI_CC_FASTCALL)
34#define CCI_CALL_FS (CCI_CALL_S|CCI_CC_FASTCALL) 35#define CCI_CALL_FS (CCI_CALL_S|CCI_CC_FASTCALL)
35 36
36/* C call info flags. */ 37/* C call info flags. */
38#define CCI_T (IRT_GUARD << CCI_OTSHIFT) /* May throw. */
37#define CCI_L 0x0100 /* Implicit L arg. */ 39#define CCI_L 0x0100 /* Implicit L arg. */
38#define CCI_CASTU64 0x0200 /* Cast u64 result to number. */ 40#define CCI_CASTU64 0x0200 /* Cast u64 result to number. */
39#define CCI_NOFPRCLOBBER 0x0400 /* Does not clobber any FPRs. */ 41#define CCI_NOFPRCLOBBER 0x0400 /* Does not clobber any FPRs. */
@@ -139,39 +141,39 @@ typedef struct CCallInfo {
139#define IRCALLDEF(_) \ 141#define IRCALLDEF(_) \
140 _(ANY, lj_str_cmp, 2, FN, INT, CCI_NOFPRCLOBBER) \ 142 _(ANY, lj_str_cmp, 2, FN, INT, CCI_NOFPRCLOBBER) \
141 _(ANY, lj_str_find, 4, N, PGC, 0) \ 143 _(ANY, lj_str_find, 4, N, PGC, 0) \
142 _(ANY, lj_str_new, 3, S, STR, CCI_L) \ 144 _(ANY, lj_str_new, 3, S, STR, CCI_L|CCI_T) \
143 _(ANY, lj_strscan_num, 2, FN, INT, 0) \ 145 _(ANY, lj_strscan_num, 2, FN, INT, 0) \
144 _(ANY, lj_strfmt_int, 2, FN, STR, CCI_L) \ 146 _(ANY, lj_strfmt_int, 2, FN, STR, CCI_L|CCI_T) \
145 _(ANY, lj_strfmt_num, 2, FN, STR, CCI_L) \ 147 _(ANY, lj_strfmt_num, 2, FN, STR, CCI_L|CCI_T) \
146 _(ANY, lj_strfmt_char, 2, FN, STR, CCI_L) \ 148 _(ANY, lj_strfmt_char, 2, FN, STR, CCI_L|CCI_T) \
147 _(ANY, lj_strfmt_putint, 2, FL, PGC, 0) \ 149 _(ANY, lj_strfmt_putint, 2, FL, PGC, CCI_T) \
148 _(ANY, lj_strfmt_putnum, 2, FL, PGC, 0) \ 150 _(ANY, lj_strfmt_putnum, 2, FL, PGC, CCI_T) \
149 _(ANY, lj_strfmt_putquoted, 2, FL, PGC, 0) \ 151 _(ANY, lj_strfmt_putquoted, 2, FL, PGC, CCI_T) \
150 _(ANY, lj_strfmt_putfxint, 3, L, PGC, XA_64) \ 152 _(ANY, lj_strfmt_putfxint, 3, L, PGC, XA_64|CCI_T) \
151 _(ANY, lj_strfmt_putfnum_int, 3, L, PGC, XA_FP) \ 153 _(ANY, lj_strfmt_putfnum_int, 3, L, PGC, XA_FP|CCI_T) \
152 _(ANY, lj_strfmt_putfnum_uint, 3, L, PGC, XA_FP) \ 154 _(ANY, lj_strfmt_putfnum_uint, 3, L, PGC, XA_FP|CCI_T) \
153 _(ANY, lj_strfmt_putfnum, 3, L, PGC, XA_FP) \ 155 _(ANY, lj_strfmt_putfnum, 3, L, PGC, XA_FP|CCI_T) \
154 _(ANY, lj_strfmt_putfstr, 3, L, PGC, 0) \ 156 _(ANY, lj_strfmt_putfstr, 3, L, PGC, CCI_T) \
155 _(ANY, lj_strfmt_putfchar, 3, L, PGC, 0) \ 157 _(ANY, lj_strfmt_putfchar, 3, L, PGC, CCI_T) \
156 _(ANY, lj_buf_putmem, 3, S, PGC, 0) \ 158 _(ANY, lj_buf_putmem, 3, S, PGC, CCI_T) \
157 _(ANY, lj_buf_putstr, 2, FL, PGC, 0) \ 159 _(ANY, lj_buf_putstr, 2, FL, PGC, CCI_T) \
158 _(ANY, lj_buf_putchar, 2, FL, PGC, 0) \ 160 _(ANY, lj_buf_putchar, 2, FL, PGC, CCI_T) \
159 _(ANY, lj_buf_putstr_reverse, 2, FL, PGC, 0) \ 161 _(ANY, lj_buf_putstr_reverse, 2, FL, PGC, CCI_T) \
160 _(ANY, lj_buf_putstr_lower, 2, FL, PGC, 0) \ 162 _(ANY, lj_buf_putstr_lower, 2, FL, PGC, CCI_T) \
161 _(ANY, lj_buf_putstr_upper, 2, FL, PGC, 0) \ 163 _(ANY, lj_buf_putstr_upper, 2, FL, PGC, CCI_T) \
162 _(ANY, lj_buf_putstr_rep, 3, L, PGC, 0) \ 164 _(ANY, lj_buf_putstr_rep, 3, L, PGC, CCI_T) \
163 _(ANY, lj_buf_puttab, 5, L, PGC, 0) \ 165 _(ANY, lj_buf_puttab, 5, L, PGC, CCI_T) \
164 _(ANY, lj_buf_tostr, 1, FL, STR, 0) \ 166 _(ANY, lj_buf_tostr, 1, FL, STR, CCI_T) \
165 _(ANY, lj_tab_new_ah, 3, A, TAB, CCI_L) \ 167 _(ANY, lj_tab_new_ah, 3, A, TAB, CCI_L|CCI_T) \
166 _(ANY, lj_tab_new1, 2, FS, TAB, CCI_L) \ 168 _(ANY, lj_tab_new1, 2, FA, TAB, CCI_L|CCI_T) \
167 _(ANY, lj_tab_dup, 2, FS, TAB, CCI_L) \ 169 _(ANY, lj_tab_dup, 2, FA, TAB, CCI_L|CCI_T) \
168 _(ANY, lj_tab_clear, 1, FS, NIL, 0) \ 170 _(ANY, lj_tab_clear, 1, FS, NIL, 0) \
169 _(ANY, lj_tab_newkey, 3, S, PGC, CCI_L) \ 171 _(ANY, lj_tab_newkey, 3, S, PGC, CCI_L|CCI_T) \
170 _(ANY, lj_tab_len, 1, FL, INT, 0) \ 172 _(ANY, lj_tab_len, 1, FL, INT, 0) \
171 _(ANY, lj_tab_len_hint, 2, FL, INT, 0) \ 173 _(ANY, lj_tab_len_hint, 2, FL, INT, 0) \
172 _(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \ 174 _(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \
173 _(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \ 175 _(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \
174 _(ANY, lj_mem_newgco, 2, FS, PGC, CCI_L) \ 176 _(ANY, lj_mem_newgco, 2, FA, PGC, CCI_L|CCI_T) \
175 _(ANY, lj_prng_u64d, 1, FS, NUM, CCI_CASTU64) \ 177 _(ANY, lj_prng_u64d, 1, FS, NUM, CCI_CASTU64) \
176 _(ANY, lj_vm_modi, 2, FN, INT, 0) \ 178 _(ANY, lj_vm_modi, 2, FN, INT, 0) \
177 _(ANY, log10, 1, N, NUM, XA_FP) \ 179 _(ANY, log10, 1, N, NUM, XA_FP) \