Module Emitaux
val output_channel : out_channel refval output_prefix : string refval emit_buffer : Buffer.t -> unitval emit_debug_info_gen :
?discriminator:int ->
Debuginfo.t ->
(file_num:int -> file_name:string -> unit) ->
(file_num:int -> line:int -> col:int -> ?discriminator:int -> unit -> unit) ->
unittype frame_debuginfo = | Dbg_alloc of Cmm.alloc_dbginfo| Dbg_raise of Debuginfo.t| Dbg_other of Debuginfo.t
val record_frame_descr :
label:Label.t ->
frame_size:int ->
live_offset:int list ->
frame_debuginfo ->
unitwith_snapshot f runs f and returns its result, but also ensures that the state of this Emitaux module is unchanged after f returns.
type emit_frame_actions = {efa_code_label : Label.t -> unit;efa_data_label : Label.t -> unit;efa_i8 : Numbers.Int8.t -> unit;efa_i16 : Numbers.Int16.t -> unit;efa_i32 : Int32.t -> unit;efa_u8 : Numbers.Uint8.t -> unit;efa_u16 : Numbers.Uint16.t -> unit;efa_u32 : Numbers.Uint32.t -> unit;efa_word : int -> unit;efa_align : int -> unit;efa_label_rel : Label.t -> int32 -> unit;efa_def_label : Label.t -> unit;efa_string : string -> unit;
}val emit_frames : emit_frame_actions -> unitval binary_backend_available : bool refIs a binary backend available. If yes, we don't need to generate the textual assembly file (unless the user request it with -S).
Clear global state and compact the heap, so that an external program (such as the assembler or linker) may have more memory available to it.
When this frees up around 1.1GB of memory, it takes around 0.6s. We only take this time when the job is large enough that we're worried that we'll either run out of memory or constrain the number of parallel jobs. We heuristically measure how big the job is by how much heap we're using ourselves.
The reset parameter will be called before Gc.compact if we go ahead with the compaction. It should clear as much as possible from the global state, since the fewer live words there are after GC, the smaller the new heap can be.
type error = | Stack_frame_too_large of int| Stack_frame_way_too_large of int| Inconsistent_probe_init of string * Debuginfo.t
module Dwarf_helpers : sig ... endexception Error of errorval report_error : error Format_doc.format_printerval report_error_doc : error Format_doc.printerval preproc_stack_check :
fun_body:Linear.instruction ->
frame_size:int ->
trap_size:int ->
preproc_stack_check_resultval add_stack_checks_if_needed :
Linear.fundecl ->
stack_offset:int ->
stack_threshold_size:int ->
trap_size:int ->
Linear.fundeclval emit_elf_note :
section:Asm_targets.Asm_section.t ->
owner:string ->
typ:int32 ->
emit_desc:(unit -> unit) ->
unittype emit_data_item_actions = {global_maybe_protected : Asm_targets.Asm_symbol.t -> unit;symbol_defined : string -> unit;symbol_used : string -> unit;
}val emit_data_item : emit_data_item_actions -> Cmm.data_item -> unit