text: #
  # %CopyrightBegin%
  #
  # Copyright Ericsson AB 1996-2013. All Rights Reserved.
  #
  # The contents of this file are subject to the Erlang Public License,
  # Version 1.1, (the "License"); you may not use this file except in
  # compliance with the License. You should have received a copy of the
  # Erlang Public License along with this software. If not, it can be
  # retrieved online at http://www.erlang.org/.
  #
  # Software distributed under the License is distributed on an "AS IS"
  # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  # the License for the specific language governing rights and limitations
  # under the License.
  #
  # %CopyrightEnd%
  #
  
  #
  # File format:
  #
  # Lines starting with '#' are ignored.
  #
  # <bif-decl> ::= "bif" <bif> <C-name>* | "ubif" <bif> <C-name>*
  # <bif> ::= <module> ":" <name> "/" <arity>
  #
  # "ubif" is an unwrapped bif, i.e. a bif without a trace wrapper,
  # or rather; the trace entry point in the export entry is the same
  # as the normal entry point, and no trace wrapper is generated.
  #
  # Important: Use "ubif" for guard BIFs and operators; use "bif" for ordinary BIFs.
  #
  # Add new BIFs to the end of the file.
  #
  # Note: Guards BIFs require special support in the compiler (to be able to actually
  # call them from within a guard).
  #
  
  ubif erlang:abs/1
  bif erlang:adler32/1
  bif erlang:adler32/2
  bif erlang:adler32_combine/3
  bif erlang:apply/3
  bif erlang:atom_to_list/1
  bif erlang:binary_to_list/1
  bif erlang:binary_to_list/3
  bif erlang:binary_to_term/1
  bif erlang:crc32/1
  bif erlang:crc32/2
  bif erlang:crc32_combine/3
  bif erlang:date/0
  bif erlang:delete_module/1
  bif erlang:display/1
  bif erlang:display_string/1
  bif erlang:display_nl/0
  ubif erlang:element/2
  bif erlang:erase/0
  bif erlang:erase/1
  bif erlang:exit/1
  bif erlang:exit/2
  bif erlang:external_size/1
  bif erlang:external_size/2
  ubif erlang:float/1
  bif erlang:float_to_list/1
  bif erlang:float_to_list/2
  bif erlang:fun_info/2
  bif erlang:garbage_collect/0
  bif erlang:get/0
  bif erlang:get/1
  bif erlang:get_keys/1
  bif erlang:group_leader/0
  bif erlang:group_leader/2
  bif erlang:halt/0
  bif erlang:halt/1
  bif erlang:halt/2
  bif erlang:phash/2
  bif erlang:phash2/1
  bif erlang:phash2/2
  ubif erlang:hd/1
  bif erlang:integer_to_list/1
  bif erlang:is_alive/0
  ubif erlang:length/1
  bif erlang:link/1
  bif erlang:list_to_atom/1
  bif erlang:list_to_binary/1
  bif erlang:list_to_float/1
  bif erlang:list_to_integer/1
  bif erlang:list_to_pid/1
  bif erlang:list_to_tuple/1
  bif erlang:loaded/0
  bif erlang:localtime/0
  bif erlang:localtime_to_universaltime/2
  bif erlang:make_ref/0
  bif erlang:md5/1
  bif erlang:md5_init/0
  bif erlang:md5_update/2
  bif erlang:md5_final/1
  bif erlang:module_loaded/1
  bif erlang:function_exported/3
  bif erlang:monitor_node/2
  bif erlang:monitor_node/3
  ubif erlang:node/1
  ubif erlang:node/0
  bif erlang:nodes/1
  bif erlang:now/0
  
  bif erlang:open_port/2
  
  bif erlang:pid_to_list/1
  bif erlang:ports/0
  bif erlang:pre_loaded/0
  bif erlang:process_flag/2
  bif erlang:process_flag/3
  bif erlang:process_info/1
  bif erlang:process_info/2
  bif erlang:processes/0
  bif erlang:purge_module/1
  bif erlang:put/2
  bif erlang:register/2
  bif erlang:registered/0
  ubif erlang:round/1
  ubif erlang:self/0
  bif erlang:setelement/3
  ubif erlang:size/1
  bif erlang:spawn/3
  bif erlang:spawn_link/3
  bif erlang:split_binary/2
  bif erlang:statistics/1
  bif erlang:term_to_binary/1
  bif erlang:term_to_binary/2
  bif erlang:throw/1
  bif erlang:time/0
  ubif erlang:tl/1
  ubif erlang:trunc/1
  bif erlang:tuple_to_list/1
  bif erlang:universaltime/0
  bif erlang:universaltime_to_localtime/1
  bif erlang:unlink/1
  bif erlang:unregister/1
  bif erlang:whereis/1
  bif erlang:spawn_opt/1
  bif erlang:setnode/2
  bif erlang:setnode/3
  bif erlang:dist_exit/3
  
  # Static native functions in erts_internal
  bif erts_internal:port_info/1
  bif erts_internal:port_info/2
  bif erts_internal:port_call/3
  bif erts_internal:port_command/3
  bif erts_internal:port_control/3
  bif erts_internal:port_close/1
  bif erts_internal:port_connect/2
  
  bif erts_internal:request_system_task/3
  bif erts_internal:check_process_code/2
  
  bif erts_internal:map_to_tuple_keys/1
  
  # inet_db support
  bif erlang:port_set_data/2
  bif erlang:port_get_data/1
  
  # Tracing & debugging.
  bif erlang:trace_pattern/2
  bif erlang:trace_pattern/3
  bif erlang:trace/3
  bif erlang:trace_info/2
  bif erlang:trace_delivered/1
  bif erlang:seq_trace/2
  bif erlang:seq_trace_info/1
  bif erlang:seq_trace_print/1
  bif erlang:seq_trace_print/2
  bif erlang:suspend_process/2
  bif erlang:resume_process/1
  bif erlang:process_display/2
  
  bif erlang:bump_reductions/1
  
  bif math:cos/1
  bif math:cosh/1
  bif math:sin/1
  bif math:sinh/1
  bif math:tan/1
  bif math:tanh/1
  bif math:acos/1
  bif math:acosh/1
  bif math:asin/1
  bif math:asinh/1
  bif math:atan/1
  bif math:atanh/1
  bif math:erf/1
  bif math:erfc/1
  bif math:exp/1
  bif math:log/1
  bif math:log10/1
  bif math:sqrt/1
  bif math:atan2/2
  bif math:pow/2
  
  bif erlang:start_timer/3
  bif erlang:send_after/3
  bif erlang:cancel_timer/1
  bif erlang:read_timer/1
  
  bif erlang:make_tuple/2
  bif erlang:append_element/2
  bif erlang:make_tuple/3
  
  bif erlang:system_flag/2
  bif erlang:system_info/1
  # New in R9C
  bif erlang:system_monitor/0
  bif erlang:system_monitor/1
  bif erlang:system_monitor/2
  # Added 2006-11-07
  bif erlang:system_profile/2
  # End Added 2006-11-07
  # Added 2007-01-17
  bif erlang:system_profile/0
  # End Added 2007-01-17
  bif erlang:ref_to_list/1
  bif erlang:port_to_list/1
  bif erlang:fun_to_list/1
  
  bif erlang:monitor/2
  bif erlang:demonitor/1
  bif erlang:demonitor/2
  
  bif erlang:is_process_alive/1
  
  bif erlang:error/1		error_1
  bif erlang:error/2		error_2
  bif erlang:raise/3		raise_3
  bif erlang:get_stacktrace/0
  
  bif erlang:is_builtin/3
  
  ubif erlang:'and'/2
  ubif erlang:'or'/2
  ubif erlang:'xor'/2
  ubif erlang:'not'/1
  
  ubif erlang:'>'/2			sgt_2
  ubif erlang:'>='/2			sge_2
  ubif erlang:'<'/2			slt_2
  ubif erlang:'=<'/2			sle_2
  ubif erlang:'=:='/2			seq_2
  ubif erlang:'=='/2			seqeq_2
  ubif erlang:'=/='/2			sneq_2
  ubif erlang:'/='/2			sneqeq_2
  ubif erlang:'+'/2			splus_2
  ubif erlang:'-'/2			sminus_2
  ubif erlang:'*'/2			stimes_2
  ubif erlang:'/'/2			div_2
  ubif erlang:'div'/2			intdiv_2
  ubif erlang:'rem'/2
  ubif erlang:'bor'/2
  ubif erlang:'band'/2
  ubif erlang:'bxor'/2
  ubif erlang:'bsl'/2
  ubif erlang:'bsr'/2
  ubif erlang:'bnot'/1
  ubif erlang:'-'/1			sminus_1
  ubif erlang:'+'/1			splus_1
  
  # New operators in R8. These were the only operators missing.
  # erlang:send/2, erlang:append/2 and erlang:subtract/2 are now also
  # defined in erlang.erl, and the C names can be removed when all
  # internal references have been updated to the new ebif_... entries.
  
  bif erlang:'!'/2		ebif_bang_2
  bif erlang:send/2
  bif erlang:send/3
  bif erlang:'++'/2		ebif_plusplus_2
  bif erlang:append/2
  bif erlang:'--'/2		ebif_minusminus_2
  bif erlang:subtract/2
  
  ubif erlang:is_atom/1
  ubif erlang:is_list/1
  ubif erlang:is_tuple/1
  ubif erlang:is_float/1
  ubif erlang:is_integer/1
  ubif erlang:is_number/1
  ubif erlang:is_pid/1
  ubif erlang:is_port/1
  ubif erlang:is_reference/1
  ubif erlang:is_binary/1
  ubif erlang:is_function/1
  ubif erlang:is_function/2
  ubif erlang:is_record/2
  ubif erlang:is_record/3
  
  bif erlang:match_spec_test/3
  
  #
  # Bifs in ets module.
  #
  
  bif ets:all/0
  bif ets:new/2
  bif ets:delete/1
  bif ets:delete/2
  bif ets:delete_all_objects/1
  bif ets:delete_object/2
  bif ets:first/1
  bif ets:is_compiled_ms/1
  bif ets:lookup/2
  bif ets:lookup_element/3
  bif ets:info/1
  bif ets:info/2
  bif ets:last/1
  bif ets:match/1
  bif ets:match/2
  bif ets:match/3
  bif ets:match_object/1
  bif ets:match_object/2
  bif ets:match_object/3
  bif ets:member/2
  bif ets:next/2
  bif ets:prev/2
  bif ets:insert/2
  bif ets:insert_new/2
  bif ets:rename/2
  bif ets:safe_fixtable/2
  bif ets:slot/2
  bif ets:update_counter/3
  bif ets:select/1
  bif ets:select/2
  bif ets:select/3
  bif ets:select_count/2
  bif ets:select_reverse/1
  bif ets:select_reverse/2
  bif ets:select_reverse/3
  bif ets:select_delete/2
  bif ets:match_spec_compile/1
  bif ets:match_spec_run_r/3
  
  #
  # Bifs in os module.
  #
  
  bif os:putenv/2
  bif os:getenv/0
  bif os:getenv/1
  bif os:getpid/0
  bif os:timestamp/0
  
  #
  # Bifs in the erl_ddll module (the module actually does not exist)
  #
  
  bif erl_ddll:try_load/3
  bif erl_ddll:try_unload/2
  bif erl_ddll:loaded_drivers/0
  bif erl_ddll:info/2
  bif erl_ddll:format_error_int/1
  bif erl_ddll:monitor/2
  bif erl_ddll:demonitor/1
  
  #
  # Bifs in the re module 
  #
  bif re:compile/1
  bif re:compile/2
  bif re:run/2
  bif re:run/3
  
  #
  # Bifs in lists module.
  #
  
  bif lists:member/2
  bif lists:reverse/2
  bif lists:keymember/3
  bif lists:keysearch/3
  bif lists:keyfind/3
  
  #
  # Bifs for debugging.
  #
  
  bif erts_debug:disassemble/1
  bif erts_debug:breakpoint/2
  bif erts_debug:same/2
  bif erts_debug:flat_size/1
  bif erts_debug:get_internal_state/1
  bif erts_debug:set_internal_state/2
  bif erts_debug:display/1
  bif erts_debug:dist_ext_to_term/2
  bif erts_debug:instructions/0
  
  #
  # Monitor testing bif's...
  #
  bif erts_debug:dump_monitors/1
  bif erts_debug:dump_links/1
  
  
  #
  # Lock counter bif's
  #
  bif erts_debug:lock_counters/1
  
  #
  # New Bifs in R8.
  #
  
  bif code:get_chunk/2
  bif code:module_md5/1
  bif code:make_stub_module/3
  bif code:is_module_native/1
  
  #
  # New Bifs in R9C.
  #
  
  bif erlang:hibernate/3
  bif error_logger:warning_map/0
  
  #
  # New Bifs in R10B.
  #
  bif erlang:get_module_info/1
  bif erlang:get_module_info/2
  ubif erlang:is_boolean/1
  bif string:to_integer/1
  bif string:to_float/1
  bif erlang:make_fun/3
  bif erlang:iolist_size/1
  bif erlang:iolist_to_binary/1
  bif erlang:list_to_existing_atom/1
  
  #
  # New Bifs in R12B-0
  #
  ubif erlang:is_bitstring/1
  ubif erlang:tuple_size/1
  ubif erlang:byte_size/1
  ubif erlang:bit_size/1
  bif erlang:list_to_bitstring/1
  bif erlang:bitstring_to_list/1
  
  #
  # New Bifs in R12B-2
  #
  bif ets:update_element/3
  
  #
  # New Bifs in R12B-4
  #
  bif erlang:decode_packet/3
  
  #
  # New Bifs in R12B-5
  #
  bif unicode:characters_to_binary/2
  bif unicode:characters_to_list/2
  bif unicode:bin_is_7bit/1
  #
  # New Bifs in R13A.
  #
  bif erlang:atom_to_binary/2
  bif erlang:binary_to_atom/2
  bif erlang:binary_to_existing_atom/2
  bif net_kernel:dflag_unicode_io/1
  #
  # New Bifs in R13B-1
  #
  bif ets:give_away/3
  bif ets:setopts/2
  
  #
  # New Bifs in R13B3
  #
  bif erlang:load_nif/2
  bif erlang:call_on_load_function/1
  bif erlang:finish_after_on_load/2
  
  #
  # New Bifs in R13B04
  #
  bif erlang:binary_to_term/2
  
  #
  # The binary match bifs (New in R14A - EEP9)
  #
  
  #
  # The searching/splitting/substituting thingies
  #
  ubif erlang:binary_part/2
  ubif erlang:binary_part/3
  
  bif binary:compile_pattern/1
  bif binary:match/2
  bif binary:match/3
  bif binary:matches/2
  bif binary:matches/3
  bif binary:longest_common_prefix/1
  bif binary:longest_common_suffix/1
  bif binary:first/1
  bif binary:last/1
  bif binary:at/2
  bif binary:part/2 binary_binary_part_2
  bif binary:part/3 binary_binary_part_3
  bif binary:bin_to_list/1
  bif binary:bin_to_list/2
  bif binary:bin_to_list/3
  bif binary:list_to_bin/1
  bif binary:copy/1
  bif binary:copy/2
  bif binary:referenced_byte_size/1
  bif binary:encode_unsigned/1
  bif binary:encode_unsigned/2
  bif binary:decode_unsigned/1
  bif binary:decode_unsigned/2
  
  bif erlang:nif_error/1
  bif erlang:nif_error/2
  
  #
  # Helpers for unicode filenames
  #
  bif prim_file:internal_name2native/1
  bif prim_file:internal_native2name/1
  bif prim_file:internal_normalize_utf8/1
  bif prim_file:is_translatable/1
  bif file:native_name_encoding/0
  
  #
  # New in R14B04.
  #
  bif erlang:check_old_code/1
  
  
  #
  # New in R15B
  #
  bif erlang:universaltime_to_posixtime/1
  bif erlang:posixtime_to_universaltime/1
  
  #
  # New in R15B01
  #
  
  # The dtrace BIF's are always present, but give dummy results if dynamic trace is not enabled in the build
  bif erlang:dt_put_tag/1
  bif erlang:dt_get_tag/0
  bif erlang:dt_get_tag_data/0
  bif erlang:dt_spread_tag/1
  bif erlang:dt_restore_tag/1
  
  # These are dummies even with enabled dynamic trace unless vm probes are enabled. 
  # They are also internal, for dtrace tags sent to the VM's own drivers (efile)
  bif erlang:dt_prepend_vm_tag_data/1
  bif erlang:dt_append_vm_tag_data/1
  
  
  #
  # New in R16B.
  #
  bif erlang:prepare_loading/2
  bif erlang:finish_loading/1
  bif erlang:insert_element/3
  bif erlang:delete_element/2
  bif erlang:binary_to_integer/1
  bif erlang:binary_to_integer/2
  bif erlang:integer_to_binary/1
  bif erlang:list_to_integer/2
  bif erlang:float_to_binary/1
  bif erlang:float_to_binary/2
  bif erlang:binary_to_float/1
  
  bif io:printable_range/0
  bif os:unsetenv/1
  
  #
  # New in R17A
  #
  
  bif re:inspect/2
  
  ubif erlang:is_map/1
  ubif erlang:map_size/1
  bif maps:to_list/1
  bif maps:find/2
  bif maps:get/2
  bif maps:from_list/1
  bif maps:is_key/2
  bif maps:keys/1
  bif maps:merge/2
  bif maps:new/0
  bif maps:put/3
  bif maps:remove/2
  bif maps:update/3
  bif maps:values/1
  
  bif erts_internal:cmp_term/2
  
  #
  # Obsolete
  #
  
  bif erlang:hash/2
  