Module Emitaux
val output_channel : Stdlib.out_channel Stdlib.refval emit_buffer : Stdlib.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 ->
Emitaux.frame_debuginfo ->
unittype 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 : Stdlib.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 : Emitaux.emit_frame_actions -> unitval binary_backend_available : bool Stdlib.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 Emitaux.errorval report_error : Stdlib.Format.formatter -> Emitaux.error -> unitval preproc_stack_check :
fun_body:Linear.instruction ->
frame_size:int ->
trap_size:int ->
Emitaux.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) ->
unit