22
22
* standard_bif_interface_3(nbif_name, cbif_name)
24
24
* Generate native interface for a BIF with 1-3 parameters and
25
* standard failure mode (may fail, but not with RESCHEDULE).
25
* standard failure mode.
27
27
define(standard_bif_interface_1,
144
* expensive_bif_interface_1(nbif_name, cbif_name)
145
* expensive_bif_interface_2(nbif_name, cbif_name)
146
* expensive_bif_interface_3(nbif_name, cbif_name)
148
* Generate native interface for a BIF with 1-3 parameters and
149
* an expensive failure mode (may fail with RESCHEDULE).
151
define(expensive_bif_interface_1,
159
/* set up the parameters */
163
/* save actual parameters in case we must reschedule */
164
NBIF_SAVE_RESCHED_ARGS(1)
166
/* make the call on the C stack */
172
/* throw exception if failure, otherwise return */
177
movq `$'$1, %rdx /* resumption address */
178
jmp nbif_1_hairy_exception
184
define(expensive_bif_interface_2,
192
/* set up the parameters */
197
/* save actual parameters in case we must reschedule */
198
NBIF_SAVE_RESCHED_ARGS(2)
200
/* make the call on the C stack */
206
/* throw exception if failure, otherwise return */
211
movq `$'$1, %rdx /* resumption address */
212
jmp nbif_2_hairy_exception
218
define(expensive_bif_interface_3,
226
/* set up the parameters */
232
/* save actual parameters in case we must reschedule */
233
NBIF_SAVE_RESCHED_ARGS(3)
235
/* make the call on the C stack */
241
/* throw exception if failure, otherwise return */
246
movq `$'$1, %rdx /* resumption address */
247
jmp nbif_3_hairy_exception
254
144
* nofail_primop_interface_0(nbif_name, cbif_name)
255
145
* nofail_primop_interface_1(nbif_name, cbif_name)
256
146
* nofail_primop_interface_2(nbif_name, cbif_name)
636
526
define(gc_bif_interface_2,`standard_bif_interface_2($1, $2)')
639
* Implement expensive_gc_bif_interface_N as expensive_bif_interface_N (N=1,2).
641
define(expensive_gc_bif_interface_1,`expensive_bif_interface_1($1, $2)')
642
define(expensive_gc_bif_interface_2,`expensive_bif_interface_2($1, $2)')
645
529
* Implement gc_nofail_primop_interface_1 as nofail_primop_interface_1.
647
531
define(gc_nofail_primop_interface_1,`nofail_primop_interface_1($1, $2)')