diff options
author | Mike Pall <mike> | 2021-03-23 00:33:34 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2021-03-23 00:33:34 +0100 |
commit | ddd0fd8f3754ad83423623655d8b3f8454a7cf1e (patch) | |
tree | 3d31dd242cc0c85984b04799ec0bff62cf841e42 /src/lj_ircall.h | |
parent | de89c602c285bc0226dbfcd9e31dc61ff8c49e4f (diff) | |
download | luajit-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.h | 56 |
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) \ |