~rdoering/ubuntu/karmic/erlang/fix-535090

« back to all changes in this revision

Viewing changes to erts/emulator/hipe/hipe_bif_list.m4

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2009-02-15 16:42:52 UTC
  • mfrom: (3.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090215164252-q5x4rcf8a5pbesb1
Tags: 1:12.b.5-dfsg-2
Upload to unstable after lenny is released.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
 *   Zero-arity BIFs never signal Erlang-level exceptions,
47
47
 *   but may signal internal implementaton-level exceptions,
48
48
 *   currently only TRAP.
49
 
 * - standard: may signal any exception except RESCHEDULE
 
49
 * - standard: may signal any exception
50
50
 *   The BIF wrapper must check for an exception before returning.
51
 
 * - expensive: may signal any exception including RESCHEDULE
52
 
 *   The BIF wrapper must preserve the actual parameters before
53
 
 *   calling the C code. After the C code returns, the BIF wrapper
54
 
 *   must check for an exception and be prepared to supply the
55
 
 *   actual parameters and its own start address to the handler.
56
51
 */
57
52
 
58
53
/****************************************************************
65
60
 * standard_bif_interface_3(nbif_name, cbif_name)
66
61
 *
67
62
 * A BIF with implicit P parameter, 1-3 ordinary parameters,
68
 
 * which may fail but not with RESCHEDULE.
 
63
 * which may fail.
69
64
 * HP and FCALLS may be read and updated.
70
65
 * HP_LIMIT, NSP, NSP_LIMIT, and NRA may not be accessed.
71
66
 */
78
73
 */
79
74
 
80
75
/*
81
 
 * expensive_bif_interface_1(nbif_name, cbif_name)
82
 
 * expensive_bif_interface_2(nbif_name, cbif_name)
83
 
 * expensive_bif_interface_3(nbif_name, cbif_name)
84
 
 *
85
 
 * A BIF which may fail with RESCHEDULE, otherwise
86
 
 * identical to standard_bif_interface_N.
87
 
 */
88
 
 
89
 
/*
90
76
 * nofail_primop_interface_0(nbif_name, cbif_name)
91
77
 * nofail_primop_interface_1(nbif_name, cbif_name)
92
78
 * nofail_primop_interface_2(nbif_name, cbif_name)
109
95
 */
110
96
 
111
97
/*
112
 
 * expensive_gc_bif_interface_1(nbif_name, cbif_name)
113
 
 * expensive_gc_bif_interface_2(nbif_name, cbif_name)
114
 
 *
115
 
 * A BIF which may fail with RESCHEDULE, otherwise
116
 
 * identical to gc_bif_interface_N.
117
 
 */
118
 
 
119
 
/*
120
98
 * gc_nofail_primop_interface_1(nbif_name, cbif_name)
121
99
 *
122
100
 * A primop with implicit P parameter, 1 ordinary parameter,
160
138
trap_bif_interface_0(nbif_processes_0, processes_0)
161
139
 
162
140
/*
163
 
 * BIFs with expensive failure modes.
164
 
 */
165
 
expensive_bif_interface_1(nbif_demonitor_1, demonitor_1)
166
 
expensive_bif_interface_2(nbif_exit_2, exit_2)
167
 
expensive_bif_interface_2(nbif_group_leader_2, group_leader_2)
168
 
expensive_bif_interface_1(nbif_link_1, link_1)
169
 
expensive_bif_interface_2(nbif_monitor_2, monitor_2)
170
 
expensive_bif_interface_2(nbif_port_command_2, port_command_2)
171
 
expensive_bif_interface_1(nbif_process_info_1, process_info_1)
172
 
expensive_bif_interface_2(nbif_process_info_2, process_info_2)
173
 
expensive_bif_interface_2(nbif_send_2, send_2)
174
 
expensive_bif_interface_3(nbif_send_3, send_3)
175
 
expensive_bif_interface_3(nbif_setnode_3, setnode_3)
176
 
expensive_bif_interface_2(nbif_suspend_process_2, suspend_process_2)
177
 
expensive_bif_interface_2(nbif_system_flag_2, system_flag_2)
178
 
expensive_bif_interface_1(nbif_unlink_1, unlink_1)
179
 
expensive_bif_interface_2(nbif_erts_debug_set_internal_state_2, erts_debug_set_internal_state_2)
180
 
 
181
 
/*
182
141
 * BIFs and primops that may do a GC (change heap limit and walk the native stack).
183
142
 * XXX: erase/1 and put/2 cannot fail
184
143
 */
185
 
expensive_gc_bif_interface_2(nbif_check_process_code_2, hipe_check_process_code_2)
 
144
gc_bif_interface_2(nbif_check_process_code_2, hipe_check_process_code_2)
186
145
gc_bif_interface_1(nbif_erase_1, erase_1)
187
146
gc_bif_interface_0(nbif_garbage_collect_0, garbage_collect_0)
188
 
expensive_gc_bif_interface_1(nbif_garbage_collect_1, hipe_garbage_collect_1)
 
147
gc_bif_interface_1(nbif_garbage_collect_1, hipe_garbage_collect_1)
189
148
gc_nofail_primop_interface_1(nbif_gc_1, hipe_gc)
190
149
gc_bif_interface_2(nbif_put_2, put_2)
191
150