From 0225ca01e39289ce1801fb09cd011cdbfb542b8d Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Fri, 20 Nov 2015 17:54:26 +0100 Subject: [PATCH 01/13] GC latency improvements --- Changes | 2 + INSTALL.adoc | 4 + VERSION | 2 +- asmcomp/amd64/emit.mlp | 3 + asmcomp/arm/emit.mlp | 8 +- asmcomp/arm64/emit.mlp | 7 +- asmcomp/i386/emit.mlp | 2 +- asmcomp/notes-on-changes-to-gc-interface.txt | 19 + asmcomp/power/emit.mlp | 16 +- asmrun/.depend | 2478 +++++++++++------- asmrun/Makefile | 76 +- asmrun/amd64.S | 4 + asmrun/amd64nt.asm | 4 + asmrun/arm.S | 14 +- asmrun/arm64.S | 14 +- asmrun/i386.S | 7 +- asmrun/i386nt.asm | 7 +- asmrun/power.S | 2 +- asmrun/roots.c | 92 +- asmrun/signals_asm.c | 8 +- asmrun/sparc.S | 5 +- asmrun/startup.c | 11 +- asmrun/startup_aux.c | 1 + byterun/.depend | 1514 ++++++----- byterun/Makefile | 17 +- byterun/Makefile.common | 10 + byterun/array.c | 9 +- byterun/caml/address_class.h | 6 + byterun/caml/config.h | 10 +- byterun/caml/gc_ctrl.h | 2 +- byterun/caml/instrtrace.h | 1 - byterun/caml/major_gc.h | 20 +- byterun/caml/memory.h | 30 +- byterun/caml/minor_gc.h | 17 +- byterun/caml/misc.h | 98 + byterun/caml/mlvalues.h | 5 +- byterun/caml/roots.h | 6 +- byterun/caml/signals.h | 6 +- byterun/caml/startup_aux.h | 1 + byterun/compact.c | 25 +- byterun/finalise.c | 54 +- byterun/freelist.c | 52 + byterun/gc_ctrl.c | 151 +- byterun/instrtrace.c | 1 + byterun/intern.c | 3 +- byterun/main.c | 21 - byterun/major_gc.c | 356 ++- byterun/memory.c | 111 +- byterun/minor_gc.c | 199 +- byterun/misc.c | 81 +- byterun/obj.c | 10 +- byterun/roots.c | 39 +- byterun/signals.c | 22 +- byterun/startup.c | 10 +- byterun/startup_aux.c | 3 + byterun/sys.c | 6 +- byterun/weak.c | 6 +- config/auto-aux/mmap-huge.c | 49 + configure | 18 + debugger/.depend | 2 +- lex/.depend | 6 +- ocamlbuild/.depend | 50 +- ocamldoc/.depend | 26 +- otherlibs/bigarray/.depend | 43 +- otherlibs/graph/.depend | 186 +- otherlibs/num/.depend | 26 +- otherlibs/str/.depend | 14 +- otherlibs/systhreads/.depend | 26 +- otherlibs/threads/.depend | 26 +- otherlibs/unix/.depend | 1100 ++++---- stdlib/Makefile | 14 +- stdlib/Makefile.nt | 6 + stdlib/Makefile.shared | 31 +- stdlib/gc.ml | 32 +- stdlib/gc.mli | 35 +- stdlib/obj.ml | 6 +- stdlib/sys.mli | 11 + stdlib/sys.mlp | 2 + tools/.depend | 4 +- tools/Makefile.shared | 5 + tools/ocaml-instr-graph | 109 + tools/ocaml-instr-report | 159 ++ 82 files changed, 4927 insertions(+), 2747 deletions(-) create mode 100644 asmcomp/notes-on-changes-to-gc-interface.txt create mode 120000 asmrun/startup_aux.c create mode 100644 config/auto-aux/mmap-huge.c create mode 100755 tools/ocaml-instr-graph create mode 100755 tools/ocaml-instr-report diff --git a/Changes b/Changes index 880403b39..8f528a147 100644 --- a/Changes +++ b/Changes @@ -152,6 +152,8 @@ Runtime system: Shinwell, review by Damien Doligez) - GPR#325: Add v=0x400 flag to OCAMLRUNPARAM to display GC stats on exit (Louis Gesbert, review by Alain Frisch) +- GPR#297: Several changes to improve the worst-case GC pause time. + (Damien Doligez, with help from Leo White and Francois Bobot) Standard library: - PR#5197, GPR#63: Arg: allow flags such as --flag=arg as well as --flag arg diff --git a/INSTALL.adoc b/INSTALL.adoc index deb95ade0..be0c3b6a2 100644 --- a/INSTALL.adoc +++ b/INSTALL.adoc @@ -106,6 +106,10 @@ The `configure` script accepts the following options: Compile and install the debug version of the runtimes, useful for debugging C stubs and other low-level code. +-with-instrumented-runtime:: + Compile and install the instrumented version of the runtimes, + useful mainly for fine-tuning the GC. Works only on Linux. + -verbose:: Verbose output of the configuration tests. Use it if the outcome of configure is not what you were expecting. diff --git a/VERSION b/VERSION index fb6ef7133..a10119747 100644 --- a/VERSION +++ b/VERSION @@ -1,4 +1,4 @@ -4.03.0+dev11-2015-10-19 +4.03.0+dev12-2015-11-20 # The version string is the first line of this file. # It must be in the format described in stdlib/sys.mli diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp index 4c012009e..15ec7a718 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -269,6 +269,7 @@ let record_frame live dbg = type gc_call = { gc_lbl: label; (* Entry label *) + gc_size: int; (* How much to add back to [young_ptr]*) gc_return_lbl: label; (* Where to branch after GC *) gc_frame: label } (* Label of frame descriptor *) @@ -276,6 +277,7 @@ let call_gc_sites = ref ([] : gc_call list) let emit_call_gc gc = def_label gc.gc_lbl; + I.sub (int gc.gc_size) r15; emit_call "caml_call_gc"; def_label gc.gc_frame; I.jmp (label gc.gc_return_lbl) @@ -580,6 +582,7 @@ let emit_instr fallthrough i = I.lea (mem64 NONE 8 R15) (res i 0); call_gc_sites := { gc_lbl = lbl_call_gc; + gc_size = n; gc_return_lbl = lbl_redo; gc_frame = lbl_frame } :: !call_gc_sites end else begin diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp index 904d800dc..a7b10e76a 100644 --- a/asmcomp/arm/emit.mlp +++ b/asmcomp/arm/emit.mlp @@ -125,13 +125,18 @@ let record_frame live dbg = type gc_call = { gc_lbl: label; (* Entry label *) + gc_size : int; (* How much to add back to [young_ptr] *) gc_return_lbl: label; (* Where to branch after GC *) gc_frame_lbl: label } (* Label of frame descriptor *) let call_gc_sites = ref ([] : gc_call list) let emit_call_gc gc = - `{emit_label gc.gc_lbl}: {emit_call "caml_call_gc"}\n`; + `{emit_label gc.gc_lbl}:`; + ignore (decompose_intconst + (Int32.of_int gc.gc_size) + (fun i -> ` add alloc_ptr, alloc_ptr, #{emit_int32 i}\n`)); + ` {emit_call "caml_call_gc"}\n`; `{emit_label gc.gc_frame_lbl}: b {emit_label gc.gc_return_lbl}\n` (* Record calls to caml_ml_array_bound_error. @@ -552,6 +557,7 @@ let emit_instr i = ` bcc {emit_label lbl_call_gc}\n`; call_gc_sites := { gc_lbl = lbl_call_gc; + gc_size = i; gc_return_lbl = lbl_redo; gc_frame_lbl = lbl_frame } :: !call_gc_sites; 3 + ninstr diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp index 1b9434442..7f34a2e0f 100644 --- a/asmcomp/arm64/emit.mlp +++ b/asmcomp/arm64/emit.mlp @@ -145,13 +145,15 @@ let record_frame live dbg = type gc_call = { gc_lbl: label; (* Entry label *) + gc_size: int; (* How much to add back to [young_ptr] *) gc_return_lbl: label; (* Where to branch after GC *) gc_frame_lbl: label } (* Label of frame descriptor *) let call_gc_sites = ref ([] : gc_call list) let emit_call_gc gc = - `{emit_label gc.gc_lbl}: bl {emit_symbol "caml_call_gc"}\n`; + `{emit_label gc.gc_lbl}: add {emit_reg reg_alloc_ptr}, {emit_reg reg_alloc_ptr}, #{emit_int gc.gc_size}\n`; + ` bl {emit_symbol "caml_call_gc"}\n`; `{emit_label gc.gc_frame_lbl}: b {emit_label gc.gc_return_lbl}\n` (* Record calls to caml_ml_array_bound_error. @@ -362,7 +364,7 @@ let num_call_gc_and_check_bound_points instr = let max_out_of_line_code_offset instr ~num_call_gc ~num_check_bound = if num_call_gc < 1 && num_check_bound < 1 then 0 else begin - let size_of_call_gc = 2 in + let size_of_call_gc = 3 in let size_of_check_bound = 1 in let size_of_last_thing = (* Call-GC points come before check-bound points. *) @@ -528,6 +530,7 @@ let assembly_code_for_allocation i ~n ~far = end; call_gc_sites := { gc_lbl = lbl_call_gc; + gc_size = n; gc_return_lbl = lbl_redo; gc_frame_lbl = lbl_frame } :: !call_gc_sites end else begin diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp index abc550333..4a89fad11 100644 --- a/asmcomp/i386/emit.mlp +++ b/asmcomp/i386/emit.mlp @@ -612,11 +612,11 @@ let emit_instr fallthrough i = def_label lbl_redo; I.mov (sym32 "caml_young_ptr") eax; I.sub (int n) eax; - I.mov eax (sym32 "caml_young_ptr"); I.cmp (sym32 "caml_young_limit") eax; let lbl_call_gc = new_label() in let lbl_frame = record_frame_label i.live Debuginfo.none in I.jb (label lbl_call_gc); + I.mov eax (sym32 "caml_young_ptr"); I.lea (mem32 NONE 4 RAX) (reg i.res.(0)); call_gc_sites := { gc_lbl = lbl_call_gc; diff --git a/asmcomp/notes-on-changes-to-gc-interface.txt b/asmcomp/notes-on-changes-to-gc-interface.txt new file mode 100644 index 000000000..d5878cbd9 --- /dev/null +++ b/asmcomp/notes-on-changes-to-gc-interface.txt @@ -0,0 +1,19 @@ +Note: only the AMD64/unix has had a significant amount of testing. + + +sparc: save the requested size in %g2, [caml_call_gc] uses it to + recover the old value of [caml_young_ptr]. + +i386: do not write back [caml_young_ptr] in the "gc" branch, only in + the "allocation success" branch. + +power: same as i386: do not adjust the allocation register in the GC branch + +ARM: adjust the pointer back to its initial value before calling + [caml_call_gc]. + +ARM64: same as ARM + +AMD64_nt: same as ARM + +AMD64: same as ARM diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp index fe1e1f306..dc9c92248 100644 --- a/asmcomp/power/emit.mlp +++ b/asmcomp/power/emit.mlp @@ -712,22 +712,24 @@ let emit_instr i = emit_load_store storeinstr addr i.arg 1 i.arg.(0) | Lop(Ialloc n) -> if !call_gc_label = 0 then call_gc_label := new_label(); - ` addi 31, 31, {emit_int(-n)}\n`; - ` {emit_string cmplg} 31, 30\n`; - ` addi {emit_reg i.res.(0)}, 31, {emit_int size_addr}\n`; + ` addi 11, 31, {emit_int(-n)}\n`; + ` {emit_string cmplg} 11, 30\n`; + ` addi {emit_reg i.res.(0)}, 11, {emit_int size_addr}\n`; ` bltl {emit_label !call_gc_label}\n`; (* Exactly 4 instructions after the beginning of the alloc sequence *) - record_frame i.live Debuginfo.none + record_frame i.live Debuginfo.none; + ` mr 31, 11\n` | Lop(Ispecific(Ialloc_far n)) -> if !call_gc_label = 0 then call_gc_label := new_label(); let lbl = new_label() in - ` addi 31, 31, {emit_int(-n)}\n`; - ` {emit_string cmplg} 31, 30\n`; + ` addi 11, 31, {emit_int(-n)}\n`; + ` {emit_string cmplg} 11, 30\n`; ` bge {emit_label lbl}\n`; ` bl {emit_label !call_gc_label}\n`; (* Exactly 4 instructions after the beginning of the alloc sequence *) record_frame i.live Debuginfo.none; - `{emit_label lbl}: addi {emit_reg i.res.(0)}, 31, {emit_int size_addr}\n` + `{emit_label lbl}: addi {emit_reg i.res.(0)}, 11, {emit_int size_addr}\n`; + ` mr 31, 11\n` | Lop(Iintop Isub) -> (* subfc has swapped arguments *) ` subfc {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n` | Lop(Iintop Imod) -> diff --git a/asmrun/.depend b/asmrun/.depend index f08687a9d..21159dff2 100644 --- a/asmrun/.depend +++ b/asmrun/.depend @@ -1,1074 +1,1556 @@ alloc.o: alloc.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/stacks.h ../byterun/caml/memory.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h array.o: array.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h backtrace.o: backtrace.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h stack.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/backtrace_prim.h ../byterun/caml/backtrace.h \ + ../byterun/caml/fail.h +backtrace_prim.o: backtrace_prim.c ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/backtrace_prim.h \ + ../byterun/caml/backtrace.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h callback.o: callback.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h compact.o: compact.c ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/freelist.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ - ../byterun/caml/weak.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h compare.o: compare.c ../byterun/caml/custom.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h custom.o: custom.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h debugger.o: debugger.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/debugger.h \ - ../byterun/caml/misc.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/debugger.h \ + ../byterun/caml/misc.h dynlink.o: dynlink.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/dynlink.h \ - ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/osdeps.h ../byterun/caml/prims.h \ - ../byterun/caml/signals.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/dynlink.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h ../byterun/caml/prims.h \ + ../byterun/caml/signals.h extern.o: extern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/gc.h \ - ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/io.h \ - ../byterun/caml/md5.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/reverse.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/gc.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/io.h \ + ../byterun/caml/md5.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/reverse.h fail.o: fail.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/gc.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/printexc.h ../byterun/caml/signals.h stack.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/callback.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/gc.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/callback.h finalise.o: finalise.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/signals.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/signals.h floats.o: floats.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/reverse.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h freelist.o: freelist.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/freelist.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/mlvalues.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/major_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/freelist.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h gc_ctrl.o: gc_ctrl.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/compact.h ../byterun/caml/custom.h \ - ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/freelist.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h stack.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/compact.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/startup_aux.h globroots.o: globroots.c ../byterun/caml/memory.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/globroots.h ../byterun/caml/roots.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/globroots.h ../byterun/caml/roots.h hash.o: hash.c ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/custom.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/hash.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/hash.h intern.o: intern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/callback.h ../byterun/caml/custom.h \ - ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/intext.h \ - ../byterun/caml/io.h ../byterun/caml/io.h ../byterun/caml/md5.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/reverse.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/intext.h \ + ../byterun/caml/io.h ../byterun/caml/io.h ../byterun/caml/md5.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h ints.o: ints.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/intext.h \ - ../byterun/caml/io.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h io.o: io.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/custom.h \ - ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/signals.h \ - ../byterun/caml/sys.h + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h \ + ../byterun/caml/sys.h lexing.o: lexing.c ../byterun/caml/fail.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h main.o: main.c ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h ../byterun/caml/sys.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h ../byterun/caml/sys.h major_gc.o: major_gc.c ../byterun/caml/compact.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/custom.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/fail.h ../byterun/caml/finalise.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/weak.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h md5.o: md5.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/md5.h ../byterun/caml/io.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/io.h ../byterun/caml/reverse.h -memory.o: memory.c ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/signals.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/md5.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/io.h \ + ../byterun/caml/reverse.h +memory.o: memory.c ../byterun/caml/address_class.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h meta.o: meta.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/fail.h \ - ../byterun/caml/fix_code.h ../byterun/caml/interp.h \ - ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/prims.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h -minor_gc.o: minor_gc.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/fail.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/finalise.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ - ../byterun/caml/signals.h ../byterun/caml/weak.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/fix_code.h ../byterun/caml/interp.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +minor_gc.o: minor_gc.c ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/signals.h ../byterun/caml/weak.h misc.o: misc.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/version.h natdynlink.o: natdynlink.c ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h stack.h ../byterun/caml/callback.h \ - ../byterun/caml/alloc.h ../byterun/caml/intext.h ../byterun/caml/io.h \ - ../byterun/caml/osdeps.h ../byterun/caml/fail.h \ - ../byterun/caml/signals.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h stack.h ../byterun/caml/callback.h \ + ../byterun/caml/alloc.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/osdeps.h ../byterun/caml/fail.h \ + ../byterun/caml/signals.h obj.o: obj.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/interp.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/prims.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/interp.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h parsing.o: parsing.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/alloc.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/alloc.h printexc.o: printexc.c ../byterun/caml/backtrace.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/callback.h \ - ../byterun/caml/debugger.h ../byterun/caml/fail.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h \ + ../byterun/caml/callback.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h roots.o: roots.c ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/globroots.h ../byterun/caml/memory.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h stack.h \ - ../byterun/caml/roots.h -signals_asm.o: signals_asm.c ../byterun/caml/fail.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/osdeps.h ../byterun/caml/signals.h \ - ../byterun/caml/signals_machdep.h signals_osdep.h stack.h + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/globroots.h \ + ../byterun/caml/memory.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h ../byterun/caml/roots.h signals.o: signals.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/callback.h ../byterun/caml/config.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ - ../byterun/caml/sys.h -startup_aux.o: startup_aux.c ../byterun/caml/backtrace.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/startup_aux.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + ../byterun/caml/sys.h +signals_asm.o: signals_asm.c ../byterun/caml/fail.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + signals_osdep.h stack.h startup.o: startup.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/backtrace.h \ - ../byterun/caml/exec.h ../byterun/caml/custom.h \ - ../byterun/caml/debugger.h ../byterun/caml/fail.h \ - ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/intext.h ../byterun/caml/io.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ - ../byterun/caml/printexc.h stack.h ../byterun/caml/startup_aux.h \ - ../byterun/caml/sys.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/custom.h \ + ../byterun/caml/debugger.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/osdeps.h ../byterun/caml/printexc.h stack.h \ + ../byterun/caml/startup_aux.h ../byterun/caml/sys.h +startup_aux.o: startup_aux.c ../byterun/caml/backtrace.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/startup_aux.h str.o: str.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/mlvalues.h ../byterun/caml/misc.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h sys.o: sys.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/debugger.h \ - ../byterun/caml/fail.h ../byterun/caml/instruct.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ - ../byterun/caml/signals.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/sys.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/io.h + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/instruct.h ../byterun/caml/io.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/sys.h terminfo.o: terminfo.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/fail.h ../byterun/caml/io.h \ - ../byterun/caml/mlvalues.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h ../byterun/caml/io.h \ + ../byterun/caml/mlvalues.h unix.o: unix.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/memory.h \ - ../byterun/caml/config.h ../byterun/caml/gc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/osdeps.h + ../byterun/caml/../../config/s.h ../byterun/caml/memory.h \ + ../byterun/caml/config.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h weak.o: weak.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h -alloc.d.o: alloc.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/stacks.h ../byterun/caml/memory.h -array.d.o: array.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h -backtrace.d.o: backtrace.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h stack.h -callback.d.o: callback.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h -compact.d.o: compact.c ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/freelist.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ - ../byterun/caml/weak.h -compare.d.o: compare.c ../byterun/caml/custom.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h -custom.d.o: custom.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h -debugger.d.o: debugger.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/debugger.h \ - ../byterun/caml/misc.h -dynlink.d.o: dynlink.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/dynlink.h \ - ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/osdeps.h ../byterun/caml/prims.h \ - ../byterun/caml/signals.h -extern.d.o: extern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/gc.h \ - ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/io.h \ - ../byterun/caml/md5.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/reverse.h -fail.d.o: fail.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/gc.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/printexc.h ../byterun/caml/signals.h stack.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/callback.h -finalise.d.o: finalise.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/signals.h -floats.d.o: floats.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/reverse.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h -freelist.d.o: freelist.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/freelist.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/mlvalues.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/major_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h -gc_ctrl.d.o: gc_ctrl.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/compact.h ../byterun/caml/custom.h \ - ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/freelist.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h stack.h -globroots.d.o: globroots.c ../byterun/caml/memory.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/globroots.h ../byterun/caml/roots.h -hash.d.o: hash.c ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/custom.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/hash.h -intern.d.o: intern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/callback.h ../byterun/caml/custom.h \ - ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/intext.h \ - ../byterun/caml/io.h ../byterun/caml/io.h ../byterun/caml/md5.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/reverse.h -ints.d.o: ints.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/intext.h \ - ../byterun/caml/io.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h -io.d.o: io.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/custom.h \ - ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/signals.h \ - ../byterun/caml/sys.h -lexing.d.o: lexing.c ../byterun/caml/fail.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h -main.d.o: main.c ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h ../byterun/caml/sys.h -major_gc.d.o: major_gc.c ../byterun/caml/compact.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/custom.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/fail.h ../byterun/caml/finalise.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/weak.h -md5.d.o: md5.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/md5.h ../byterun/caml/io.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/io.h ../byterun/caml/reverse.h -memory.d.o: memory.c ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/signals.h -meta.d.o: meta.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/fail.h \ - ../byterun/caml/fix_code.h ../byterun/caml/interp.h \ - ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/prims.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h -minor_gc.d.o: minor_gc.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/fail.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/finalise.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ - ../byterun/caml/signals.h ../byterun/caml/weak.h -misc.d.o: misc.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h -natdynlink.d.o: natdynlink.c ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h stack.h ../byterun/caml/callback.h \ - ../byterun/caml/alloc.h ../byterun/caml/intext.h ../byterun/caml/io.h \ - ../byterun/caml/osdeps.h ../byterun/caml/fail.h \ - ../byterun/caml/signals.h -obj.d.o: obj.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/interp.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/prims.h -parsing.d.o: parsing.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/alloc.h -printexc.d.o: printexc.c ../byterun/caml/backtrace.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/callback.h \ - ../byterun/caml/debugger.h ../byterun/caml/fail.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h -roots.d.o: roots.c ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/globroots.h ../byterun/caml/memory.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h stack.h \ - ../byterun/caml/roots.h -signals_asm.d.o: signals_asm.c ../byterun/caml/fail.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/osdeps.h ../byterun/caml/signals.h \ - ../byterun/caml/signals_machdep.h signals_osdep.h stack.h -signals.d.o: signals.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/callback.h ../byterun/caml/config.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ - ../byterun/caml/sys.h -startup_aux.d.o: startup_aux.c ../byterun/caml/backtrace.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/startup_aux.h -startup.d.o: startup.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/backtrace.h \ - ../byterun/caml/exec.h ../byterun/caml/custom.h \ - ../byterun/caml/debugger.h ../byterun/caml/fail.h \ - ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/intext.h ../byterun/caml/io.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ - ../byterun/caml/printexc.h stack.h ../byterun/caml/startup_aux.h \ - ../byterun/caml/sys.h -str.d.o: str.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/mlvalues.h ../byterun/caml/misc.h -sys.d.o: sys.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/debugger.h \ - ../byterun/caml/fail.h ../byterun/caml/instruct.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ - ../byterun/caml/signals.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/sys.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/io.h -terminfo.d.o: terminfo.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/fail.h ../byterun/caml/io.h \ - ../byterun/caml/mlvalues.h -unix.d.o: unix.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/memory.h \ - ../byterun/caml/config.h ../byterun/caml/gc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/osdeps.h -weak.d.o: weak.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h alloc.p.o: alloc.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/stacks.h ../byterun/caml/memory.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h array.p.o: array.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h backtrace.p.o: backtrace.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h stack.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/backtrace_prim.h ../byterun/caml/backtrace.h \ + ../byterun/caml/fail.h +backtrace_prim.p.o: backtrace_prim.c ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/backtrace_prim.h \ + ../byterun/caml/backtrace.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h callback.p.o: callback.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h compact.p.o: compact.c ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/freelist.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ - ../byterun/caml/weak.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h compare.p.o: compare.c ../byterun/caml/custom.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h custom.p.o: custom.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h debugger.p.o: debugger.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/debugger.h \ - ../byterun/caml/misc.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/debugger.h \ + ../byterun/caml/misc.h dynlink.p.o: dynlink.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/dynlink.h \ - ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/osdeps.h ../byterun/caml/prims.h \ - ../byterun/caml/signals.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/dynlink.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h ../byterun/caml/prims.h \ + ../byterun/caml/signals.h extern.p.o: extern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/gc.h \ - ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/io.h \ - ../byterun/caml/md5.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/reverse.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/gc.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/io.h \ + ../byterun/caml/md5.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/reverse.h fail.p.o: fail.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/gc.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/printexc.h ../byterun/caml/signals.h stack.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/callback.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/gc.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/callback.h finalise.p.o: finalise.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/signals.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/signals.h floats.p.o: floats.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/reverse.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h freelist.p.o: freelist.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/freelist.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/mlvalues.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/major_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/freelist.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h gc_ctrl.p.o: gc_ctrl.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/compact.h ../byterun/caml/custom.h \ - ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/freelist.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h stack.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/compact.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/startup_aux.h globroots.p.o: globroots.c ../byterun/caml/memory.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/globroots.h ../byterun/caml/roots.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/globroots.h ../byterun/caml/roots.h hash.p.o: hash.c ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/custom.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/hash.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/hash.h intern.p.o: intern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/callback.h ../byterun/caml/custom.h \ - ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/intext.h \ - ../byterun/caml/io.h ../byterun/caml/io.h ../byterun/caml/md5.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/reverse.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/intext.h \ + ../byterun/caml/io.h ../byterun/caml/io.h ../byterun/caml/md5.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h ints.p.o: ints.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/intext.h \ - ../byterun/caml/io.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h io.p.o: io.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/custom.h \ - ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/signals.h \ - ../byterun/caml/sys.h + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h \ + ../byterun/caml/sys.h lexing.p.o: lexing.c ../byterun/caml/fail.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h main.p.o: main.c ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h ../byterun/caml/sys.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h ../byterun/caml/sys.h major_gc.p.o: major_gc.c ../byterun/caml/compact.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/custom.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/fail.h ../byterun/caml/finalise.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/weak.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h md5.p.o: md5.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/md5.h ../byterun/caml/io.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/io.h ../byterun/caml/reverse.h -memory.p.o: memory.c ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/signals.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/md5.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/io.h \ + ../byterun/caml/reverse.h +memory.p.o: memory.c ../byterun/caml/address_class.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h meta.p.o: meta.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/config.h ../byterun/caml/fail.h \ - ../byterun/caml/fix_code.h ../byterun/caml/interp.h \ - ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/prims.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h -minor_gc.p.o: minor_gc.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/fail.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/finalise.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ - ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ - ../byterun/caml/signals.h ../byterun/caml/weak.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/fix_code.h ../byterun/caml/interp.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +minor_gc.p.o: minor_gc.c ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/signals.h ../byterun/caml/weak.h misc.p.o: misc.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/version.h natdynlink.p.o: natdynlink.c ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h stack.h ../byterun/caml/callback.h \ - ../byterun/caml/alloc.h ../byterun/caml/intext.h ../byterun/caml/io.h \ - ../byterun/caml/osdeps.h ../byterun/caml/fail.h \ - ../byterun/caml/signals.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h stack.h ../byterun/caml/callback.h \ + ../byterun/caml/alloc.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/osdeps.h ../byterun/caml/fail.h \ + ../byterun/caml/signals.h obj.p.o: obj.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/interp.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/prims.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/interp.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h parsing.p.o: parsing.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/alloc.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/alloc.h printexc.p.o: printexc.c ../byterun/caml/backtrace.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/callback.h \ - ../byterun/caml/debugger.h ../byterun/caml/fail.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h \ + ../byterun/caml/callback.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h roots.p.o: roots.c ../byterun/caml/finalise.h ../byterun/caml/roots.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/globroots.h ../byterun/caml/memory.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h stack.h \ - ../byterun/caml/roots.h -signals_asm.p.o: signals_asm.c ../byterun/caml/fail.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/osdeps.h ../byterun/caml/signals.h \ - ../byterun/caml/signals_machdep.h signals_osdep.h stack.h + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/globroots.h \ + ../byterun/caml/memory.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h ../byterun/caml/roots.h signals.p.o: signals.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/callback.h ../byterun/caml/config.h \ - ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ - ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ - ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/roots.h ../byterun/caml/memory.h \ - ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ - ../byterun/caml/sys.h -startup_aux.p.o: startup_aux.c ../byterun/caml/backtrace.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/memory.h \ - ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/startup_aux.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + ../byterun/caml/sys.h +signals_asm.p.o: signals_asm.c ../byterun/caml/fail.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + signals_osdep.h stack.h startup.p.o: startup.c ../byterun/caml/callback.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/misc.h ../byterun/caml/backtrace.h \ - ../byterun/caml/exec.h ../byterun/caml/custom.h \ - ../byterun/caml/debugger.h ../byterun/caml/fail.h \ - ../byterun/caml/freelist.h ../byterun/caml/gc.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/intext.h ../byterun/caml/io.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ - ../byterun/caml/printexc.h stack.h ../byterun/caml/startup_aux.h \ - ../byterun/caml/sys.h + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/custom.h \ + ../byterun/caml/debugger.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/osdeps.h ../byterun/caml/printexc.h stack.h \ + ../byterun/caml/startup_aux.h ../byterun/caml/sys.h +startup_aux.p.o: startup_aux.c ../byterun/caml/backtrace.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/startup_aux.h str.p.o: str.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/mlvalues.h ../byterun/caml/misc.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h sys.p.o: sys.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ - ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/debugger.h \ - ../byterun/caml/fail.h ../byterun/caml/instruct.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ - ../byterun/caml/signals.h ../byterun/caml/stacks.h \ - ../byterun/caml/memory.h ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/sys.h \ - ../byterun/caml/gc_ctrl.h ../byterun/caml/io.h + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/instruct.h ../byterun/caml/io.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/sys.h terminfo.p.o: terminfo.c ../byterun/caml/config.h \ - ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ - ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ - ../byterun/caml/mlvalues.h ../byterun/caml/fail.h ../byterun/caml/io.h \ - ../byterun/caml/mlvalues.h + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h ../byterun/caml/io.h \ + ../byterun/caml/mlvalues.h unix.p.o: unix.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/memory.h \ - ../byterun/caml/config.h ../byterun/caml/gc.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/misc.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/misc.h \ - ../byterun/caml/osdeps.h + ../byterun/caml/../../config/s.h ../byterun/caml/memory.h \ + ../byterun/caml/config.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h weak.p.o: weak.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ - ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ - ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ - ../byterun/caml/fail.h ../byterun/caml/major_gc.h \ - ../byterun/caml/freelist.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ - ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ - ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h +alloc.d.o: alloc.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +array.d.o: array.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h +backtrace.d.o: backtrace.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/backtrace_prim.h ../byterun/caml/backtrace.h \ + ../byterun/caml/fail.h +backtrace_prim.d.o: backtrace_prim.c ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/backtrace_prim.h \ + ../byterun/caml/backtrace.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h +callback.d.o: callback.c ../byterun/caml/callback.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h +compact.d.o: compact.c ../byterun/caml/address_class.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h +compare.d.o: compare.c ../byterun/caml/custom.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h +custom.d.o: custom.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h +debugger.d.o: debugger.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/debugger.h \ + ../byterun/caml/misc.h +dynlink.d.o: dynlink.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/dynlink.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h ../byterun/caml/prims.h \ + ../byterun/caml/signals.h +extern.d.o: extern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/gc.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/io.h \ + ../byterun/caml/md5.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/reverse.h +fail.d.o: fail.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/gc.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/callback.h +finalise.d.o: finalise.c ../byterun/caml/callback.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/signals.h +floats.d.o: floats.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +freelist.d.o: freelist.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/freelist.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h +gc_ctrl.d.o: gc_ctrl.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/compact.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/startup_aux.h +globroots.d.o: globroots.c ../byterun/caml/memory.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/globroots.h ../byterun/caml/roots.h +hash.d.o: hash.c ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/hash.h +intern.d.o: intern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/intext.h \ + ../byterun/caml/io.h ../byterun/caml/io.h ../byterun/caml/md5.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h +ints.d.o: ints.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h +io.d.o: io.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h \ + ../byterun/caml/sys.h +lexing.d.o: lexing.c ../byterun/caml/fail.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h +main.d.o: main.c ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h ../byterun/caml/sys.h +major_gc.d.o: major_gc.c ../byterun/caml/compact.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h +md5.d.o: md5.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/md5.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/io.h \ + ../byterun/caml/reverse.h +memory.d.o: memory.c ../byterun/caml/address_class.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h +meta.d.o: meta.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/fix_code.h ../byterun/caml/interp.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +minor_gc.d.o: minor_gc.c ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/signals.h ../byterun/caml/weak.h +misc.d.o: misc.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/version.h +natdynlink.d.o: natdynlink.c ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h stack.h ../byterun/caml/callback.h \ + ../byterun/caml/alloc.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/osdeps.h ../byterun/caml/fail.h \ + ../byterun/caml/signals.h +obj.d.o: obj.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/interp.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h +parsing.d.o: parsing.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/alloc.h +printexc.d.o: printexc.c ../byterun/caml/backtrace.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h \ + ../byterun/caml/callback.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h +roots.d.o: roots.c ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/globroots.h \ + ../byterun/caml/memory.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h ../byterun/caml/roots.h +signals.d.o: signals.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + ../byterun/caml/sys.h +signals_asm.d.o: signals_asm.c ../byterun/caml/fail.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + signals_osdep.h stack.h +startup.d.o: startup.c ../byterun/caml/callback.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/custom.h \ + ../byterun/caml/debugger.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/osdeps.h ../byterun/caml/printexc.h stack.h \ + ../byterun/caml/startup_aux.h ../byterun/caml/sys.h +startup_aux.d.o: startup_aux.c ../byterun/caml/backtrace.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/startup_aux.h +str.d.o: str.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h +sys.d.o: sys.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/instruct.h ../byterun/caml/io.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/sys.h +terminfo.d.o: terminfo.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h ../byterun/caml/io.h \ + ../byterun/caml/mlvalues.h +unix.d.o: unix.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/memory.h \ + ../byterun/caml/config.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h +weak.d.o: weak.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h +alloc.i.o: alloc.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +array.i.o: array.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h +backtrace.i.o: backtrace.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/backtrace_prim.h ../byterun/caml/backtrace.h \ + ../byterun/caml/fail.h +backtrace_prim.i.o: backtrace_prim.c ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/backtrace_prim.h \ + ../byterun/caml/backtrace.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h +callback.i.o: callback.c ../byterun/caml/callback.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/mlvalues.h +compact.i.o: compact.c ../byterun/caml/address_class.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h +compare.i.o: compare.c ../byterun/caml/custom.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h +custom.i.o: custom.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h +debugger.i.o: debugger.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/debugger.h \ + ../byterun/caml/misc.h +dynlink.i.o: dynlink.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/dynlink.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h ../byterun/caml/prims.h \ + ../byterun/caml/signals.h +extern.i.o: extern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h ../byterun/caml/gc.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/io.h \ + ../byterun/caml/md5.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/reverse.h +fail.i.o: fail.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/gc.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/callback.h +finalise.i.o: finalise.c ../byterun/caml/callback.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/fail.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/signals.h +floats.i.o: floats.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +freelist.i.o: freelist.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/freelist.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h +gc_ctrl.i.o: gc_ctrl.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/backtrace.h ../byterun/caml/exec.h \ + ../byterun/caml/compact.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/memory.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/signals.h stack.h ../byterun/caml/startup_aux.h +globroots.i.o: globroots.c ../byterun/caml/memory.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/globroots.h ../byterun/caml/roots.h +hash.i.o: hash.c ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/hash.h +intern.i.o: intern.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/intext.h \ + ../byterun/caml/io.h ../byterun/caml/io.h ../byterun/caml/md5.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/reverse.h +ints.i.o: ints.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/custom.h ../byterun/caml/fail.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h +io.i.o: io.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/custom.h \ + ../byterun/caml/fail.h ../byterun/caml/io.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h \ + ../byterun/caml/sys.h +lexing.i.o: lexing.c ../byterun/caml/fail.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h +main.i.o: main.c ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h ../byterun/caml/sys.h +major_gc.i.o: major_gc.c ../byterun/caml/compact.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/finalise.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/weak.h +md5.i.o: md5.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/md5.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/io.h \ + ../byterun/caml/reverse.h +memory.i.o: memory.c ../byterun/caml/address_class.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/signals.h +meta.i.o: meta.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/fix_code.h ../byterun/caml/interp.h \ + ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h +minor_gc.i.o: minor_gc.c ../byterun/caml/custom.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h ../byterun/caml/fail.h \ + ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/gc.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/major_gc.h ../byterun/caml/memory.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/roots.h \ + ../byterun/caml/signals.h ../byterun/caml/weak.h +misc.i.o: misc.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/version.h +natdynlink.i.o: natdynlink.c ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h stack.h ../byterun/caml/callback.h \ + ../byterun/caml/alloc.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/osdeps.h ../byterun/caml/fail.h \ + ../byterun/caml/signals.h +obj.i.o: obj.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/gc.h ../byterun/caml/interp.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/prims.h +parsing.i.o: parsing.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/misc.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/alloc.h +printexc.i.o: printexc.c ../byterun/caml/backtrace.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h \ + ../byterun/caml/callback.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/printexc.h +roots.i.o: roots.c ../byterun/caml/finalise.h ../byterun/caml/roots.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/globroots.h \ + ../byterun/caml/memory.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h stack.h ../byterun/caml/roots.h +signals.i.o: signals.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/callback.h ../byterun/caml/config.h \ + ../byterun/caml/fail.h ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/roots.h ../byterun/caml/memory.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + ../byterun/caml/sys.h +signals_asm.i.o: signals_asm.c ../byterun/caml/fail.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/signals_machdep.h \ + signals_osdep.h stack.h +startup.i.o: startup.c ../byterun/caml/callback.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/backtrace.h \ + ../byterun/caml/exec.h ../byterun/caml/custom.h \ + ../byterun/caml/debugger.h ../byterun/caml/fail.h \ + ../byterun/caml/freelist.h ../byterun/caml/gc.h \ + ../byterun/caml/gc_ctrl.h ../byterun/caml/intext.h ../byterun/caml/io.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/osdeps.h ../byterun/caml/printexc.h stack.h \ + ../byterun/caml/startup_aux.h ../byterun/caml/sys.h +startup_aux.i.o: startup_aux.c ../byterun/caml/backtrace.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/misc.h ../byterun/caml/exec.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/minor_gc.h \ + ../byterun/caml/address_class.h ../byterun/caml/startup_aux.h +str.i.o: str.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/misc.h +sys.i.o: sys.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/alloc.h \ + ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/debugger.h \ + ../byterun/caml/fail.h ../byterun/caml/gc_ctrl.h \ + ../byterun/caml/instruct.h ../byterun/caml/io.h ../byterun/caml/misc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/osdeps.h \ + ../byterun/caml/signals.h ../byterun/caml/stacks.h \ + ../byterun/caml/memory.h ../byterun/caml/gc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/sys.h +terminfo.i.o: terminfo.c ../byterun/caml/config.h \ + ../byterun/caml/../../config/m.h ../byterun/caml/../../config/s.h \ + ../byterun/caml/alloc.h ../byterun/caml/misc.h ../byterun/caml/config.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/fail.h ../byterun/caml/io.h \ + ../byterun/caml/mlvalues.h +unix.i.o: unix.c ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/memory.h \ + ../byterun/caml/config.h ../byterun/caml/gc.h \ + ../byterun/caml/mlvalues.h ../byterun/caml/misc.h \ + ../byterun/caml/major_gc.h ../byterun/caml/freelist.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/misc.h ../byterun/caml/osdeps.h +weak.i.o: weak.c ../byterun/caml/alloc.h ../byterun/caml/misc.h \ + ../byterun/caml/config.h ../byterun/caml/../../config/m.h \ + ../byterun/caml/../../config/s.h ../byterun/caml/mlvalues.h \ + ../byterun/caml/fail.h ../byterun/caml/major_gc.h \ + ../byterun/caml/freelist.h ../byterun/caml/memory.h \ + ../byterun/caml/gc.h ../byterun/caml/major_gc.h \ + ../byterun/caml/minor_gc.h ../byterun/caml/address_class.h \ + ../byterun/caml/mlvalues.h diff --git a/asmrun/Makefile b/asmrun/Makefile index 5df3164bd..32c00597b 100644 --- a/asmrun/Makefile +++ b/asmrun/Makefile @@ -18,12 +18,13 @@ FLAGS=-I../byterun -DCAML_NAME_SPACE -DNATIVE_CODE \ -DTARGET_$(ARCH) -DMODEL_$(MODEL) -DSYS_$(SYSTEM) $(IFLEXDIR) CFLAGS=$(FLAGS) $(NATIVECCCOMPOPTS) DFLAGS=$(FLAGS) -g -DDEBUG $(NATIVECCCOMPOPTS) +IFLAGS=$(FLAGS) -DCAML_INSTR PFLAGS=$(FLAGS) -pg -DPROFILING $(NATIVECCPROFOPTS) $(NATIVECCCOMPOPTS) PICFLAGS=$(FLAGS) $(SHAREDCCCOMPOPTS) $(NATIVECCCOMPOPTS) COBJS=startup_aux.o startup.o \ main.o fail.o roots.o globroots.o signals.o signals_asm.o \ - misc.o freelist.o major_gc.o minor_gc.o memory.o alloc.o compare.o ints.o \ + freelist.o misc.o major_gc.o minor_gc.o memory.o alloc.o compare.o ints.o \ floats.o str.o array.o io.o extern.o intern.o hash.o sys.o parsing.o \ gc_ctrl.o terminfo.o md5.o obj.o lexing.o printexc.o callback.o weak.o \ compact.o finalise.o custom.o $(UNIX_OR_WIN32).o backtrace_prim.o \ @@ -34,11 +35,16 @@ ASMOBJS=$(ARCH).o OBJS=$(COBJS) $(ASMOBJS) DOBJS=$(COBJS:.o=.d.o) $(ASMOBJS) +IOBJS=$(COBJS:.o=.i.o) $(ASMOBJS) POBJS=$(COBJS:.o=.p.o) $(ASMOBJS:.o=.p.o) PICOBJS=$(COBJS:.o=.pic.o) $(ASMOBJS:.o=.pic.o) all: libasmrun.a all-$(RUNTIMED) all-$(PROFILING) all-$(SHARED) +ifeq "$(RUNTIMEI)" "true" +all: libasmruni.a +endif + libasmrun.a: $(OBJS) rm -f libasmrun.a $(ARCMD) rc libasmrun.a $(OBJS) @@ -55,6 +61,11 @@ libasmrund.a: $(DOBJS) $(ARCMD) rc libasmrund.a $(DOBJS) $(RANLIB) libasmrund.a +libasmruni.a: $(IOBJS) + rm -f $@ + $(ARCMD) rc $@ $^ + $(RANLIB) $@ + all-noprof: all-prof: libasmrunp.a @@ -78,40 +89,39 @@ libasmrun_shared.so: $(PICOBJS) INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR) -install: install-default install-$(RUNTIMED) install-$(PROFILING) \ - install-$(SHARED) - -install-default: +install:: cp libasmrun.a $(INSTALL_LIBDIR)/libasmrun.a cd $(INSTALL_LIBDIR); $(RANLIB) libasmrun.a .PHONY: install-default -install-noruntimed: -.PHONY: install-noruntimed - -install-runtimed: +ifeq "$(RUNTIMED)" "runtimed" +install:: cp libasmrund.a $(INSTALL_LIBDIR)/libasmrund.a cd $(INSTALL_LIBDIR); $(RANLIB) libasmrund.a -.PHONY: install-runtimed +endif -install-noprof: - rm -f $(INSTALL_LIBDIR)/libasmrunp.a - ln -s libasmrun.a $(INSTALL_LIBDIR)/libasmrunp.a -.PHONY: install-noprof +ifeq "$(RUNTIMEI)" "true" +install:: + cp libasmruni.a $(INSTALL_LIBDIR)/libasmruni.a + cd $(INSTALL_LIBDIR); $(RANLIB) libasmruni.a +endif -install-prof: +ifeq "$(PROFILING)" "prof" +install:: cp libasmrunp.a $(INSTALL_LIBDIR)/libasmrunp.a cd $(INSTALL_LIBDIR); $(RANLIB) libasmrunp.a -.PHONY: install-prof +else +install:: + rm -f $(INSTALL_LIBDIR)/libasmrunp.a + ln -s libasmrun.a $(INSTALL_LIBDIR)/libasmrunp.a +endif -install-noshared: -.PHONY: install-noshared - -install-shared: +ifeq "$(SHARED)" "shared" +install:: cp libasmrun_pic.a $(INSTALL_LIBDIR)/libasmrun_pic.a cd $(INSTALL_LIBDIR); $(RANLIB) libasmrunp.a cp libasmrun_shared.so $(INSTALL_LIBDIR)/libasmrun_shared.so -.PHONY: install-prof +endif main.c: ../byterun/main.c ln -s ../byterun/main.c main.c @@ -197,6 +207,18 @@ LINKEDFILES=misc.c freelist.c major_gc.c minor_gc.c memory.c alloc.c array.c \ clean:: rm -f $(LINKEDFILES) +%.d.o: %.c + $(CC) -c $(DFLAGS) -o $@ $< + +%.i.o : %.c + $(CC) -c $(IFLAGS) -o $@ $< + +%.p.o: %.c + $(CC) -c $(PFLAGS) -o $@ $< + +%.pic.o: %.c + $(CC) -c $(PICFLAGS) -o $@ $< + %.o: %.S $(ASPP) -DSYS_$(SYSTEM) -DMODEL_$(MODEL) -o $@ $< || \ { echo "If your assembler produced syntax errors, it is probably";\ @@ -210,15 +232,6 @@ clean:: %.pic.o: %.S $(ASPP) -DSYS_$(SYSTEM) -DMODEL_$(MODEL) $(SHAREDCCCOMPOPTS) -o $@ $< -%.d.o: %.c - $(CC) -c $(DFLAGS) -o $@ $< - -%.p.o: %.c - $(CC) -c $(PFLAGS) -o $@ $< - -%.pic.o: %.c - $(CC) -c $(PICFLAGS) -o $@ $< - %.o: %.s $(ASPP) -DSYS_$(SYSTEM) -o $@ $< @@ -233,7 +246,8 @@ clean:: depend: $(COBJS:.o=.c) ${LINKEDFILES} $(CC) -MM $(FLAGS) *.c > .depend + $(CC) -MM $(FLAGS) -DPROFILING *.c | sed -e 's/\.o/.p.o/' >> .depend $(CC) -MM $(FLAGS) -DDEBUG *.c | sed -e 's/\.o/.d.o/' >> .depend - $(CC) -MM $(FLAGS) *.c | sed -e 's/\.o/.p.o/' >> .depend + $(CC) -MM $(FLAGS) -DCAML_INSTR *.c | sed -e 's/\.o/.i.o/' >> .depend include .depend diff --git a/asmrun/amd64.S b/asmrun/amd64.S index be38848ec..962d72c03 100644 --- a/asmrun/amd64.S +++ b/asmrun/amd64.S @@ -372,6 +372,7 @@ LBL(caml_alloc1): jb LBL(100) ret LBL(100): + addq $16, %r15 RECORD_STACK_FRAME(0) ENTER_FUNCTION /* subq $8, %rsp; CFI_ADJUST (8); */ @@ -389,6 +390,7 @@ LBL(caml_alloc2): jb LBL(101) ret LBL(101): + addq $24, %r15 RECORD_STACK_FRAME(0) ENTER_FUNCTION /* subq $8, %rsp; CFI_ADJUST (8); */ @@ -406,6 +408,7 @@ LBL(caml_alloc3): jb LBL(102) ret LBL(102): + addq $32, %r15 RECORD_STACK_FRAME(0) ENTER_FUNCTION /* subq $8, %rsp; CFI_ADJUST (8) */ @@ -425,6 +428,7 @@ LBL(caml_allocN): addq $8, %rsp; CFI_ADJUST (-8) /* drop desired size */ ret LBL(103): + addq (%rsp), %r15 RECORD_STACK_FRAME(8) #ifdef WITH_FRAME_POINTERS /* Do we need 16-byte alignment here ? */ diff --git a/asmrun/amd64nt.asm b/asmrun/amd64nt.asm index 4883ba977..cf943caed 100644 --- a/asmrun/amd64nt.asm +++ b/asmrun/amd64nt.asm @@ -131,6 +131,7 @@ caml_alloc1: jb L100 ret L100: + add r15, 16 mov rax, [rsp + 0] mov caml_last_return_address, rax lea rax, [rsp + 8] @@ -148,6 +149,7 @@ caml_alloc2: jb L101 ret L101: + add r15, 24 mov rax, [rsp + 0] mov caml_last_return_address, rax lea rax, [rsp + 8] @@ -165,6 +167,7 @@ caml_alloc3: jb L102 ret L102: + add r15, 32 mov rax, [rsp + 0] mov caml_last_return_address, rax lea rax, [rsp + 8] @@ -182,6 +185,7 @@ caml_allocN: jb L103 ret L103: + add r15, rax push rax ; save desired size mov rax, [rsp + 8] mov caml_last_return_address, rax diff --git a/asmrun/arm.S b/asmrun/arm.S index e3e3c4cb2..7a95bf740 100644 --- a/asmrun/arm.S +++ b/asmrun/arm.S @@ -127,7 +127,7 @@ caml_call_gc: /* Store pointer to saved integer registers in caml_gc_regs */ ldr r12, =caml_gc_regs str sp, [r12] - /* Save current allocation pointer for debugging purposes */ + /* Save current allocation pointer (the GC needs it) */ ldr alloc_limit, =caml_young_ptr str alloc_ptr, [alloc_limit] /* Save trap pointer in case an exception is raised during GC */ @@ -162,7 +162,8 @@ caml_alloc1: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: /* Record return address */ +1: add alloc_ptr, alloc_ptr, 8 + /* Record return address */ ldr r7, =caml_last_return_address str lr, [r7] /* Call GC (preserves r7) */ @@ -185,7 +186,8 @@ caml_alloc2: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: /* Record return address */ +1: add alloc_ptr, alloc_ptr, 12 + /* Record return address */ ldr r7, =caml_last_return_address str lr, [r7] /* Call GC (preserves r7) */ @@ -209,7 +211,8 @@ caml_alloc3: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: /* Record return address */ +1: add alloc_ptr, alloc_ptr, 16 + /* Record return address */ ldr r7, =caml_last_return_address str lr, [r7] /* Call GC (preserves r7) */ @@ -232,7 +235,8 @@ caml_allocN: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: /* Record return address */ +1: add alloc_ptr, alloc_ptr, r7 + /* Record return address */ ldr r12, =caml_last_return_address str lr, [r12] /* Call GC (preserves r7) */ diff --git a/asmrun/arm64.S b/asmrun/arm64.S index 7969eb629..780abe353 100644 --- a/asmrun/arm64.S +++ b/asmrun/arm64.S @@ -123,7 +123,7 @@ caml_call_gc: /* Store pointer to saved integer registers in caml_gc_regs */ add TMP, sp, #16 STOREGLOBAL(TMP, caml_gc_regs) - /* Save current allocation pointer for debugging purposes */ + /* Save current allocation pointer (the GC needs it) */ STOREGLOBAL(ALLOC_PTR, caml_young_ptr) /* Save trap pointer in case an exception is raised during GC */ STOREGLOBAL(TRAP_PTR, caml_exception_pointer) @@ -173,7 +173,8 @@ caml_alloc1: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: stp x29, x30, [sp, -16]! +2: add ALLOC_PTR, ALLOC_PTR, #16 + stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. This is the address immediately above the pair of words (x29 and x30) we just @@ -206,7 +207,8 @@ caml_alloc2: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: stp x29, x30, [sp, -16]! +2: add ALLOC_PTR, ALLOC_PTR, #24 + stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. See comment above. */ @@ -235,7 +237,8 @@ caml_alloc3: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: stp x29, x30, [sp, -16]! +2: add ALLOC_PTR, ALLOC_PTR, #32 + stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. See comment above. */ @@ -264,7 +267,8 @@ caml_allocN: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: stp x29, x30, [sp, -16]! +2: add ALLOC_PTR, ALLOC_PTR, ARG + stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. See comment above. */ diff --git a/asmrun/i386.S b/asmrun/i386.S index 2fdc6f8e7..442ee7174 100644 --- a/asmrun/i386.S +++ b/asmrun/i386.S @@ -171,9 +171,9 @@ FUNCTION(caml_alloc1) PROFILE_CAML movl G(caml_young_ptr), %eax subl $8, %eax - movl %eax, G(caml_young_ptr) cmpl G(caml_young_limit), %eax jb LBL(100) + movl %eax, G(caml_young_ptr) ret LBL(100): movl 0(%esp), %eax @@ -191,9 +191,9 @@ FUNCTION(caml_alloc2) PROFILE_CAML movl G(caml_young_ptr), %eax subl $12, %eax - movl %eax, G(caml_young_ptr) cmpl G(caml_young_limit), %eax jb LBL(101) + movl %eax, G(caml_young_ptr) ret LBL(101): movl 0(%esp), %eax @@ -211,9 +211,9 @@ FUNCTION(caml_alloc3) PROFILE_CAML movl G(caml_young_ptr), %eax subl $16, %eax - movl %eax, G(caml_young_ptr) cmpl G(caml_young_limit), %eax jb LBL(102) + movl %eax, G(caml_young_ptr) ret LBL(102): movl 0(%esp), %eax @@ -239,7 +239,6 @@ LBL(103): subl G(caml_young_ptr), %eax /* eax = - size */ negl %eax /* eax = size */ pushl %eax; CFI_ADJUST(4) /* save desired size */ - subl %eax, G(caml_young_ptr) /* must update young_ptr */ movl 4(%esp), %eax movl %eax, G(caml_last_return_address) leal 8(%esp), %eax diff --git a/asmrun/i386nt.asm b/asmrun/i386nt.asm index 61ec34162..c3961a092 100644 --- a/asmrun/i386nt.asm +++ b/asmrun/i386nt.asm @@ -72,9 +72,9 @@ L105: push ebp _caml_alloc1: mov eax, _caml_young_ptr sub eax, 8 - mov _caml_young_ptr, eax cmp eax, _caml_young_limit jb L100 + mov _caml_young_ptr, eax ret L100: mov eax, [esp] mov _caml_last_return_address, eax @@ -87,9 +87,9 @@ L100: mov eax, [esp] _caml_alloc2: mov eax, _caml_young_ptr sub eax, 12 - mov _caml_young_ptr, eax cmp eax, _caml_young_limit jb L101 + mov _caml_young_ptr, eax ret L101: mov eax, [esp] mov _caml_last_return_address, eax @@ -102,9 +102,9 @@ L101: mov eax, [esp] _caml_alloc3: mov eax, _caml_young_ptr sub eax, 16 - mov _caml_young_ptr, eax cmp eax, _caml_young_limit jb L102 + mov _caml_young_ptr, eax ret L102: mov eax, [esp] mov _caml_last_return_address, eax @@ -124,7 +124,6 @@ _caml_allocN: L103: sub eax, _caml_young_ptr ; eax = - size neg eax ; eax = size push eax ; save desired size - sub _caml_young_ptr, eax ; must update young_ptr mov eax, [esp+4] mov _caml_last_return_address, eax lea eax, [esp+8] diff --git a/asmrun/power.S b/asmrun/power.S index e5de431ad..b45f3059e 100644 --- a/asmrun/power.S +++ b/asmrun/power.S @@ -179,7 +179,7 @@ FUNCTION(caml_call_gc) /* Record pointer to register array */ addi 0, 1, 8*32 + PARAM_SAVE_AREA + RESERVED_STACK Storeglobal(0, caml_gc_regs, 11) - /* Save current allocation pointer for debugging purposes */ + /* Save current allocation pointer (needed by the GC) */ Storeglobal(31, caml_young_ptr, 11) /* Save exception pointer (if e.g. a sighandler raises) */ Storeglobal(29, caml_exception_pointer, 11) diff --git a/asmrun/roots.c b/asmrun/roots.c index d6de22373..09e560a92 100644 --- a/asmrun/roots.c +++ b/asmrun/roots.c @@ -335,27 +335,77 @@ void caml_oldify_local_roots (void) if (caml_scan_roots_hook != NULL) (*caml_scan_roots_hook)(&caml_oldify_one); } -/* Call [darken] on all roots */ +static mlsize_t incr_roots_i, incr_roots_j, roots_count; +static value *incr_roots_glob; +uintnat caml_incremental_roots_count = 0; -void caml_darken_all_roots (void) +/* Call [caml_darken] on all roots, incrementally: + [caml_darken_all_roots_start] does the non-incremental part and + sets things up for [caml_darken_all_roots_slice]. +*/ +void caml_darken_all_roots_start (void) { - caml_do_roots (caml_darken); + caml_do_roots (caml_darken, 0); + incr_roots_i = 0; + incr_roots_glob = caml_globals[incr_roots_i]; + incr_roots_j = 0; + roots_count = 0; } -void caml_do_roots (scanning_action f) +/* Call [caml_darken] on at most [work] global roots. Return the + number of roots darkened; if this is less than [work], then the + work is done and there are no more roots to darken. + */ +intnat caml_darken_all_roots_slice (intnat work) +{ + mlsize_t j = incr_roots_j; + mlsize_t sz; + intnat work_done = 0; + CAML_INSTR_SETUP (tmr, ""); + + if (incr_roots_glob == NULL) goto finished; + sz = Wosize_val (*incr_roots_glob); + while (work_done < work){ + while (j >= sz){ + ++ incr_roots_glob; + while (*incr_roots_glob == 0){ + ++ incr_roots_i; + incr_roots_glob = caml_globals[incr_roots_i]; + if (incr_roots_glob == 0) goto finished; + } + j = 0; + sz = Wosize_val (*incr_roots_glob); + } + caml_darken (Field (*incr_roots_glob, j), &Field (*incr_roots_glob, j)); + ++ work_done; + ++ j; + } + finished: + incr_roots_j = j; + roots_count += work_done; + if (work_done < work){ + caml_incremental_roots_count = roots_count; + } + CAML_INSTR_TIME (tmr, "major/mark/global_roots_slice"); + return work_done; +} + +void caml_do_roots (scanning_action f, int do_globals) { int i, j; value * glob; link *lnk; + CAML_INSTR_SETUP (tmr, "major_roots"); - /* The global roots */ - for (i = 0; caml_globals[i] != 0; i++) { - for(glob = caml_globals[i]; *glob != 0; glob++) { - for (j = 0; j < Wosize_val(*glob); j++) - f (Field (*glob, j), &Field (*glob, j)); + if (do_globals){ + /* The global roots */ + for (i = 0; caml_globals[i] != 0; i++) { + for(glob = caml_globals[i]; *glob != 0; glob++) { + for (j = 0; j < Wosize_val(*glob); j++) + f (Field (*glob, j), &Field (*glob, j)); + } } } - /* Dynamic global roots */ iter_list(caml_dyn_globals, lnk) { for(glob = (value *) lnk->data; *glob != 0; glob++) { @@ -364,16 +414,36 @@ void caml_do_roots (scanning_action f) } } } - + CAML_INSTR_TIME (tmr, "major_roots/dynamic_global"); /* The stack and local roots */ caml_do_local_roots(f, caml_bottom_of_stack, caml_last_return_address, caml_gc_regs, caml_local_roots); + CAML_INSTR_TIME (tmr, "major_roots/local"); /* Global C roots */ caml_scan_global_roots(f); + CAML_INSTR_TIME (tmr, "major_roots/C"); /* Finalised values */ caml_final_do_strong_roots (f); + CAML_INSTR_TIME (tmr, "major_roots/finalised"); + /* Objects in the minor heap are roots for the major GC. */ + { + value *hp; + asize_t sz, i; + for (hp = caml_young_ptr; + hp < caml_young_alloc_end; + hp += Whsize_wosize (sz)){ + sz = Wosize_hp (hp); + if (Tag_hp (hp) < No_scan_tag){ + for (i = 0; i < sz; i++){ + f(Field(Val_hp(hp), i), &Field(Val_hp(hp), i)); + } + } + } + } + CAML_INSTR_TIME (tmr, "major_roots/minor_heap"); /* Hook */ if (caml_scan_roots_hook != NULL) (*caml_scan_roots_hook)(f); + CAML_INSTR_TIME (tmr, "major_roots/hook"); } void caml_do_local_roots(scanning_action f, char * bottom_of_stack, diff --git a/asmrun/signals_asm.c b/asmrun/signals_asm.c index 6c9439de5..3dd32b625 100644 --- a/asmrun/signals_asm.c +++ b/asmrun/signals_asm.c @@ -67,9 +67,11 @@ extern char caml_system__code_begin, caml_system__code_end; void caml_garbage_collection(void) { - caml_young_limit = caml_young_start; - if (caml_young_ptr < caml_young_start || caml_force_major_slice) { - caml_minor_collection(); + CAMLassert (caml_young_ptr >= caml_young_alloc_start); + caml_young_limit = caml_young_trigger; + if (caml_requested_major_slice || caml_requested_minor_gc || + caml_young_ptr - caml_young_trigger < Max_young_whsize){ + caml_gc_dispatch (); } caml_process_pending_signals(); } diff --git a/asmrun/sparc.S b/asmrun/sparc.S index 7f24b4b42..cfb6f8e68 100644 --- a/asmrun/sparc.S +++ b/asmrun/sparc.S @@ -52,11 +52,12 @@ caml_allocN: retl nop -/* Required size in %g2 */ +/* Required size in %g2, Alloc_ptr is decremented by required size. */ caml_call_gc: + add Alloc_ptr, %g2, Alloc_ptr /* Save exception pointer if GC raises */ Store(Exn_ptr, caml_exception_pointer) - /* Save current allocation pointer for debugging purposes */ + /* Save current allocation pointer (the GC needs it) */ Store(Alloc_ptr, caml_young_ptr) /* Record lowest stack address */ Store(%sp, caml_bottom_of_stack) diff --git a/asmrun/startup.c b/asmrun/startup.c index 5cbd42cff..c9fa0575f 100644 --- a/asmrun/startup.c +++ b/asmrun/startup.c @@ -107,14 +107,17 @@ void caml_main(char **argv) caml_install_invalid_parameter_handler(); #endif caml_init_custom_operations(); -#ifdef DEBUG - caml_verb_gc = 63; -#endif caml_top_of_stack = &tos; +#ifdef DEBUG + caml_verb_gc = 0x3F; +#endif caml_parse_ocamlrunparam(); +#ifdef DEBUG + caml_gc_message (-1, "### OCaml runtime: debug mode ###\n", 0); +#endif caml_init_gc (caml_init_minor_heap_wsz, caml_init_heap_wsz, caml_init_heap_chunk_sz, caml_init_percent_free, - caml_init_max_percent_free); + caml_init_max_percent_free, caml_init_major_window); init_static(); caml_init_signals(); caml_init_backtrace(); diff --git a/asmrun/startup_aux.c b/asmrun/startup_aux.c new file mode 120000 index 000000000..7408b27cf --- /dev/null +++ b/asmrun/startup_aux.c @@ -0,0 +1 @@ +../byterun/startup_aux.c \ No newline at end of file diff --git a/byterun/.depend b/byterun/.depend index 8ffd2448c..37f3a5e60 100644 --- a/byterun/.depend +++ b/byterun/.depend @@ -1,748 +1,1004 @@ alloc.o: alloc.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/mlvalues.h caml/stacks.h caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h caml/stacks.h caml/memory.h array.o: array.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/mlvalues.h -backtrace.o: backtrace.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/mlvalues.h caml/config.h \ - caml/misc.h caml/alloc.h caml/mlvalues.h caml/custom.h caml/io.h \ - caml/instruct.h caml/intext.h caml/io.h caml/exec.h caml/fix_code.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/startup.h caml/exec.h caml/stacks.h \ - caml/memory.h caml/sys.h caml/backtrace.h caml/fail.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/signals.h +backtrace.o: backtrace.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/backtrace.h caml/exec.h \ + caml/backtrace_prim.h caml/backtrace.h caml/fail.h +backtrace_prim.o: backtrace_prim.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/alloc.h caml/mlvalues.h caml/custom.h \ + caml/io.h caml/instruct.h caml/intext.h caml/io.h caml/exec.h \ + caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/startup.h caml/exec.h \ + caml/stacks.h caml/memory.h caml/sys.h caml/backtrace.h caml/fail.h \ + caml/backtrace_prim.h caml/backtrace.h callback.o: callback.c caml/callback.h caml/compatibility.h \ - caml/mlvalues.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/fail.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h caml/interp.h caml/instruct.h caml/fix_code.h \ - caml/stacks.h caml/memory.h -compact.o: compact.c caml/address_class.h caml/misc.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/mlvalues.h caml/config.h caml/finalise.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/freelist.h caml/gc.h \ - caml/gc_ctrl.h caml/major_gc.h caml/memory.h caml/mlvalues.h \ - caml/roots.h caml/weak.h + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/interp.h caml/instruct.h caml/fix_code.h \ + caml/stacks.h caml/memory.h +compact.o: compact.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/config.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/mlvalues.h caml/roots.h caml/weak.h compare.o: compare.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ - caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/misc.h caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/mlvalues.h custom.o: custom.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h debugger.o: debugger.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/config.h caml/debugger.h caml/misc.h caml/fail.h \ - caml/fix_code.h caml/instruct.h caml/intext.h caml/io.h caml/io.h \ - caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/debugger.h caml/misc.h caml/fail.h \ + caml/fix_code.h caml/instruct.h caml/intext.h caml/io.h caml/io.h \ + caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h dynlink.o: dynlink.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/dynlink.h caml/fail.h caml/mlvalues.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/osdeps.h caml/prims.h \ - caml/signals.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/dynlink.h caml/fail.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h \ + caml/prims.h caml/signals.h extern.o: extern.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/gc.h caml/intext.h \ - caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/mlvalues.h caml/reverse.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/gc.h caml/intext.h \ + caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/reverse.h fail.o: fail.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/io.h caml/gc.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/misc.h caml/mlvalues.h caml/printexc.h caml/signals.h caml/stacks.h \ - caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/io.h caml/gc.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/printexc.h caml/signals.h \ + caml/stacks.h caml/memory.h finalise.o: finalise.c caml/callback.h caml/compatibility.h \ - caml/mlvalues.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/fail.h caml/mlvalues.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/signals.h + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/mlvalues.h \ + caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/signals.h fix_code.o: fix_code.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/debugger.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/fix_code.h caml/instruct.h \ - caml/intext.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/misc.h caml/mlvalues.h caml/reverse.h + caml/../../config/s.h caml/compatibility.h caml/debugger.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fix_code.h caml/instruct.h \ + caml/intext.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/reverse.h floats.o: floats.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ - caml/misc.h caml/reverse.h caml/stacks.h caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/misc.h caml/reverse.h caml/stacks.h caml/memory.h freelist.o: freelist.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/freelist.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/gc.h caml/gc_ctrl.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/major_gc.h caml/misc.h caml/mlvalues.h + caml/../../config/s.h caml/compatibility.h caml/freelist.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/gc.h caml/gc_ctrl.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/major_gc.h caml/misc.h caml/mlvalues.h gc_ctrl.o: gc_ctrl.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/compact.h caml/custom.h caml/finalise.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/freelist.h caml/gc.h \ - caml/gc_ctrl.h caml/major_gc.h caml/minor_gc.h caml/misc.h \ - caml/mlvalues.h caml/stacks.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/compact.h \ + caml/custom.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/minor_gc.h caml/misc.h \ + caml/mlvalues.h caml/signals.h caml/stacks.h caml/startup_aux.h globroots.o: globroots.c caml/memory.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/gc.h caml/mlvalues.h \ - caml/misc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/memory.h caml/globroots.h caml/roots.h + caml/../../config/m.h caml/../../config/s.h caml/gc.h caml/mlvalues.h \ + caml/misc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/globroots.h caml/roots.h hash.o: hash.c caml/mlvalues.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/custom.h \ - caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/hash.h + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/hash.h instrtrace.o: instrtrace.c intern.o: intern.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/callback.h caml/custom.h caml/fail.h caml/gc.h \ - caml/intext.h caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h caml/misc.h caml/reverse.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/custom.h caml/fail.h caml/gc.h \ + caml/intext.h caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/misc.h caml/reverse.h interp.o: interp.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/backtrace.h caml/exec.h caml/callback.h \ - caml/debugger.h caml/fail.h caml/fix_code.h caml/instrtrace.h \ - caml/instruct.h caml/interp.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/signals.h caml/stacks.h caml/memory.h caml/startup_aux.h \ - caml/jumptbl.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/fix_code.h caml/instrtrace.h \ + caml/instruct.h caml/interp.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/prims.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/startup_aux.h \ + caml/jumptbl.h ints.o: ints.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/intext.h caml/io.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/intext.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h io.o: io.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/io.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/signals.h \ - caml/sys.h + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/io.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/signals.h \ + caml/sys.h lexing.o: lexing.c caml/fail.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h main.o: main.c caml/misc.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/misc.h \ - caml/sys.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/misc.h \ + caml/sys.h major_gc.o: major_gc.c caml/compact.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/misc.h caml/custom.h \ - caml/mlvalues.h caml/config.h caml/fail.h caml/finalise.h caml/roots.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ - caml/major_gc.h caml/misc.h caml/mlvalues.h caml/roots.h caml/weak.h + caml/../../config/s.h caml/compatibility.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/misc.h caml/mlvalues.h caml/roots.h caml/weak.h md5.o: md5.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/md5.h caml/io.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ - caml/io.h caml/reverse.h -memory.o: memory.c caml/address_class.h caml/misc.h caml/compatibility.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ - caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/minor_gc.h caml/address_class.h caml/minor_gc.h caml/misc.h \ - caml/mlvalues.h caml/signals.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/md5.h caml/io.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/io.h caml/reverse.h +memory.o: memory.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/fail.h caml/freelist.h caml/gc.h \ + caml/gc_ctrl.h caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/minor_gc.h caml/address_class.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/signals.h meta.o: meta.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/config.h caml/fail.h caml/fix_code.h caml/interp.h \ - caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ - caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h caml/stacks.h \ - caml/memory.h -minor_gc.o: minor_gc.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/finalise.h caml/roots.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/gc.h caml/gc_ctrl.h caml/major_gc.h \ - caml/memory.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/signals.h caml/weak.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/fix_code.h caml/interp.h \ + caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h caml/stacks.h \ + caml/memory.h +minor_gc.o: minor_gc.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/config.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/gc.h caml/gc_ctrl.h caml/major_gc.h \ + caml/memory.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/signals.h caml/weak.h misc.o: misc.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/misc.h caml/config.h caml/memory.h caml/gc.h \ - caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h + caml/compatibility.h caml/misc.h caml/config.h caml/memory.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/version.h obj.o: obj.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/gc.h caml/interp.h caml/major_gc.h caml/freelist.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ - caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/gc.h caml/interp.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h parsing.o: parsing.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/mlvalues.h caml/config.h \ - caml/misc.h caml/memory.h caml/gc.h caml/mlvalues.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/alloc.h + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/alloc.h prims.o: prims.c caml/mlvalues.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/prims.h + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/prims.h printexc.o: printexc.c caml/backtrace.h caml/mlvalues.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/exec.h caml/callback.h \ - caml/debugger.h caml/fail.h caml/misc.h caml/mlvalues.h caml/printexc.h + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/misc.h caml/mlvalues.h caml/printexc.h roots.o: roots.c caml/finalise.h caml/roots.h caml/misc.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/memory.h caml/gc.h caml/mlvalues.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/globroots.h caml/major_gc.h caml/memory.h caml/minor_gc.h \ - caml/misc.h caml/mlvalues.h caml/roots.h caml/stacks.h -signals_byt.o: signals_byt.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/memory.h caml/config.h \ - caml/gc.h caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/osdeps.h caml/signals.h \ - caml/signals_machdep.h + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/globroots.h caml/major_gc.h caml/memory.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/roots.h caml/stacks.h signals.o: signals.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/callback.h caml/config.h caml/fail.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/memory.h caml/signals.h caml/signals_machdep.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/config.h caml/fail.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/signals.h caml/signals_machdep.h caml/sys.h +signals_byt.o: signals_byt.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/memory.h caml/config.h \ + caml/gc.h caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/osdeps.h caml/signals.h \ + caml/signals_machdep.h stacks.o: stacks.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/misc.h caml/mlvalues.h caml/stacks.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h -startup_aux.o: startup_aux.c caml/backtrace.h caml/mlvalues.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/exec.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/startup_aux.h + caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/misc.h caml/mlvalues.h caml/stacks.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h startup.o: startup.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ - caml/callback.h caml/custom.h caml/debugger.h caml/dynlink.h caml/exec.h \ - caml/fail.h caml/fix_code.h caml/freelist.h caml/gc_ctrl.h \ - caml/instrtrace.h caml/interp.h caml/intext.h caml/io.h caml/io.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/minor_gc.h caml/misc.h caml/mlvalues.h \ - caml/osdeps.h caml/prims.h caml/printexc.h caml/reverse.h caml/signals.h \ - caml/stacks.h caml/memory.h caml/sys.h caml/startup.h caml/startup_aux.h \ - caml/version.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ + caml/callback.h caml/custom.h caml/debugger.h caml/dynlink.h \ + caml/exec.h caml/fail.h caml/fix_code.h caml/freelist.h caml/gc_ctrl.h \ + caml/instrtrace.h caml/interp.h caml/intext.h caml/io.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/minor_gc.h caml/misc.h caml/mlvalues.h \ + caml/osdeps.h caml/prims.h caml/printexc.h caml/reverse.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/sys.h caml/startup.h \ + caml/startup_aux.h caml/version.h +startup_aux.o: startup_aux.c caml/backtrace.h caml/mlvalues.h \ + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/startup_aux.h str.o: str.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/mlvalues.h caml/misc.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/mlvalues.h caml/misc.h sys.o: sys.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ - caml/mlvalues.h caml/debugger.h caml/fail.h caml/instruct.h \ - caml/mlvalues.h caml/osdeps.h caml/signals.h caml/stacks.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/sys.h caml/gc_ctrl.h caml/io.h + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/debugger.h caml/fail.h caml/gc_ctrl.h \ + caml/instruct.h caml/io.h caml/misc.h caml/mlvalues.h caml/osdeps.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h terminfo.o: terminfo.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/fail.h caml/io.h caml/mlvalues.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fail.h caml/io.h caml/mlvalues.h unix.o: unix.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/memory.h caml/config.h caml/gc.h \ - caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h + caml/compatibility.h caml/memory.h caml/config.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h weak.o: weak.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/mlvalues.h -win32.o: win32.c caml/address_class.h caml/misc.h caml/compatibility.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/osdeps.h caml/signals.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h alloc.d.o: alloc.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/mlvalues.h caml/stacks.h caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h caml/stacks.h caml/memory.h array.d.o: array.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/mlvalues.h -backtrace.d.o: backtrace.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/mlvalues.h caml/config.h \ - caml/misc.h caml/alloc.h caml/mlvalues.h caml/custom.h caml/io.h \ - caml/instruct.h caml/intext.h caml/io.h caml/exec.h caml/fix_code.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/startup.h caml/exec.h caml/stacks.h \ - caml/memory.h caml/sys.h caml/backtrace.h caml/fail.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/signals.h +backtrace.d.o: backtrace.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/backtrace.h caml/exec.h \ + caml/backtrace_prim.h caml/backtrace.h caml/fail.h +backtrace_prim.d.o: backtrace_prim.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/alloc.h caml/mlvalues.h caml/custom.h \ + caml/io.h caml/instruct.h caml/intext.h caml/io.h caml/exec.h \ + caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/startup.h caml/exec.h \ + caml/stacks.h caml/memory.h caml/sys.h caml/backtrace.h caml/fail.h \ + caml/backtrace_prim.h caml/backtrace.h callback.d.o: callback.c caml/callback.h caml/compatibility.h \ - caml/mlvalues.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/fail.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h caml/interp.h caml/instruct.h caml/fix_code.h \ - caml/stacks.h caml/memory.h -compact.d.o: compact.c caml/address_class.h caml/misc.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/mlvalues.h caml/config.h caml/finalise.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/freelist.h caml/gc.h \ - caml/gc_ctrl.h caml/major_gc.h caml/memory.h caml/mlvalues.h \ - caml/roots.h caml/weak.h + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/interp.h caml/instruct.h caml/fix_code.h \ + caml/stacks.h caml/memory.h +compact.d.o: compact.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/config.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/mlvalues.h caml/roots.h caml/weak.h compare.d.o: compare.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ - caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/misc.h caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/mlvalues.h custom.d.o: custom.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h debugger.d.o: debugger.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/config.h caml/debugger.h caml/misc.h caml/fail.h \ - caml/fix_code.h caml/instruct.h caml/intext.h caml/io.h caml/io.h \ - caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/debugger.h caml/misc.h caml/fail.h \ + caml/fix_code.h caml/instruct.h caml/intext.h caml/io.h caml/io.h \ + caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h dynlink.d.o: dynlink.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/dynlink.h caml/fail.h caml/mlvalues.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/osdeps.h caml/prims.h \ - caml/signals.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/dynlink.h caml/fail.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h \ + caml/prims.h caml/signals.h extern.d.o: extern.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/gc.h caml/intext.h \ - caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/mlvalues.h caml/reverse.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/gc.h caml/intext.h \ + caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/reverse.h fail.d.o: fail.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/io.h caml/gc.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/misc.h caml/mlvalues.h caml/printexc.h caml/signals.h caml/stacks.h \ - caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/io.h caml/gc.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/printexc.h caml/signals.h \ + caml/stacks.h caml/memory.h finalise.d.o: finalise.c caml/callback.h caml/compatibility.h \ - caml/mlvalues.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/fail.h caml/mlvalues.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/signals.h + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/mlvalues.h \ + caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/signals.h fix_code.d.o: fix_code.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/debugger.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/fix_code.h caml/instruct.h \ - caml/intext.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/misc.h caml/mlvalues.h caml/reverse.h + caml/../../config/s.h caml/compatibility.h caml/debugger.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fix_code.h caml/instruct.h \ + caml/intext.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/reverse.h floats.d.o: floats.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ - caml/misc.h caml/reverse.h caml/stacks.h caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/misc.h caml/reverse.h caml/stacks.h caml/memory.h freelist.d.o: freelist.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/freelist.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/gc.h caml/gc_ctrl.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/major_gc.h caml/misc.h caml/mlvalues.h + caml/../../config/s.h caml/compatibility.h caml/freelist.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/gc.h caml/gc_ctrl.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/major_gc.h caml/misc.h caml/mlvalues.h gc_ctrl.d.o: gc_ctrl.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/compact.h caml/custom.h caml/finalise.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/freelist.h caml/gc.h \ - caml/gc_ctrl.h caml/major_gc.h caml/minor_gc.h caml/misc.h \ - caml/mlvalues.h caml/stacks.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/compact.h \ + caml/custom.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/minor_gc.h caml/misc.h \ + caml/mlvalues.h caml/signals.h caml/stacks.h caml/startup_aux.h globroots.d.o: globroots.c caml/memory.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/gc.h caml/mlvalues.h \ - caml/misc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/memory.h caml/globroots.h caml/roots.h + caml/../../config/m.h caml/../../config/s.h caml/gc.h caml/mlvalues.h \ + caml/misc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/globroots.h caml/roots.h hash.d.o: hash.c caml/mlvalues.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/custom.h \ - caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/hash.h -instrtrace.d.o: instrtrace.c caml/instruct.h caml/misc.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/mlvalues.h caml/misc.h caml/opnames.h \ - caml/prims.h caml/stacks.h caml/mlvalues.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/startup_aux.h + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/hash.h +instrtrace.d.o: instrtrace.c caml/instrtrace.h caml/mlvalues.h \ + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/instruct.h caml/misc.h \ + caml/mlvalues.h caml/opnames.h caml/prims.h caml/stacks.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/startup_aux.h intern.d.o: intern.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/callback.h caml/custom.h caml/fail.h caml/gc.h \ - caml/intext.h caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h caml/misc.h caml/reverse.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/custom.h caml/fail.h caml/gc.h \ + caml/intext.h caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/misc.h caml/reverse.h interp.d.o: interp.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/backtrace.h caml/exec.h caml/callback.h \ - caml/debugger.h caml/fail.h caml/fix_code.h caml/instrtrace.h \ - caml/instruct.h caml/interp.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/signals.h caml/stacks.h caml/memory.h caml/startup_aux.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/fix_code.h caml/instrtrace.h \ + caml/instruct.h caml/interp.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/prims.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/startup_aux.h ints.d.o: ints.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/intext.h caml/io.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/intext.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h io.d.o: io.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/io.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/signals.h \ - caml/sys.h + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/io.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/signals.h \ + caml/sys.h lexing.d.o: lexing.c caml/fail.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h main.d.o: main.c caml/misc.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/misc.h \ - caml/sys.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/misc.h \ + caml/sys.h major_gc.d.o: major_gc.c caml/compact.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/misc.h caml/custom.h \ - caml/mlvalues.h caml/config.h caml/fail.h caml/finalise.h caml/roots.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ - caml/major_gc.h caml/misc.h caml/mlvalues.h caml/roots.h caml/weak.h + caml/../../config/s.h caml/compatibility.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/misc.h caml/mlvalues.h caml/roots.h caml/weak.h md5.d.o: md5.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/md5.h caml/io.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ - caml/io.h caml/reverse.h -memory.d.o: memory.c caml/address_class.h caml/misc.h caml/compatibility.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ - caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/minor_gc.h caml/address_class.h caml/minor_gc.h caml/misc.h \ - caml/mlvalues.h caml/signals.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/md5.h caml/io.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/io.h caml/reverse.h +memory.d.o: memory.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/fail.h caml/freelist.h caml/gc.h \ + caml/gc_ctrl.h caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/minor_gc.h caml/address_class.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/signals.h meta.d.o: meta.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/config.h caml/fail.h caml/fix_code.h caml/interp.h \ - caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ - caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h caml/stacks.h \ - caml/memory.h -minor_gc.d.o: minor_gc.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/finalise.h caml/roots.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/gc.h caml/gc_ctrl.h caml/major_gc.h \ - caml/memory.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/signals.h caml/weak.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/fix_code.h caml/interp.h \ + caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h caml/stacks.h \ + caml/memory.h +minor_gc.d.o: minor_gc.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/config.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/gc.h caml/gc_ctrl.h caml/major_gc.h \ + caml/memory.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/signals.h caml/weak.h misc.d.o: misc.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/misc.h caml/config.h caml/memory.h caml/gc.h \ - caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h + caml/compatibility.h caml/misc.h caml/config.h caml/memory.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/version.h obj.d.o: obj.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/gc.h caml/interp.h caml/major_gc.h caml/freelist.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ - caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/gc.h caml/interp.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h parsing.d.o: parsing.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/mlvalues.h caml/config.h \ - caml/misc.h caml/memory.h caml/gc.h caml/mlvalues.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/alloc.h + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/alloc.h prims.d.o: prims.c caml/mlvalues.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/prims.h + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/prims.h printexc.d.o: printexc.c caml/backtrace.h caml/mlvalues.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/exec.h caml/callback.h \ - caml/debugger.h caml/fail.h caml/misc.h caml/mlvalues.h caml/printexc.h + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/misc.h caml/mlvalues.h caml/printexc.h roots.d.o: roots.c caml/finalise.h caml/roots.h caml/misc.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/memory.h caml/gc.h caml/mlvalues.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/globroots.h caml/major_gc.h caml/memory.h caml/minor_gc.h \ - caml/misc.h caml/mlvalues.h caml/roots.h caml/stacks.h -signals_byt.d.o: signals_byt.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/memory.h caml/config.h \ - caml/gc.h caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/osdeps.h caml/signals.h \ - caml/signals_machdep.h + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/globroots.h caml/major_gc.h caml/memory.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/roots.h caml/stacks.h signals.d.o: signals.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/callback.h caml/config.h caml/fail.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/memory.h caml/signals.h caml/signals_machdep.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/config.h caml/fail.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/signals.h caml/signals_machdep.h caml/sys.h +signals_byt.d.o: signals_byt.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/memory.h caml/config.h \ + caml/gc.h caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/osdeps.h caml/signals.h \ + caml/signals_machdep.h stacks.d.o: stacks.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/misc.h caml/mlvalues.h caml/stacks.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h -startup_aux.d.o: startup_aux.c caml/backtrace.h caml/mlvalues.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/exec.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/startup_aux.h + caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/misc.h caml/mlvalues.h caml/stacks.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h startup.d.o: startup.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ - caml/callback.h caml/custom.h caml/debugger.h caml/dynlink.h caml/exec.h \ - caml/fail.h caml/fix_code.h caml/freelist.h caml/gc_ctrl.h \ - caml/instrtrace.h caml/interp.h caml/intext.h caml/io.h caml/io.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/minor_gc.h caml/misc.h caml/mlvalues.h \ - caml/osdeps.h caml/prims.h caml/printexc.h caml/reverse.h caml/signals.h \ - caml/stacks.h caml/memory.h caml/sys.h caml/startup.h caml/startup_aux.h \ - caml/version.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ + caml/callback.h caml/custom.h caml/debugger.h caml/dynlink.h \ + caml/exec.h caml/fail.h caml/fix_code.h caml/freelist.h caml/gc_ctrl.h \ + caml/instrtrace.h caml/interp.h caml/intext.h caml/io.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/minor_gc.h caml/misc.h caml/mlvalues.h \ + caml/osdeps.h caml/prims.h caml/printexc.h caml/reverse.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/sys.h caml/startup.h \ + caml/startup_aux.h caml/version.h +startup_aux.d.o: startup_aux.c caml/backtrace.h caml/mlvalues.h \ + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/startup_aux.h str.d.o: str.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/mlvalues.h caml/misc.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/mlvalues.h caml/misc.h sys.d.o: sys.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ - caml/mlvalues.h caml/debugger.h caml/fail.h caml/instruct.h \ - caml/mlvalues.h caml/osdeps.h caml/signals.h caml/stacks.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/sys.h caml/gc_ctrl.h caml/io.h + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/debugger.h caml/fail.h caml/gc_ctrl.h \ + caml/instruct.h caml/io.h caml/misc.h caml/mlvalues.h caml/osdeps.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h terminfo.d.o: terminfo.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/fail.h caml/io.h caml/mlvalues.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fail.h caml/io.h caml/mlvalues.h unix.d.o: unix.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/memory.h caml/config.h caml/gc.h \ - caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h + caml/compatibility.h caml/memory.h caml/config.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h weak.d.o: weak.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/mlvalues.h -win32.d.o: win32.c caml/address_class.h caml/misc.h caml/compatibility.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/osdeps.h caml/signals.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h +alloc.i.o: alloc.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h caml/stacks.h caml/memory.h +array.i.o: array.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/signals.h +backtrace.i.o: backtrace.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/backtrace.h caml/exec.h \ + caml/backtrace_prim.h caml/backtrace.h caml/fail.h +backtrace_prim.i.o: backtrace_prim.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/alloc.h caml/mlvalues.h caml/custom.h \ + caml/io.h caml/instruct.h caml/intext.h caml/io.h caml/exec.h \ + caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/startup.h caml/exec.h \ + caml/stacks.h caml/memory.h caml/sys.h caml/backtrace.h caml/fail.h \ + caml/backtrace_prim.h caml/backtrace.h +callback.i.o: callback.c caml/callback.h caml/compatibility.h \ + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/interp.h caml/instruct.h caml/fix_code.h \ + caml/stacks.h caml/memory.h +compact.i.o: compact.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/config.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/mlvalues.h caml/roots.h caml/weak.h +compare.i.o: compare.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/mlvalues.h +custom.i.o: custom.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h +debugger.i.o: debugger.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/debugger.h caml/misc.h caml/fail.h \ + caml/fix_code.h caml/instruct.h caml/intext.h caml/io.h caml/io.h \ + caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h +dynlink.i.o: dynlink.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/dynlink.h caml/fail.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h \ + caml/prims.h caml/signals.h +extern.i.o: extern.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/gc.h caml/intext.h \ + caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/reverse.h +fail.i.o: fail.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/io.h caml/gc.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/printexc.h caml/signals.h \ + caml/stacks.h caml/memory.h +finalise.i.o: finalise.c caml/callback.h caml/compatibility.h \ + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/mlvalues.h \ + caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/signals.h +fix_code.i.o: fix_code.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/debugger.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fix_code.h caml/instruct.h \ + caml/intext.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/reverse.h +floats.i.o: floats.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/misc.h caml/reverse.h caml/stacks.h caml/memory.h +freelist.i.o: freelist.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/freelist.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/gc.h caml/gc_ctrl.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/major_gc.h caml/misc.h caml/mlvalues.h +gc_ctrl.i.o: gc_ctrl.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/compact.h \ + caml/custom.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/minor_gc.h caml/misc.h \ + caml/mlvalues.h caml/signals.h caml/stacks.h caml/startup_aux.h +globroots.i.o: globroots.c caml/memory.h caml/compatibility.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/gc.h caml/mlvalues.h \ + caml/misc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/globroots.h caml/roots.h +hash.i.o: hash.c caml/mlvalues.h caml/compatibility.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/hash.h +instrtrace.i.o: instrtrace.c +intern.i.o: intern.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/custom.h caml/fail.h caml/gc.h \ + caml/intext.h caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/misc.h caml/reverse.h +interp.i.o: interp.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/fix_code.h caml/instrtrace.h \ + caml/instruct.h caml/interp.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/prims.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/startup_aux.h \ + caml/jumptbl.h +ints.i.o: ints.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/intext.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h +io.i.o: io.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/io.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/signals.h \ + caml/sys.h +lexing.i.o: lexing.c caml/fail.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h +main.i.o: main.c caml/misc.h caml/compatibility.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/misc.h \ + caml/sys.h +major_gc.i.o: major_gc.c caml/compact.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/misc.h caml/mlvalues.h caml/roots.h caml/weak.h +md5.i.o: md5.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/md5.h caml/io.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/io.h caml/reverse.h +memory.i.o: memory.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/fail.h caml/freelist.h caml/gc.h \ + caml/gc_ctrl.h caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/minor_gc.h caml/address_class.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/signals.h +meta.i.o: meta.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/fix_code.h caml/interp.h \ + caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h caml/stacks.h \ + caml/memory.h +minor_gc.i.o: minor_gc.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/config.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/gc.h caml/gc_ctrl.h caml/major_gc.h \ + caml/memory.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/signals.h caml/weak.h +misc.i.o: misc.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/compatibility.h caml/misc.h caml/config.h caml/memory.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/version.h +obj.i.o: obj.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/gc.h caml/interp.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h +parsing.i.o: parsing.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/alloc.h +prims.i.o: prims.c caml/mlvalues.h caml/compatibility.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/prims.h +printexc.i.o: printexc.c caml/backtrace.h caml/mlvalues.h \ + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/misc.h caml/mlvalues.h caml/printexc.h +roots.i.o: roots.c caml/finalise.h caml/roots.h caml/misc.h \ + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/globroots.h caml/major_gc.h caml/memory.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/roots.h caml/stacks.h +signals.i.o: signals.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/config.h caml/fail.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/signals.h caml/signals_machdep.h caml/sys.h +signals_byt.i.o: signals_byt.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/memory.h caml/config.h \ + caml/gc.h caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/osdeps.h caml/signals.h \ + caml/signals_machdep.h +stacks.i.o: stacks.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/misc.h caml/mlvalues.h caml/stacks.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h +startup.i.o: startup.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ + caml/callback.h caml/custom.h caml/debugger.h caml/dynlink.h \ + caml/exec.h caml/fail.h caml/fix_code.h caml/freelist.h caml/gc_ctrl.h \ + caml/instrtrace.h caml/interp.h caml/intext.h caml/io.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/minor_gc.h caml/misc.h caml/mlvalues.h \ + caml/osdeps.h caml/prims.h caml/printexc.h caml/reverse.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/sys.h caml/startup.h \ + caml/startup_aux.h caml/version.h +startup_aux.i.o: startup_aux.c caml/backtrace.h caml/mlvalues.h \ + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/startup_aux.h +str.i.o: str.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/mlvalues.h caml/misc.h +sys.i.o: sys.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/debugger.h caml/fail.h caml/gc_ctrl.h \ + caml/instruct.h caml/io.h caml/misc.h caml/mlvalues.h caml/osdeps.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h +terminfo.i.o: terminfo.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fail.h caml/io.h caml/mlvalues.h +unix.i.o: unix.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/compatibility.h caml/memory.h caml/config.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h +weak.i.o: weak.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h alloc.pic.o: alloc.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/mlvalues.h caml/stacks.h caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h caml/stacks.h caml/memory.h array.pic.o: array.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/mlvalues.h -backtrace.pic.o: backtrace.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/mlvalues.h caml/config.h \ - caml/misc.h caml/alloc.h caml/mlvalues.h caml/custom.h caml/io.h \ - caml/instruct.h caml/intext.h caml/io.h caml/exec.h caml/fix_code.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/startup.h caml/exec.h caml/stacks.h \ - caml/memory.h caml/sys.h caml/backtrace.h caml/fail.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/signals.h +backtrace.pic.o: backtrace.c caml/alloc.h caml/compatibility.h caml/misc.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/backtrace.h caml/exec.h \ + caml/backtrace_prim.h caml/backtrace.h caml/fail.h +backtrace_prim.pic.o: backtrace_prim.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/alloc.h caml/mlvalues.h caml/custom.h \ + caml/io.h caml/instruct.h caml/intext.h caml/io.h caml/exec.h \ + caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/startup.h caml/exec.h \ + caml/stacks.h caml/memory.h caml/sys.h caml/backtrace.h caml/fail.h \ + caml/backtrace_prim.h caml/backtrace.h callback.pic.o: callback.c caml/callback.h caml/compatibility.h \ - caml/mlvalues.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/fail.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h caml/interp.h caml/instruct.h caml/fix_code.h \ - caml/stacks.h caml/memory.h -compact.pic.o: compact.c caml/address_class.h caml/misc.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/mlvalues.h caml/config.h caml/finalise.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/freelist.h caml/gc.h \ - caml/gc_ctrl.h caml/major_gc.h caml/memory.h caml/mlvalues.h \ - caml/roots.h caml/weak.h + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/interp.h caml/instruct.h caml/fix_code.h \ + caml/stacks.h caml/memory.h +compact.pic.o: compact.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/config.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/mlvalues.h caml/roots.h caml/weak.h compare.pic.o: compare.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ - caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/misc.h caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/mlvalues.h custom.pic.o: custom.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h debugger.pic.o: debugger.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/config.h caml/debugger.h caml/misc.h caml/fail.h \ - caml/fix_code.h caml/instruct.h caml/intext.h caml/io.h caml/io.h \ - caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/debugger.h caml/misc.h caml/fail.h \ + caml/fix_code.h caml/instruct.h caml/intext.h caml/io.h caml/io.h \ + caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h dynlink.pic.o: dynlink.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/dynlink.h caml/fail.h caml/mlvalues.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/osdeps.h caml/prims.h \ - caml/signals.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/dynlink.h caml/fail.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h \ + caml/prims.h caml/signals.h extern.pic.o: extern.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/gc.h caml/intext.h \ - caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/mlvalues.h caml/reverse.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/gc.h caml/intext.h \ + caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ + caml/mlvalues.h caml/reverse.h fail.pic.o: fail.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/io.h caml/gc.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/misc.h caml/mlvalues.h caml/printexc.h caml/signals.h caml/stacks.h \ - caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/io.h caml/gc.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/printexc.h caml/signals.h \ + caml/stacks.h caml/memory.h finalise.pic.o: finalise.c caml/callback.h caml/compatibility.h \ - caml/mlvalues.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/fail.h caml/mlvalues.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/signals.h + caml/mlvalues.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/fail.h caml/mlvalues.h \ + caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/signals.h fix_code.pic.o: fix_code.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/debugger.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/fix_code.h caml/instruct.h \ - caml/intext.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/misc.h caml/mlvalues.h caml/reverse.h + caml/../../config/s.h caml/compatibility.h caml/debugger.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fix_code.h caml/instruct.h \ + caml/intext.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/misc.h caml/mlvalues.h caml/reverse.h floats.pic.o: floats.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ - caml/misc.h caml/reverse.h caml/stacks.h caml/memory.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/misc.h caml/reverse.h caml/stacks.h caml/memory.h freelist.pic.o: freelist.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/freelist.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/gc.h caml/gc_ctrl.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/major_gc.h caml/misc.h caml/mlvalues.h + caml/../../config/s.h caml/compatibility.h caml/freelist.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/gc.h caml/gc_ctrl.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/major_gc.h caml/misc.h caml/mlvalues.h gc_ctrl.pic.o: gc_ctrl.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/compact.h caml/custom.h caml/finalise.h \ - caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/freelist.h caml/gc.h \ - caml/gc_ctrl.h caml/major_gc.h caml/minor_gc.h caml/misc.h \ - caml/mlvalues.h caml/stacks.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/compact.h \ + caml/custom.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/memory.h caml/minor_gc.h caml/misc.h \ + caml/mlvalues.h caml/signals.h caml/stacks.h caml/startup_aux.h globroots.pic.o: globroots.c caml/memory.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/gc.h caml/mlvalues.h \ - caml/misc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/memory.h caml/globroots.h caml/roots.h + caml/../../config/m.h caml/../../config/s.h caml/gc.h caml/mlvalues.h \ + caml/misc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/globroots.h caml/roots.h hash.pic.o: hash.c caml/mlvalues.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/custom.h \ - caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/hash.h + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/hash.h instrtrace.pic.o: instrtrace.c intern.pic.o: intern.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/callback.h caml/custom.h caml/fail.h caml/gc.h \ - caml/intext.h caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/mlvalues.h caml/misc.h caml/reverse.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/custom.h caml/fail.h caml/gc.h \ + caml/intext.h caml/io.h caml/io.h caml/md5.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/mlvalues.h caml/misc.h caml/reverse.h interp.pic.o: interp.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/backtrace.h caml/exec.h caml/callback.h \ - caml/debugger.h caml/fail.h caml/fix_code.h caml/instrtrace.h \ - caml/instruct.h caml/interp.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/signals.h caml/stacks.h caml/memory.h caml/startup_aux.h \ - caml/jumptbl.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/backtrace.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/fix_code.h caml/instrtrace.h \ + caml/instruct.h caml/interp.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/prims.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/startup_aux.h \ + caml/jumptbl.h ints.pic.o: ints.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/intext.h caml/io.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/intext.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h io.pic.o: io.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ - caml/mlvalues.h caml/custom.h caml/fail.h caml/io.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/signals.h \ - caml/sys.h + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/custom.h caml/fail.h caml/io.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/signals.h \ + caml/sys.h lexing.pic.o: lexing.c caml/fail.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/mlvalues.h caml/stacks.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h main.pic.o: main.c caml/misc.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/misc.h \ - caml/sys.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/misc.h \ + caml/sys.h major_gc.pic.o: major_gc.c caml/compact.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/misc.h caml/custom.h \ - caml/mlvalues.h caml/config.h caml/fail.h caml/finalise.h caml/roots.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ - caml/major_gc.h caml/misc.h caml/mlvalues.h caml/roots.h caml/weak.h + caml/../../config/s.h caml/compatibility.h caml/misc.h caml/custom.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/finalise.h caml/roots.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ + caml/major_gc.h caml/misc.h caml/mlvalues.h caml/roots.h caml/weak.h md5.pic.o: md5.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/md5.h caml/io.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ - caml/io.h caml/reverse.h -memory.pic.o: memory.c caml/address_class.h caml/misc.h caml/compatibility.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/freelist.h caml/gc.h caml/gc_ctrl.h \ - caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/minor_gc.h caml/address_class.h caml/minor_gc.h caml/misc.h \ - caml/mlvalues.h caml/signals.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/md5.h caml/io.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/mlvalues.h \ + caml/io.h caml/reverse.h +memory.pic.o: memory.c caml/address_class.h caml/config.h \ + caml/../../config/m.h caml/../../config/s.h caml/compatibility.h \ + caml/misc.h caml/mlvalues.h caml/fail.h caml/freelist.h caml/gc.h \ + caml/gc_ctrl.h caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/minor_gc.h caml/address_class.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/signals.h meta.pic.o: meta.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/config.h caml/fail.h caml/fix_code.h caml/interp.h \ - caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ - caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h caml/stacks.h \ - caml/memory.h -minor_gc.pic.o: minor_gc.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/finalise.h caml/roots.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/gc.h caml/gc_ctrl.h caml/major_gc.h \ - caml/memory.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/signals.h caml/weak.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/config.h caml/fail.h caml/fix_code.h caml/interp.h \ + caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h caml/stacks.h \ + caml/memory.h +minor_gc.pic.o: minor_gc.c caml/custom.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/../../config/m.h caml/../../config/s.h caml/misc.h \ + caml/config.h caml/fail.h caml/finalise.h caml/roots.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/gc.h caml/gc_ctrl.h caml/major_gc.h \ + caml/memory.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/signals.h caml/weak.h misc.pic.o: misc.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/misc.h caml/config.h caml/memory.h caml/gc.h \ - caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h + caml/compatibility.h caml/misc.h caml/config.h caml/memory.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/version.h obj.pic.o: obj.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/gc.h caml/interp.h caml/major_gc.h caml/freelist.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ - caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/gc.h caml/interp.h caml/major_gc.h caml/freelist.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ + caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h parsing.pic.o: parsing.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/mlvalues.h caml/config.h \ - caml/misc.h caml/memory.h caml/gc.h caml/mlvalues.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/alloc.h + caml/../../config/s.h caml/compatibility.h caml/mlvalues.h \ + caml/config.h caml/misc.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/alloc.h prims.pic.o: prims.c caml/mlvalues.h caml/compatibility.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/prims.h + caml/../../config/m.h caml/../../config/s.h caml/misc.h caml/prims.h printexc.pic.o: printexc.c caml/backtrace.h caml/mlvalues.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/exec.h caml/callback.h \ - caml/debugger.h caml/fail.h caml/misc.h caml/mlvalues.h caml/printexc.h + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/callback.h \ + caml/debugger.h caml/fail.h caml/misc.h caml/mlvalues.h caml/printexc.h roots.pic.o: roots.c caml/finalise.h caml/roots.h caml/misc.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/memory.h caml/gc.h caml/mlvalues.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/globroots.h caml/major_gc.h caml/memory.h caml/minor_gc.h \ - caml/misc.h caml/mlvalues.h caml/roots.h caml/stacks.h -signals_byt.pic.o: signals_byt.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/memory.h caml/config.h \ - caml/gc.h caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/osdeps.h caml/signals.h \ - caml/signals_machdep.h + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/memory.h caml/gc.h caml/mlvalues.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/globroots.h caml/major_gc.h caml/memory.h caml/minor_gc.h \ + caml/misc.h caml/mlvalues.h caml/roots.h caml/stacks.h signals.pic.o: signals.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/callback.h caml/config.h caml/fail.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ - caml/memory.h caml/signals.h caml/signals_machdep.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/callback.h caml/config.h caml/fail.h caml/memory.h \ + caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/misc.h caml/mlvalues.h caml/roots.h \ + caml/memory.h caml/signals.h caml/signals_machdep.h caml/sys.h +signals_byt.pic.o: signals_byt.c caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/compatibility.h caml/memory.h caml/config.h \ + caml/gc.h caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/osdeps.h caml/signals.h \ + caml/signals_machdep.h stacks.pic.o: stacks.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/misc.h caml/mlvalues.h caml/stacks.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h -startup_aux.pic.o: startup_aux.c caml/backtrace.h caml/mlvalues.h \ - caml/compatibility.h caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/misc.h caml/exec.h caml/memory.h caml/gc.h \ - caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ - caml/startup_aux.h + caml/../../config/s.h caml/compatibility.h caml/fail.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/misc.h caml/mlvalues.h caml/stacks.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h startup.pic.o: startup.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ - caml/callback.h caml/custom.h caml/debugger.h caml/dynlink.h caml/exec.h \ - caml/fail.h caml/fix_code.h caml/freelist.h caml/gc_ctrl.h \ - caml/instrtrace.h caml/interp.h caml/intext.h caml/io.h caml/io.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/minor_gc.h caml/misc.h caml/mlvalues.h \ - caml/osdeps.h caml/prims.h caml/printexc.h caml/reverse.h caml/signals.h \ - caml/stacks.h caml/memory.h caml/sys.h caml/startup.h caml/startup_aux.h \ - caml/version.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ + caml/callback.h caml/custom.h caml/debugger.h caml/dynlink.h \ + caml/exec.h caml/fail.h caml/fix_code.h caml/freelist.h caml/gc_ctrl.h \ + caml/instrtrace.h caml/interp.h caml/intext.h caml/io.h caml/io.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ + caml/address_class.h caml/minor_gc.h caml/misc.h caml/mlvalues.h \ + caml/osdeps.h caml/prims.h caml/printexc.h caml/reverse.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/sys.h caml/startup.h \ + caml/startup_aux.h caml/version.h +startup_aux.pic.o: startup_aux.c caml/backtrace.h caml/mlvalues.h \ + caml/compatibility.h caml/config.h caml/../../config/m.h \ + caml/../../config/s.h caml/misc.h caml/exec.h caml/memory.h caml/gc.h \ + caml/major_gc.h caml/freelist.h caml/minor_gc.h caml/address_class.h \ + caml/startup_aux.h str.pic.o: str.c caml/alloc.h caml/compatibility.h caml/misc.h caml/config.h \ - caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ - caml/mlvalues.h caml/misc.h + caml/../../config/m.h caml/../../config/s.h caml/mlvalues.h caml/fail.h \ + caml/mlvalues.h caml/misc.h sys.pic.o: sys.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ - caml/mlvalues.h caml/debugger.h caml/fail.h caml/instruct.h \ - caml/mlvalues.h caml/osdeps.h caml/signals.h caml/stacks.h caml/memory.h \ - caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \ - caml/address_class.h caml/sys.h caml/gc_ctrl.h caml/io.h + caml/compatibility.h caml/alloc.h caml/misc.h caml/config.h \ + caml/mlvalues.h caml/debugger.h caml/fail.h caml/gc_ctrl.h \ + caml/instruct.h caml/io.h caml/misc.h caml/mlvalues.h caml/osdeps.h \ + caml/signals.h caml/stacks.h caml/memory.h caml/gc.h caml/major_gc.h \ + caml/freelist.h caml/minor_gc.h caml/address_class.h caml/sys.h terminfo.pic.o: terminfo.c caml/config.h caml/../../config/m.h \ - caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ - caml/config.h caml/mlvalues.h caml/fail.h caml/io.h caml/mlvalues.h + caml/../../config/s.h caml/compatibility.h caml/alloc.h caml/misc.h \ + caml/config.h caml/mlvalues.h caml/fail.h caml/io.h caml/mlvalues.h unix.pic.o: unix.c caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/compatibility.h caml/memory.h caml/config.h caml/gc.h \ - caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ - caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h + caml/compatibility.h caml/memory.h caml/config.h caml/gc.h \ + caml/mlvalues.h caml/misc.h caml/major_gc.h caml/freelist.h \ + caml/minor_gc.h caml/address_class.h caml/misc.h caml/osdeps.h weak.pic.o: weak.c caml/alloc.h caml/compatibility.h caml/misc.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/major_gc.h caml/freelist.h \ - caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ - caml/address_class.h caml/mlvalues.h -win32.pic.o: win32.c caml/address_class.h caml/misc.h caml/compatibility.h \ - caml/config.h caml/../../config/m.h caml/../../config/s.h \ - caml/mlvalues.h caml/fail.h caml/memory.h caml/gc.h caml/major_gc.h \ - caml/freelist.h caml/minor_gc.h caml/address_class.h caml/misc.h \ - caml/osdeps.h caml/signals.h caml/sys.h + caml/config.h caml/../../config/m.h caml/../../config/s.h \ + caml/mlvalues.h caml/fail.h caml/major_gc.h caml/freelist.h \ + caml/memory.h caml/gc.h caml/major_gc.h caml/minor_gc.h \ + caml/address_class.h caml/mlvalues.h diff --git a/byterun/Makefile b/byterun/Makefile index d24902b28..ff3d4e6f8 100644 --- a/byterun/Makefile +++ b/byterun/Makefile @@ -15,9 +15,11 @@ include Makefile.common CFLAGS=-DCAML_NAME_SPACE $(BYTECCCOMPOPTS) $(IFLEXDIR) DFLAGS=-DCAML_NAME_SPACE -g -DDEBUG $(BYTECCCOMPOPTS) $(IFLEXDIR) +IFLAGS=$(CFLAGS) -DCAML_INSTR OBJS=$(COMMONOBJS) $(UNIX_OR_WIN32).o main.o DOBJS=$(OBJS:.o=.d.o) instrtrace.d.o +IOBJS=$(OBJS:.o=.i.o) PICOBJS=$(OBJS:.o=.pic.o) all:: all-$(SHARED) @@ -30,6 +32,9 @@ ocamlrund$(EXE): libcamlrund.a prims.o $(MKEXE) $(MKEXEDEBUGFLAG) $(BYTECCLINKOPTS) -o ocamlrund$(EXE) \ prims.o libcamlrund.a $(BYTECCLIBS) +ocamlruni$(EXE): prims.o libcamlruni.a + $(MKEXE) $(BYTECCLINKOPTS) -o $@ $^ $(BYTECCLIBS) + libcamlrun.a: $(OBJS) $(ARCMD) rc libcamlrun.a $(OBJS) $(RANLIB) libcamlrun.a @@ -38,6 +43,10 @@ libcamlrund.a: $(DOBJS) $(ARCMD) rc libcamlrund.a $(DOBJS) $(RANLIB) libcamlrund.a +libcamlruni.a: $(IOBJS) + $(ARCMD) rc $@ $^ + $(RANLIB) $@ + all-noshared: .PHONY: all-noshared @@ -68,12 +77,18 @@ clean:: %.d.o: %.c $(CC) -c $(DFLAGS) $< -o $@ +%.i.o: %.c + $(CC) -c $(IFLAGS) -o $@ $< + %.pic.o: %.c $(CC) -c $(CFLAGS) $(SHAREDCCCOMPOPTS) $< -o $@ depend : prims.c caml/opnames.h caml/jumptbl.h caml/version.h -$(CC) -MM $(BYTECCCOMPOPTS) *.c > .depend - -$(CC) -MM $(BYTECCCOMPOPTS) -DDEBUG *.c | sed -e 's/\.o/.d.o/' >> .depend + -$(CC) -MM $(BYTECCCOMPOPTS) -DDEBUG *.c | sed -e 's/\.o/.d.o/' \ + >> .depend + -$(CC) -MM $(BYTECCCOMPOPTS) -DCAML_INSTR *.c | sed -e 's/\.o/.i.o/' \ + >> .depend -$(CC) -MM $(BYTECCCOMPOPTS) *.c | sed -e 's/\.o/.pic.o/' >> .depend .PHONY: depend diff --git a/byterun/Makefile.common b/byterun/Makefile.common index 7aef44a50..6e5109f81 100644 --- a/byterun/Makefile.common +++ b/byterun/Makefile.common @@ -48,6 +48,10 @@ all-noruntimed: all-runtimed: ocamlrund$(EXE) libcamlrund.$(A) .PHONY: all-runtimed +ifeq "$(RUNTIMEI)" "true" +all:: ocamlruni$(EXE) libcamlruni.$(A) +endif + ld.conf: ../config/Makefile echo "$(STUBLIBDIR)" > ld.conf echo "$(LIBDIR)" >> ld.conf @@ -84,6 +88,12 @@ install-runtimed: cp libcamlrund.$(A) $(INSTALL_LIBDIR)/libcamlrund.$(A) .PHONY: install-runtimed +ifeq "$(RUNTIMEI)" "true" +install:: + cp ocamlruni$(EXE) $(INSTALL_BINDIR)/ocamlruni$(EXE) + cp libcamlruni.$(A) $(INSTALL_LIBDIR)/libcamlruni.$(A) +endif + # If primitives contain duplicated lines (e.g. because the code is defined # like # #ifdef X diff --git a/byterun/array.c b/byterun/array.c index 5dffc53bf..5977e66f7 100644 --- a/byterun/array.c +++ b/byterun/array.c @@ -18,6 +18,7 @@ #include "caml/memory.h" #include "caml/misc.h" #include "caml/mlvalues.h" +#include "caml/signals.h" /* returns number of elements (either fields or floats) */ CAMLexport mlsize_t caml_array_length(value array) @@ -181,12 +182,14 @@ CAMLprim value caml_make_vect(value len, value init) } } else { if (size > Max_wosize) caml_invalid_argument("Array.make"); - if (size < Max_young_wosize) { + if (size <= Max_young_wosize) { res = caml_alloc_small(size, 0); for (i = 0; i < size; i++) Field(res, i) = init; } else if (Is_block(init) && Is_young(init)) { - caml_minor_collection(); + CAML_INSTR_INT ("force_minor/make_vect@", 1); + caml_request_minor_gc (); + caml_gc_dispatch (); res = caml_alloc_shr(size, 0); for (i = 0; i < size; i++) Field(res, i) = init; res = caml_check_urgent_gc (res); @@ -324,7 +327,7 @@ static value caml_array_gather(intnat num_arrays, /* Array of values, too big. */ caml_invalid_argument("Array.concat"); } - else if (size < Max_young_wosize) { + else if (size <= Max_young_wosize) { /* Array of values, small enough to fit in young generation. We can use memcpy directly. */ res = caml_alloc_small(size, 0); diff --git a/byterun/caml/address_class.h b/byterun/caml/address_class.h index 2cf6c048a..c6ff8896d 100644 --- a/byterun/caml/address_class.h +++ b/byterun/caml/address_class.h @@ -16,12 +16,18 @@ #ifndef CAML_ADDRESS_CLASS_H #define CAML_ADDRESS_CLASS_H +#include "config.h" #include "misc.h" #include "mlvalues.h" /* Use the following macros to test an address for the different classes it might belong to. */ +#define Is_in_heap(a) (Classify_addr(a) & In_heap) +#define Is_in_heap_or_young(a) (Classify_addr(a) & (In_heap | In_young)) +#define Is_in_value_area(a) \ + (Classify_addr(a) & (In_heap | In_young | In_static_data)) + #define Is_young(val) \ (Assert (Is_block (val)), \ (addr)(val) < (addr)caml_young_end && (addr)(val) > (addr)caml_young_start) diff --git a/byterun/caml/config.h b/byterun/caml/config.h index 490f38ac2..9b94917fa 100644 --- a/byterun/caml/config.h +++ b/byterun/caml/config.h @@ -143,10 +143,11 @@ typedef uint64_t uintnat; /* Maximum size of a block allocated in the young generation (words). */ /* Must be > 4 */ #define Max_young_wosize 256 +#define Max_young_whsize (Whsize_wosize (Max_young_wosize)) /* Minimum size of the minor zone (words). - This must be at least [Max_young_wosize + 1]. */ + This must be at least [2 * Max_young_whsize]. */ #define Minor_heap_min 4096 /* Maximum size of the minor zone (words). @@ -185,5 +186,12 @@ typedef uint64_t uintnat; */ #define Max_percent_free_def 500 +/* Default setting for the major GC slice smoothing window: 1 + (i.e. no smoothing) +*/ +#define Major_window_def 1 + +/* Maximum size of the major GC slice smoothing window. */ +#define Max_major_window 50 #endif /* CAML_CONFIG_H */ diff --git a/byterun/caml/gc_ctrl.h b/byterun/caml/gc_ctrl.h index 459c685a2..576182517 100644 --- a/byterun/caml/gc_ctrl.h +++ b/byterun/caml/gc_ctrl.h @@ -32,7 +32,7 @@ extern intnat uintnat caml_normalize_heap_increment (uintnat); void caml_init_gc (uintnat, uintnat, uintnat, - uintnat, uintnat); + uintnat, uintnat, uintnat); #ifdef DEBUG diff --git a/byterun/caml/instrtrace.h b/byterun/caml/instrtrace.h index 302016081..4a4ba108c 100644 --- a/byterun/caml/instrtrace.h +++ b/byterun/caml/instrtrace.h @@ -20,7 +20,6 @@ #include "mlvalues.h" #include "misc.h" -extern int caml_trace_flag; extern intnat caml_icount; void caml_stop_here (void); void caml_disasm_instr (code_t pc); diff --git a/byterun/caml/major_gc.h b/byterun/caml/major_gc.h index 047f16a4e..53027a7b2 100644 --- a/byterun/caml/major_gc.h +++ b/byterun/caml/major_gc.h @@ -40,21 +40,29 @@ extern uintnat caml_fl_wsz_at_phase_change; #define Phase_mark 0 #define Phase_sweep 1 #define Phase_idle 2 -#define Subphase_main 10 -#define Subphase_weak1 11 -#define Subphase_weak2 12 -#define Subphase_final 13 +#define Subphase_roots 10 +#define Subphase_main 11 +#define Subphase_weak1 12 +#define Subphase_weak2 13 +#define Subphase_final 14 CAMLextern char *caml_heap_start; extern uintnat total_heap_size; extern char *caml_gc_sweep_hp; +extern int caml_major_window; +double caml_major_ring[Max_major_window]; +int caml_major_ring_index; +double caml_major_work_credit; +extern double caml_gc_clock; + void caml_init_major_heap (asize_t); /* size in bytes */ -asize_t caml_round_heap_chunk_wsz (asize_t); +asize_t caml_clip_heap_chunk_wsz (asize_t wsz); void caml_darken (value, value *); -intnat caml_major_collection_slice (intnat); +void caml_major_collection_slice (intnat); void major_collection (void); void caml_finish_major_cycle (void); +void caml_set_major_window (int); #endif /* CAML_MAJOR_GC_H */ diff --git a/byterun/caml/memory.h b/byterun/caml/memory.h index 419c5356a..dcf4b449e 100644 --- a/byterun/caml/memory.h +++ b/byterun/caml/memory.h @@ -44,15 +44,32 @@ CAMLextern value caml_check_urgent_gc (value); CAMLextern void * caml_stat_alloc (asize_t); /* Size in bytes. */ CAMLextern void caml_stat_free (void *); CAMLextern void * caml_stat_resize (void *, asize_t); /* Size in bytes. */ -char *caml_alloc_for_heap (asize_t request); /* Size in bytes. */ -void caml_free_for_heap (char *mem); -int caml_add_to_heap (char *mem); -color_t caml_allocation_color (void *hp); +CAMLextern int caml_init_alloc_for_heap (void); +CAMLextern char *caml_alloc_for_heap (asize_t request); /* Size in bytes. */ +CAMLextern void caml_free_for_heap (char *mem); +CAMLextern int caml_add_to_heap (char *mem); +CAMLextern color_t caml_allocation_color (void *hp); + +CAMLextern int caml_huge_fallback_count; /* void caml_shrink_heap (char *); Only used in compact.c */ /* */ +extern uintnat caml_use_huge_pages; + +#ifdef HAS_HUGE_PAGES +#include +#define Heap_page_size HUGE_PAGE_SIZE +#define Round_mmap_size(x) \ + (((x) + (Heap_page_size - 1)) & ~ (Heap_page_size - 1)) +#endif + + +int caml_page_table_add(int kind, void * start, void * end); +int caml_page_table_remove(int kind, void * start, void * end); +int caml_page_table_initialize(mlsize_t bytesize); + #ifdef DEBUG #define DEBUG_clear(result, wosize) do{ \ uintnat caml__DEBUG_i; \ @@ -68,10 +85,11 @@ color_t caml_allocation_color (void *hp); CAMLassert ((tag_t) (tag) < 256); \ CAMLassert ((wosize) <= Max_young_wosize); \ caml_young_ptr -= Whsize_wosize (wosize); \ - if (caml_young_ptr < caml_young_start){ \ + if (caml_young_ptr < caml_young_trigger){ \ caml_young_ptr += Whsize_wosize (wosize); \ + CAML_INSTR_INT ("force_minor/alloc_small@", 1); \ Setup_for_gc; \ - caml_minor_collection (); \ + caml_gc_dispatch (); \ Restore_after_gc; \ caml_young_ptr -= Whsize_wosize (wosize); \ } \ diff --git a/byterun/caml/minor_gc.h b/byterun/caml/minor_gc.h index 281e0b5e5..b6feccbf6 100644 --- a/byterun/caml/minor_gc.h +++ b/byterun/caml/minor_gc.h @@ -17,8 +17,10 @@ #include "address_class.h" -CAMLextern value *caml_young_start, *caml_young_ptr; -CAMLextern value *caml_young_end, *caml_young_limit; +CAMLextern value *caml_young_start, *caml_young_end; +CAMLextern value *caml_young_alloc_start, *caml_young_alloc_end; +CAMLextern value *caml_young_ptr, *caml_young_limit; +CAMLextern value *caml_young_trigger; extern asize_t caml_minor_heap_wsz; extern int caml_in_minor_collection; @@ -34,9 +36,18 @@ struct caml_ref_table { CAMLextern struct caml_ref_table caml_ref_table, caml_weak_ref_table, caml_finalize_table; +#define Add_to_ref_table(tbl, p) \ + do { \ + if ((tbl).ptr >= (tbl).limit){ \ + Assert ((tbl).ptr == (tbl).limit); \ + caml_realloc_ref_table (&(tbl)); \ + } \ + *(tbl).ptr++ = (p); \ + } while(0) + extern void caml_set_minor_heap_size (asize_t); /* size in bytes */ extern void caml_empty_minor_heap (void); -CAMLextern void caml_minor_collection (void); +CAMLextern void caml_gc_dispatch (void); CAMLextern void garbage_collection (void); /* def in asmrun/signals_asm.c */ extern void caml_realloc_ref_table (struct caml_ref_table *); extern void caml_alloc_table (struct caml_ref_table *, asize_t, asize_t); diff --git a/byterun/caml/misc.h b/byterun/caml/misc.h index 13a0e4981..18c2c30e9 100644 --- a/byterun/caml/misc.h +++ b/byterun/caml/misc.h @@ -201,6 +201,104 @@ extern int caml_snprintf(char * buf, size_t size, const char * format, ...); #define snprintf caml_snprintf #endif +#ifdef CAML_INSTR +/* Timers and counters for GC latency profiling (Linux-only) */ + +#include +#include + +extern intnat caml_stat_minor_collections; +extern intnat CAML_INSTR_STARTTIME, CAML_INSTR_STOPTIME; + +struct CAML_INSTR_BLOCK { + struct timespec ts[10]; + char *tag[10]; + int index; + struct CAML_INSTR_BLOCK *next; +}; + +extern struct CAML_INSTR_BLOCK *CAML_INSTR_LOG; + +/* Declare a timer/counter name. [t] must be a new variable name. */ +#define CAML_INSTR_DECLARE(t) \ + struct CAML_INSTR_BLOCK *t = NULL + +/* Allocate the data block for a given name. + [t] must have been declared with [CAML_INSTR_DECLARE]. */ +#define CAML_INSTR_ALLOC(t) do{ \ + if (caml_stat_minor_collections >= CAML_INSTR_STARTTIME \ + && caml_stat_minor_collections < CAML_INSTR_STOPTIME){ \ + t = malloc (sizeof (struct CAML_INSTR_BLOCK)); \ + t->index = 0; \ + t->tag[0] = ""; \ + t->next = CAML_INSTR_LOG; \ + CAML_INSTR_LOG = t; \ + } \ + }while(0) + +/* Allocate the data block and start the timer. + [t] must have been declared with [CAML_INSTR_DECLARE] + and allocated with [CAML_INSTR_ALLOC]. */ +#define CAML_INSTR_START(t, msg) do{ \ + if (t != NULL){ \ + t->tag[0] = msg; \ + clock_gettime (CLOCK_REALTIME, &(t->ts[0])); \ + } \ + }while(0) + +/* Declare a timer, allocate its data, and start it. + [t] must be a new variable name. */ +#define CAML_INSTR_SETUP(t, msg) \ + CAML_INSTR_DECLARE (t); \ + CAML_INSTR_ALLOC (t); \ + CAML_INSTR_START (t, msg) + +/* Record an intermediate time within a given timer. + [t] must have been declared, allocated, and started. */ +#define CAML_INSTR_TIME(t, msg) do{ \ + if (t != NULL){ \ + ++ t->index; \ + t->tag[t->index] = (msg); \ + clock_gettime (CLOCK_REALTIME, &(t->ts[t->index])); \ + } \ + }while(0) + +/* Record an integer data point. + If [msg] ends with # it will be interpreted as an integer-valued event. + If it ends with @ it will be interpreted as an event counter. +*/ +#define CAML_INSTR_INT(msg, data) do{ \ + CAML_INSTR_SETUP (__caml_tmp, ""); \ + if (__caml_tmp != NULL){ \ + __caml_tmp->index = 1; \ + __caml_tmp->tag[1] = msg; \ + __caml_tmp->ts[1].tv_sec = 0; \ + __caml_tmp->ts[1].tv_nsec = (data); \ + } \ + }while(0) + +/* This function is called at the start of the program to set up + the data for the above macros. +*/ +extern void CAML_INSTR_INIT (void); + +/* This function is automatically called by the runtime to output + the collected data to the dump file. */ +extern void CAML_INSTR_ATEXIT (void); + +#else /* CAML_INSTR */ + +#define CAML_INSTR_DECLARE(t) /**/ +#define CAML_INSTR_ALLOC(t) /**/ +#define CAML_INSTR_START(t, name) /**/ +#define CAML_INSTR_SETUP(t, name) /**/ +#define CAML_INSTR_TIME(t, msg) /**/ +#define CAML_INSTR_INT(msg, c) /**/ +#define CAML_INSTR_INIT() /**/ +#define CAML_INSTR_ATEXIT() /**/ + +#endif /* CAML_INSTR */ + /* */ #ifdef __cplusplus diff --git a/byterun/caml/mlvalues.h b/byterun/caml/mlvalues.h index e578009c8..e14f50efc 100644 --- a/byterun/caml/mlvalues.h +++ b/byterun/caml/mlvalues.h @@ -217,7 +217,8 @@ CAMLextern value caml_hash_variant(char const * tag); #define Byte_u(x, i) (((unsigned char *) (x)) [i]) /* Also an l-value. */ /* Abstract things. Their contents is not traced by the GC; therefore they - must not contain any [value]. + must not contain any [value]. Must have odd number so that headers with + this tag cannot be mistaken for pointers (see caml_obj_truncate). */ #define Abstract_tag 251 @@ -304,6 +305,4 @@ CAMLextern value caml_set_oo_id(value obj); } #endif -extern intnat caml_stat_top_heap_wsz; - #endif /* CAML_MLVALUES_H */ diff --git a/byterun/caml/roots.h b/byterun/caml/roots.h index ca6a5d262..3bea425ff 100644 --- a/byterun/caml/roots.h +++ b/byterun/caml/roots.h @@ -20,8 +20,10 @@ typedef void (*scanning_action) (value, value *); void caml_oldify_local_roots (void); -void caml_darken_all_roots (void); -void caml_do_roots (scanning_action); +void caml_darken_all_roots_start (void); +intnat caml_darken_all_roots_slice (intnat); +void caml_do_roots (scanning_action, int); +extern uintnat caml_incremental_roots_count; #ifndef NATIVE_CODE CAMLextern void caml_do_local_roots (scanning_action, value *, value *, struct caml__roots_block *); diff --git a/byterun/caml/signals.h b/byterun/caml/signals.h index 584516660..0364c6f07 100644 --- a/byterun/caml/signals.h +++ b/byterun/caml/signals.h @@ -28,14 +28,16 @@ extern "C" { CAMLextern intnat volatile caml_signals_are_pending; CAMLextern intnat volatile caml_pending_signals[]; CAMLextern int volatile caml_something_to_do; -extern int volatile caml_force_major_slice; +extern int volatile caml_requested_major_slice; +extern int volatile caml_requested_minor_gc; /* */ CAMLextern void caml_enter_blocking_section (void); CAMLextern void caml_leave_blocking_section (void); /* */ -void caml_urge_major_slice (void); +void caml_request_major_slice (void); +void caml_request_minor_gc (void); CAMLextern int caml_convert_signal_number (int); CAMLextern int caml_rev_convert_signal_number (int); void caml_execute_signal(int signal_number, int in_signal_handler); diff --git a/byterun/caml/startup_aux.h b/byterun/caml/startup_aux.h index f1de0e29a..2c9bb5946 100644 --- a/byterun/caml/startup_aux.h +++ b/byterun/caml/startup_aux.h @@ -21,6 +21,7 @@ extern uintnat caml_init_minor_heap_wsz; extern uintnat caml_init_heap_chunk_sz; extern uintnat caml_init_heap_wsz; extern uintnat caml_init_max_stack_wsz; +extern uintnat caml_init_major_window; extern uintnat caml_trace_level; extern void caml_parse_ocamlrunparam (void); diff --git a/byterun/compact.c b/byterun/compact.c index 77b9479f5..f48d05643 100644 --- a/byterun/compact.c +++ b/byterun/compact.c @@ -185,7 +185,7 @@ static void do_compaction (void) /* Invert roots first because the threads library needs some heap data structures to find its roots. Fortunately, it doesn't need the headers (see above). */ - caml_do_roots (invert_root); + caml_do_roots (invert_root, 1); caml_final_do_weak_roots (invert_root); ch = caml_heap_start; @@ -398,8 +398,14 @@ uintnat caml_percent_max; /* used in gc_ctrl.c and memory.c */ void caml_compact_heap (void) { uintnat target_wsz, live; + CAML_INSTR_SETUP(tmr, "compact"); + + CAMLassert (caml_young_ptr == caml_young_alloc_end); + CAMLassert (caml_ref_table.ptr == caml_ref_table.base); + CAMLassert (caml_weak_ref_table.ptr == caml_weak_ref_table.base); do_compaction (); + CAML_INSTR_TIME (tmr, "compact/main"); /* Compaction may fail to shrink the heap to a reasonable size because it deals in complete chunks: if a very large chunk is at the beginning of the heap, everything gets moved to @@ -428,8 +434,14 @@ void caml_compact_heap (void) live = caml_stat_heap_wsz - caml_fl_cur_wsz; target_wsz = live + caml_percent_free * (live / 100 + 1) + Wsize_bsize (Page_size); - target_wsz = caml_round_heap_chunk_wsz (target_wsz); + target_wsz = caml_clip_heap_chunk_wsz (target_wsz); + +#ifdef HAS_HUGE_PAGES + if (caml_use_huge_pages && caml_stat_heap_size <= HUGE_PAGE_SIZE) return; +#endif + if (target_wsz < caml_stat_heap_wsz / 2){ + /* Recompact. */ char *chunk; caml_gc_message (0x10, "Recompacting heap (target=%luk words)\n", @@ -456,6 +468,7 @@ void caml_compact_heap (void) Assert (caml_stat_heap_chunks == 1); Assert (Chunk_next (caml_heap_start) == NULL); Assert (caml_stat_heap_wsz == Wsize_bsize (Chunk_size (chunk))); + CAML_INSTR_TIME (tmr, "compact/recompact"); } } @@ -473,7 +486,11 @@ void caml_compact_heap_maybe (void) Assert (caml_gc_phase == Phase_idle); if (caml_percent_max >= 1000000) return; if (caml_stat_major_collections < 3) return; - if (caml_stat_heap_wsz <= 2 * caml_round_heap_chunk_wsz (0)) return; + if (caml_stat_heap_wsz <= 2 * caml_clip_heap_chunk_wsz (0)) return; + +#ifdef HAS_HUGE_PAGES + if (caml_use_huge_pages && caml_stat_heap_size <= HUGE_PAGE_SIZE) return; +#endif fw = 3.0 * caml_fl_cur_wsz - 2.0 * caml_fl_wsz_at_phase_change; if (fw < 0) fw = caml_fl_cur_wsz; @@ -492,9 +509,9 @@ void caml_compact_heap_maybe (void) (uintnat) fp); if (fp >= caml_percent_max){ caml_gc_message (0x200, "Automatic compaction triggered.\n", 0); + caml_empty_minor_heap (); /* minor heap must be empty for compaction */ caml_finish_major_cycle (); - /* We just did a complete GC, so we can measure the overhead exactly. */ fw = caml_fl_cur_wsz; fp = 100.0 * fw / (caml_stat_heap_wsz - fw); caml_gc_message (0x200, "Measured overhead: %" diff --git a/byterun/finalise.c b/byterun/finalise.c index 79b01bd42..a6a7dc613 100644 --- a/byterun/finalise.c +++ b/byterun/finalise.c @@ -61,14 +61,13 @@ static void alloc_to_do (int size) /* Find white finalisable values, put them in the finalising set, and darken them. - The recent set is empty. */ void caml_final_update (void) { uintnat i, j, k; uintnat todo_count = 0; - Assert (young == old); + Assert (old <= young); for (i = 0; i < old; i++){ Assert (Is_block (final_table[i].val)); Assert (Is_in_heap (final_table[i].val)); @@ -79,35 +78,25 @@ void caml_final_update (void) alloc_to_do (todo_count); j = k = 0; for (i = 0; i < old; i++){ - again: Assert (Is_block (final_table[i].val)); Assert (Is_in_heap (final_table[i].val)); + Assert (Tag_val (final_table[i].val) != Forward_tag); if (Is_white_val (final_table[i].val)){ - if (Tag_val (final_table[i].val) == Forward_tag){ - value fv; - Assert (final_table[i].offset == 0); - fv = Forward_val (final_table[i].val); - if (Is_block (fv) - && (!Is_in_value_area(fv) || Tag_val (fv) == Forward_tag - || Tag_val (fv) == Lazy_tag || Tag_val (fv) == Double_tag)){ - /* Do not short-circuit the pointer. */ - }else{ - final_table[i].val = fv; - if (Is_block (final_table[i].val) - && Is_in_heap (final_table[i].val)){ - goto again; - } - } - } to_do_tl->item[k++] = final_table[i]; }else{ final_table[j++] = final_table[i]; } } - young = old = j; + CAMLassert (i == old); + old = j; + for(;i < young; i++){ + final_table[j++] = final_table[i]; + } + young = j; to_do_tl->size = k; for (i = 0; i < k; i++){ - CAMLassert (Is_white_val (to_do_tl->item[i].val)); + /* Note that item may alredy be dark due to multiple entries in + the final table. */ caml_darken (to_do_tl->item[i].val, NULL); } } @@ -124,7 +113,7 @@ void caml_final_do_calls (void) value res; if (running_finalisation_function) return; - + if (caml_finalise_begin_hook != NULL) (*caml_finalise_begin_hook) (); if (to_do_hd != NULL){ if (caml_finalise_begin_hook != NULL) (*caml_finalise_begin_hook) (); caml_gc_message (0x80, "Calling finalisation functions.\n", 0); @@ -147,6 +136,7 @@ void caml_final_do_calls (void) caml_gc_message (0x80, "Done calling finalisation functions.\n", 0); if (caml_finalise_end_hook != NULL) (*caml_finalise_end_hook) (); } + if (caml_finalise_end_hook != NULL) (*caml_finalise_end_hook) (); } /* Call a scanning_action [f] on [x]. */ @@ -154,17 +144,15 @@ void caml_final_do_calls (void) /* Call [*f] on the closures of the finalisable set and the closures and values of the finalising set. - The recent set is empty. - This is called by the major GC and the compactor - through [caml_darken_all_roots]. + This is called by the major GC through [caml_darken_all_roots]. */ void caml_final_do_strong_roots (scanning_action f) { uintnat i; struct to_do *todo; - Assert (old == young); - for (i = 0; i < old; i++) Call_action (f, final_table[i].fun); + Assert (old <= young); + for (i = 0; i < young; i++) Call_action (f, final_table[i].fun); for (todo = to_do_hd; todo != NULL; todo = todo->next){ for (i = 0; i < todo->size; i++){ @@ -175,15 +163,14 @@ void caml_final_do_strong_roots (scanning_action f) } /* Call [*f] on the values of the finalisable set. - The recent set is empty. This is called directly by the compactor. */ void caml_final_do_weak_roots (scanning_action f) { uintnat i; - Assert (old == young); - for (i = 0; i < old; i++) Call_action (f, final_table[i].val); + CAMLassert (old <= young); + for (i = 0; i < young; i++) Call_action (f, final_table[i].val); } /* Call [*f] on the closures and values of the recent set. @@ -213,9 +200,10 @@ void caml_final_empty_young (void) CAMLprim value caml_final_register (value f, value v) { if (!Is_block (v) - || !Is_in_heap_or_young(v) - || Tag_val (v) == Lazy_tag - || Tag_val (v) == Double_tag) { + || !Is_in_heap_or_young(v) + || Tag_val (v) == Lazy_tag + || Tag_val (v) == Double_tag + || Tag_val (v) == Forward_tag) { caml_invalid_argument ("Gc.finalise"); } Assert (old <= young); diff --git a/byterun/freelist.c b/byterun/freelist.c index 176b6f846..501ebea13 100644 --- a/byterun/freelist.c +++ b/byterun/freelist.c @@ -148,6 +148,35 @@ static header_t *allocate_block (mlsize_t wh_sz, int flpi, value prev, return (header_t *) &Field (cur, Wosize_hd (h) - wh_sz); } +#ifdef CAML_INSTR +static uintnat instr_size [20] = + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +static char *instr_name [20] = { + NULL, + "alloc01@", + "alloc02@", + "alloc03@", + "alloc04@", + "alloc05@", + "alloc06@", + "alloc07@", + "alloc08@", + "alloc09@", + "alloc10-19@", + "alloc20-29@", + "alloc30-39@", + "alloc40-49@", + "alloc50-59@", + "alloc60-69@", + "alloc70-79@", + "alloc80-89@", + "alloc90-99@", + "alloc_large@", +}; +uintnat caml_instr_alloc_jump = 0; +/* number of pointers followed to allocate from the free list */ +#endif /*CAML_INSTR*/ + /* [caml_fl_allocate] does not set the header of the newly allocated block. The calling function must do it before any GC function gets called. [caml_fl_allocate] returns a head pointer. @@ -160,6 +189,16 @@ header_t *caml_fl_allocate (mlsize_t wo_sz) mlsize_t sz, prevsz; Assert (sizeof (char *) == sizeof (value)); Assert (wo_sz >= 1); +#ifdef CAML_INSTR + if (wo_sz < 10){ + ++instr_size[wo_sz]; + }else if (wo_sz < 100){ + ++instr_size[wo_sz/10 + 9]; + }else{ + ++instr_size[19]; + } +#endif /* CAML_INSTR */ + switch (policy){ case Policy_next_fit: Assert (fl_prev != Val_NULL); @@ -172,6 +211,9 @@ header_t *caml_fl_allocate (mlsize_t wo_sz) } prev = cur; cur = Next (prev); +#ifdef CAML_INSTR + ++ caml_instr_alloc_jump; +#endif } fl_last = prev; /* Search from the start of the list to [fl_prev]. */ @@ -183,6 +225,9 @@ header_t *caml_fl_allocate (mlsize_t wo_sz) } prev = cur; cur = Next (prev); +#ifdef CAML_INSTR + ++ caml_instr_alloc_jump; +#endif } /* No suitable block was found. */ return NULL; @@ -347,6 +392,13 @@ static header_t *last_fragment; void caml_fl_init_merge (void) { +#ifdef CAML_INSTR + int i; + for (i = 1; i < 20; i++){ + CAML_INSTR_INT (instr_name[i], instr_size[i]); + instr_size[i] = 0; + } +#endif /* CAML_INSTR */ last_fragment = NULL; caml_fl_merge = Fl_head; #ifdef DEBUG diff --git a/byterun/gc_ctrl.c b/byterun/gc_ctrl.c index 868f883cf..837946424 100644 --- a/byterun/gc_ctrl.c +++ b/byterun/gc_ctrl.c @@ -12,21 +12,26 @@ /***********************************************************************/ #include "caml/alloc.h" +#include "caml/backtrace.h" #include "caml/compact.h" #include "caml/custom.h" +#include "caml/fail.h" #include "caml/finalise.h" #include "caml/freelist.h" #include "caml/gc.h" #include "caml/gc_ctrl.h" #include "caml/major_gc.h" +#include "caml/memory.h" #include "caml/minor_gc.h" #include "caml/misc.h" #include "caml/mlvalues.h" +#include "caml/signals.h" #ifdef NATIVE_CODE #include "stack.h" #else #include "caml/stacks.h" #endif +#include "caml/startup_aux.h" #ifndef NATIVE_CODE extern uintnat caml_max_stack_size; /* defined in stacks.c */ @@ -214,7 +219,7 @@ static value heap_stats (int returnstats) /* get a copy of these before allocating anything... */ double minwords = caml_stat_minor_words - + (double) (caml_young_end - caml_young_ptr); + + (double) (caml_young_alloc_end - caml_young_ptr); double prowords = caml_stat_promoted_words; double majwords = caml_stat_major_words + (double) caml_allocated_words; intnat mincoll = caml_stat_minor_collections; @@ -255,8 +260,12 @@ void caml_heap_check (void) CAMLprim value caml_gc_stat(value v) { + value result; + CAML_INSTR_SETUP (tmr, ""); Assert (v == Val_unit); - return heap_stats (1); + result = heap_stats (1); + CAML_INSTR_TIME (tmr, "explicit/gc_stat"); + return result; } CAMLprim value caml_gc_quick_stat(value v) @@ -266,7 +275,7 @@ CAMLprim value caml_gc_quick_stat(value v) /* get a copy of these before allocating anything... */ double minwords = caml_stat_minor_words - + (double) (caml_young_end - caml_young_ptr); + + (double) (caml_young_alloc_end - caml_young_ptr); double prowords = caml_stat_promoted_words; double majwords = caml_stat_major_words + (double) caml_allocated_words; intnat mincoll = caml_stat_minor_collections; @@ -303,7 +312,7 @@ CAMLprim value caml_gc_counters(value v) /* get a copy of these before allocating anything... */ double minwords = caml_stat_minor_words - + (double) (caml_young_end - caml_young_ptr); + + (double) (caml_young_alloc_end - caml_young_ptr); double prowords = caml_stat_promoted_words; double majwords = caml_stat_major_words + (double) caml_allocated_words; @@ -314,12 +323,17 @@ CAMLprim value caml_gc_counters(value v) CAMLreturn (res); } +CAMLprim value caml_gc_huge_fallback_count (value v) +{ + return Val_long (caml_huge_fallback_count); +} + CAMLprim value caml_gc_get(value v) { CAMLparam0 (); /* v is ignored */ CAMLlocal1 (res); - res = caml_alloc_tuple (7); + res = caml_alloc_tuple (8); Store_field (res, 0, Val_long (caml_minor_heap_wsz)); /* s */ Store_field (res, 1, Val_long (caml_major_heap_increment)); /* i */ Store_field (res, 2, Val_long (caml_percent_free)); /* o */ @@ -331,6 +345,7 @@ CAMLprim value caml_gc_get(value v) Store_field (res, 5, Val_long (0)); #endif Store_field (res, 6, Val_long (caml_allocation_policy)); /* a */ + Store_field (res, 7, Val_long (caml_major_window)); /* w */ CAMLreturn (res); } @@ -353,12 +368,20 @@ static intnat norm_minsize (intnat s) return s; } +static uintnat norm_window (intnat w) +{ + if (w < 1) w = 1; + if (w > Max_major_window) w = Max_major_window; + return w; +} + CAMLprim value caml_gc_set(value v) { uintnat newpf, newpm; asize_t newheapincr; asize_t newminwsz; uintnat oldpolicy; + CAML_INSTR_SETUP (tmr, ""); caml_verb_gc = Long_val (Field (v, 3)); @@ -396,6 +419,15 @@ CAMLprim value caml_gc_set(value v) caml_allocation_policy); } + if (Wosize_val (v) >= 8){ + int old_window = caml_major_window; + caml_set_major_window (norm_window (Long_val (Field (v, 7)))); + if (old_window != caml_major_window){ + caml_gc_message (0x20, "New smoothing window size: %d\n", + caml_major_window); + } + } + /* Minor heap size comes last because it will trigger a minor collection (thus invalidating [v]) and it can raise [Out_of_memory]. */ newminwsz = norm_minsize (Long_val (Field (v, 0))); @@ -404,12 +436,17 @@ CAMLprim value caml_gc_set(value v) newminwsz / 1024); caml_set_minor_heap_size (Bsize_wsize (newminwsz)); } + CAML_INSTR_TIME (tmr, "explicit/gc_set"); return Val_unit; } CAMLprim value caml_gc_minor(value v) -{ Assert (v == Val_unit); - caml_minor_collection (); +{ + CAML_INSTR_SETUP (tmr, ""); + Assert (v == Val_unit); + caml_request_minor_gc (); + caml_gc_dispatch (); + CAML_INSTR_TIME (tmr, "explicit/gc_minor"); return Val_unit; } @@ -429,17 +466,22 @@ static void test_and_compact (void) } CAMLprim value caml_gc_major(value v) -{ Assert (v == Val_unit); +{ + CAML_INSTR_SETUP (tmr, ""); + Assert (v == Val_unit); caml_gc_message (0x1, "Major GC cycle requested\n", 0); caml_empty_minor_heap (); caml_finish_major_cycle (); test_and_compact (); caml_final_do_calls (); + CAML_INSTR_TIME (tmr, "explicit/gc_major"); return Val_unit; } CAMLprim value caml_gc_full_major(value v) -{ Assert (v == Val_unit); +{ + CAML_INSTR_SETUP (tmr, ""); + Assert (v == Val_unit); caml_gc_message (0x1, "Full major GC cycle requested\n", 0); caml_empty_minor_heap (); caml_finish_major_cycle (); @@ -448,18 +490,24 @@ CAMLprim value caml_gc_full_major(value v) caml_finish_major_cycle (); test_and_compact (); caml_final_do_calls (); + CAML_INSTR_TIME (tmr, "explicit/gc_full_major"); return Val_unit; } CAMLprim value caml_gc_major_slice (value v) { + CAML_INSTR_SETUP (tmr, ""); Assert (Is_long (v)); caml_empty_minor_heap (); - return Val_long (caml_major_collection_slice (Long_val (v))); + caml_major_collection_slice (Long_val (v)); + CAML_INSTR_TIME (tmr, "explicit/gc_major_slice"); + return Val_long (0); } CAMLprim value caml_gc_compaction(value v) -{ Assert (v == Val_unit); +{ + CAML_INSTR_SETUP (tmr, ""); + Assert (v == Val_unit); caml_gc_message (0x10, "Heap compaction requested\n", 0); caml_empty_minor_heap (); caml_finish_major_cycle (); @@ -468,9 +516,35 @@ CAMLprim value caml_gc_compaction(value v) caml_finish_major_cycle (); caml_compact_heap (); caml_final_do_calls (); + CAML_INSTR_TIME (tmr, "explicit/gc_compact"); return Val_unit; } +CAMLprim value caml_get_minor_free (value v) +{ + return Val_int (caml_young_ptr - caml_young_alloc_start); +} + +CAMLprim value caml_get_major_bucket (value v) +{ + long i = Long_val (v); + if (i < 0) caml_invalid_argument ("Gc.get_bucket"); + if (i < caml_major_window){ + i += caml_major_ring_index; + if (i >= caml_major_window) i -= caml_major_window; + CAMLassert (0 <= i && i < caml_major_window); + return Val_long ((long) (caml_major_ring[i] * 1e6)); + }else{ + return Val_long (0); + } +} + +CAMLprim value caml_get_major_credit (value v) +{ + CAMLassert (v == Val_unit); + return Val_long ((long) (caml_major_work_credit * 1e6)); +} + uintnat caml_normalize_heap_increment (uintnat i) { if (i < Bsize_wsize (Heap_chunk_min)){ @@ -483,11 +557,15 @@ uintnat caml_normalize_heap_increment (uintnat i) [major_incr] is either a percentage or a number of words */ void caml_init_gc (uintnat minor_size, uintnat major_size, uintnat major_incr, uintnat percent_fr, - uintnat percent_m) + uintnat percent_m, uintnat window) { uintnat major_heap_size = Bsize_wsize (caml_normalize_heap_increment (major_size)); + CAML_INSTR_INIT (); + if (caml_init_alloc_for_heap () != 0){ + caml_fatal_error ("cannot initialize heap: mmap failed\n"); + } if (caml_page_table_initialize(Bsize_wsize(minor_size) + major_heap_size)){ caml_fatal_error ("OCaml runtime error: cannot initialize page table\n"); } @@ -496,6 +574,7 @@ void caml_init_gc (uintnat minor_size, uintnat major_size, caml_percent_free = norm_pfree (percent_fr); caml_percent_max = norm_pmax (percent_m); caml_init_major_heap (major_heap_size); + caml_major_window = norm_window (window); caml_gc_message (0x20, "Initial minor heap size: %luk words\n", caml_minor_heap_wsz / 1024); caml_gc_message (0x20, "Initial major heap size: %luk bytes\n", @@ -511,6 +590,54 @@ void caml_init_gc (uintnat minor_size, uintnat major_size, } caml_gc_message (0x20, "Initial allocation policy: %d\n", caml_allocation_policy); + caml_gc_message (0x20, "Initial smoothing window: %d\n", + caml_major_window); +} + + +/* FIXME After the startup_aux.c unification, move these functions there. */ + +CAMLprim value caml_runtime_variant (value unit) +{ + CAMLassert (unit == Val_unit); +#if defined (DEBUG) + return caml_copy_string ("d"); +#elif defined (CAML_INSTR) + return caml_copy_string ("i"); +#elif defined (MMAP_INTERVAL) + return caml_copy_string ("m"); +#else + return caml_copy_string (""); +#endif +} + +extern int caml_parser_trace; + +CAMLprim value caml_runtime_parameters (value unit) +{ + CAMLassert (unit == Val_unit); + return caml_alloc_sprintf + ("a=%d,b=%s,H=%lu,i=%lu,l=%lu,o=%lu,O=%lu,p=%d,s=%lu,t=%d,v=%lu,w=%d,W=%lu", + /* a */ caml_allocation_policy, + /* b */ caml_backtrace_active, + /* h */ /* missing */ /* FIXME add when changed to min_heap_size */ + /* H */ caml_use_huge_pages, + /* i */ caml_major_heap_increment, +#ifdef NATIVE_CODE + /* l */ 0, +#else + /* l */ caml_max_stack_size, +#endif + /* o */ caml_percent_free, + /* O */ caml_percent_max, + /* p */ caml_parser_trace, + /* R */ /* missing */ + /* s */ caml_minor_heap_wsz, + /* t */ caml_trace_level, + /* v */ caml_verb_gc, + /* w */ caml_major_window, + /* W */ caml_runtime_warnings + ); } /* Control runtime warnings */ diff --git a/byterun/instrtrace.c b/byterun/instrtrace.c index cce707dea..fdd6e9f97 100644 --- a/byterun/instrtrace.c +++ b/byterun/instrtrace.c @@ -19,6 +19,7 @@ #include #include +#include "caml/instrtrace.h" #include "caml/instruct.h" #include "caml/misc.h" #include "caml/mlvalues.h" diff --git a/byterun/intern.c b/byterun/intern.c index 23eaebce5..e327d4141 100644 --- a/byterun/intern.c +++ b/byterun/intern.c @@ -618,8 +618,7 @@ static void intern_add_to_heap(mlsize_t whsize) /* Add new heap chunk to heap if needed */ if (intern_extra_block != NULL) { /* If heap chunk not filled totally, build free block at end */ - asize_t request = - ((Bsize_wsize(whsize) + Page_size - 1) >> Page_log) << Page_log; + asize_t request = Chunk_size (intern_extra_block); header_t * end_extra_block = (header_t *) intern_extra_block + Wsize_bsize(request); Assert(intern_block == 0); diff --git a/byterun/main.c b/byterun/main.c index 1ad20280e..30a9ccdb5 100644 --- a/byterun/main.c +++ b/byterun/main.c @@ -26,27 +26,6 @@ CAMLextern void caml_expand_command_line (int *, char ***); int main(int argc, char **argv) { -#ifdef DEBUG - caml_gc_message (-1, "### OCaml runtime: debug mode ###\n", 0); -#if 0 - { - int i; - char *ocp; - char *cp; - - caml_gc_message (-1, "### command line:", 0); - for (i = 0; i < argc; i++){ - caml_gc_message (-1, " %s", argv[i]); - } - caml_gc_message (-1, "\n", 0); - ocp = getenv ("OCAMLRUNPARAM"); - caml_gc_message (-1, "### OCAMLRUNPARAM=%s\n", ocp == NULL ? "" : ocp); - cp = getenv ("CAMLRUNPARAM"); - caml_gc_message (-1, "### CAMLRUNPARAM=%s\n", cp == NULL ? "" : cp); - caml_gc_message (-1, "### working dir: %s\n", getcwd (NULL, 0)); - } -#endif -#endif #ifdef _WIN32 /* Expand wildcards and diversions in command line */ caml_expand_command_line(&argc, &argv); diff --git a/byterun/major_gc.c b/byterun/major_gc.c index 356fa179a..c2f6d78cc 100644 --- a/byterun/major_gc.c +++ b/byterun/major_gc.c @@ -12,6 +12,7 @@ /***********************************************************************/ #include +#include #include "caml/compact.h" #include "caml/custom.h" @@ -55,6 +56,12 @@ static char *markhp, *chunk, *limit; int caml_gc_subphase; /* Subphase_{main,weak1,weak2,final} */ static value *weak_prev; +int caml_major_window = 1; +double caml_major_ring[Max_major_window] = { 0. }; +int caml_major_ring_index = 0; +double caml_major_work_credit = 0.0; +double caml_gc_clock = 0.0; + #ifdef DEBUG static unsigned long major_gc_counter = 0; #endif @@ -91,7 +98,7 @@ static void realloc_gray_vals (void) void caml_darken (value v, value *p /* not used */) { #ifdef NATIVE_CODE_AND_NO_NAKED_POINTERS - if (Is_block (v) && Wosize_val (v) > 0) { + if (Is_block (v) && !Is_young (v) && Wosize_val (v) > 0) { #else if (Is_block (v) && Is_in_heap (v)) { #endif @@ -129,9 +136,9 @@ static void start_cycle (void) Assert (caml_gc_phase == Phase_idle); Assert (gray_vals_cur == gray_vals); caml_gc_message (0x01, "Starting new major GC cycle\n", 0); - caml_darken_all_roots(); + caml_darken_all_roots_start (); caml_gc_phase = Phase_mark; - caml_gc_subphase = Subphase_main; + caml_gc_subphase = Subphase_roots; markhp = NULL; #ifdef DEBUG ++ major_gc_counter; @@ -139,35 +146,65 @@ static void start_cycle (void) #endif } +/* We may stop the slice inside values, in order to avoid large latencies + on large arrays. In this case, [current_value] is the partially-marked + value and [current_index] is the index of the next field to be marked. +*/ +static value current_value = 0; +static mlsize_t current_index = 0; + +#ifdef CAML_INSTR +#define INSTR(x) x +#else +#define INSTR(x) /**/ +#endif + static void mark_slice (intnat work) { - value *gray_vals_ptr; /* Local copy of gray_vals_cur */ + value *gray_vals_ptr; /* Local copy of [gray_vals_cur] */ value v, child; - header_t hd; - mlsize_t size, i; + header_t hd, chd; + mlsize_t size, i, start, end; /* [start] is a local copy of [current_index] */ #ifdef NATIVE_CODE_AND_NO_NAKED_POINTERS int marking_closure = 0; #endif +#ifdef CAML_INSTR + int slice_fields = 0; + int slice_pointers = 0; +#endif caml_gc_message (0x40, "Marking %ld words\n", work); caml_gc_message (0x40, "Subphase = %ld\n", caml_gc_subphase); gray_vals_ptr = gray_vals_cur; + v = current_value; + start = current_index; while (work > 0){ - if (gray_vals_ptr > gray_vals){ + if (v == 0 && gray_vals_ptr > gray_vals){ + CAMLassert (start == 0); v = *--gray_vals_ptr; + CAMLassert (Is_gray_val (v)); + } + if (v != 0){ hd = Hd_val(v); #ifdef NATIVE_CODE_AND_NO_NAKED_POINTERS marking_closure = (Tag_hd (hd) == Closure_tag || Tag_hd (hd) == Infix_tag); #endif Assert (Is_gray_hd (hd)); - Hd_val (v) = Blackhd_hd (hd); size = Wosize_hd (hd); + end = start + work; if (Tag_hd (hd) < No_scan_tag){ - for (i = 0; i < size; i++){ + start = size < start ? size : start; + end = size < end ? size : end; + CAMLassert (end > start); + INSTR (slice_fields += end - start;) + INSTR (if (size > end) + CAML_INSTR_INT ("major/mark/slice/remain", size - end);) + for (i = start; i < end; i++){ child = Field (v, i); #ifdef NATIVE_CODE_AND_NO_NAKED_POINTERS if (Is_block (child) + && ! Is_young (child) && Wosize_val (child) > 0 /* Atoms never need to be marked. */ /* Closure blocks contain code pointers at offsets that cannot be reliably determined, so we always use the page table when @@ -176,8 +213,9 @@ static void mark_slice (intnat work) #else if (Is_block (child) && Is_in_heap (child)) { #endif - hd = Hd_val (child); - if (Tag_hd (hd) == Forward_tag){ + INSTR (++ slice_pointers;) + chd = Hd_val (child); + if (Tag_hd (chd) == Forward_tag){ value f = Forward_val (child); if (Is_block (f) && (!Is_in_value_area(f) || Tag_val (f) == Forward_tag @@ -185,18 +223,19 @@ static void mark_slice (intnat work) /* Do not short-circuit the pointer. */ }else{ Field (v, i) = f; + if (Is_block (f) && Is_young (f) && !Is_young (child)) + Add_to_ref_table (caml_ref_table, &Field (v, i)); } - } - else if (Tag_hd(hd) == Infix_tag) { + }else if (Tag_hd(chd) == Infix_tag) { child -= Infix_offset_val(child); - hd = Hd_val(child); + chd = Hd_val(child); } #ifdef NATIVE_CODE_AND_NO_NAKED_POINTERS /* See [caml_darken] for a description of this assertion. */ - CAMLassert (Is_in_heap (child) || Is_black_hd (hd)); + CAMLassert (Is_in_heap (child) || Is_black_hd (chd)); #endif - if (Is_white_hd (hd)){ - Hd_val (child) = Grayhd_hd (hd); + if (Is_white_hd (chd)){ + Hd_val (child) = Grayhd_hd (chd); *gray_vals_ptr++ = child; if (gray_vals_ptr >= gray_vals_end) { gray_vals_cur = gray_vals_ptr; @@ -206,8 +245,25 @@ static void mark_slice (intnat work) } } } + if (end < size){ + work = 0; + start = end; + /* [v] doesn't change. */ + CAMLassert (Is_gray_val (v)); + }else{ + CAMLassert (end == size); + Hd_val (v) = Blackhd_hd (hd); + work -= Whsize_wosize(end - start); + start = 0; + v = 0; + } + }else{ + /* The block doesn't contain any pointers. */ + CAMLassert (start == 0); + Hd_val (v) = Blackhd_hd (hd); + work -= Whsize_wosize(size); + v = 0; } - work -= Whsize_wosize(size); }else if (markhp != NULL){ if (markhp == limit){ chunk = Chunk_next (chunk); @@ -220,7 +276,8 @@ static void mark_slice (intnat work) }else{ if (Is_gray_val (Val_hp (markhp))){ Assert (gray_vals_ptr == gray_vals); - *gray_vals_ptr++ = Val_hp (markhp); + CAMLassert (v == 0 && start == 0); + v = Val_hp (markhp); } markhp += Bhsize_hp (markhp); } @@ -231,6 +288,17 @@ static void mark_slice (intnat work) limit = chunk + Chunk_size (chunk); }else{ switch (caml_gc_subphase){ + case Subphase_roots: { + intnat work_done; + gray_vals_cur = gray_vals_ptr; + work_done = caml_darken_all_roots_slice (work); + gray_vals_ptr = gray_vals_cur; + if (work_done < work){ + caml_gc_subphase = Subphase_main; + } + work -= work_done; + } + break; case Subphase_main: { /* The main marking phase is over. Start removing weak pointers to dead values. */ @@ -251,7 +319,7 @@ static void mark_slice (intnat work) curfield = Field (cur, i); weak_again: if (curfield != caml_weak_none - && Is_block (curfield) && Is_in_heap (curfield)){ + && Is_block (curfield) && Is_in_heap_or_young (curfield)){ if (Tag_val (curfield) == Forward_tag){ value f = Forward_val (curfield); if (Is_block (f)) { @@ -260,11 +328,13 @@ static void mark_slice (intnat work) /* Do not short-circuit the pointer. */ }else{ Field (cur, i) = curfield = f; + if (Is_block (f) && Is_young (f)) + Add_to_ref_table (caml_weak_ref_table, &Field (cur, i)); goto weak_again; } } } - if (Is_white_val (curfield)){ + if (Is_white_val (curfield) && !Is_young (curfield)){ Field (cur, i) = caml_weak_none; } } @@ -277,6 +347,10 @@ static void mark_slice (intnat work) gray_vals_cur = gray_vals_ptr; caml_final_update (); gray_vals_ptr = gray_vals_cur; + if (gray_vals_ptr > gray_vals){ + v = *--gray_vals_ptr; + CAMLassert (start == 0); + } caml_gc_subphase = Subphase_weak2; weak_prev = &caml_weak_list_head; } @@ -304,7 +378,6 @@ static void mark_slice (intnat work) break; case Subphase_final: { /* Initialise the sweep phase. */ - gray_vals_cur = gray_vals_ptr; caml_gc_sweep_hp = caml_heap_start; caml_fl_init_merge (); caml_gc_phase = Phase_sweep; @@ -321,6 +394,10 @@ static void mark_slice (intnat work) } } gray_vals_cur = gray_vals_ptr; + current_value = v; + current_index = start; + INSTR (CAML_INSTR_INT ("major/mark/slice/fields#", slice_fields);) + INSTR (CAML_INSTR_INT ("major/mark/slice/pointers#", slice_pointers);) } static void sweep_slice (intnat work) @@ -368,14 +445,37 @@ static void sweep_slice (intnat work) } } -/* The main entry point for the GC. Called after each minor GC. - [howmuch] is the amount of work to do, 0 to let the GC compute it. - Return the computed amount of work to do. +#ifdef CAML_INSTR +static char *mark_slice_name[] = { + /* 0 */ NULL, + /* 1 */ NULL, + /* 2 */ NULL, + /* 3 */ NULL, + /* 4 */ NULL, + /* 5 */ NULL, + /* 6 */ NULL, + /* 7 */ NULL, + /* 8 */ NULL, + /* 9 */ NULL, + /* 10 */ "major/mark_roots", + /* 11 */ "major/mark_main", + /* 12 */ "major/mark_weak1", + /* 13 */ "major/mark_weak2", + /* 14 */ "major/mark_final", +}; +#endif + +/* The main entry point for the major GC. Called about once for each + minor GC. [howmuch] is the amount of work to do: + -1 if the GC is triggered automatically + 0 to let the GC compute the amount of work + [n] to make the GC do enough work to (on average) free [n] words */ -intnat caml_major_collection_slice (intnat howmuch) +void caml_major_collection_slice (intnat howmuch) { - double p, dp; + double p, dp, filt_p, spend; intnat computed_work; + int i; /* Free memory at the start of the GC cycle (garbage + free list) (assumed): FM = caml_stat_heap_wsz * caml_percent_free @@ -395,24 +495,37 @@ intnat caml_major_collection_slice (intnat howmuch) PE = caml_extra_heap_resources Proportion of total work to do in this slice: P = max (PH, PE) + + Here, we insert a time-based filter on the P variable to avoid large + latency spikes in the GC, so the P below is a smoothed-out version of + the P above. + Amount of marking work for the GC cycle: MW = caml_stat_heap_wsz * 100 / (100 + caml_percent_free) + + caml_incremental_roots_count Amount of sweeping work for the GC cycle: SW = caml_stat_heap_wsz In order to finish marking with a non-empty free list, we will use 40% of the time for marking, and 60% for sweeping. - If TW is the total work for this cycle, - MW = 40/100 * TW - SW = 60/100 * TW + Let MT be the time spent marking, ST the time spent sweeping, and TT + the total time for this cycle. We have: + MT = 40/100 * TT + ST = 60/100 * TT - Amount of work to do for this slice: - W = P * TW + Amount of time to spend on this slice: + T = P * TT = P * MT / (40/100) = P * ST / (60/100) + + Since we must do MW work in MT time or SW work in ST time, the amount + of work for this slice is: + MS = P * MW / (40/100) if marking + SS = P * SW / (60/100) if sweeping Amount of marking work for a marking slice: MS = P * MW / (40/100) - MS = P * caml_stat_heap_wsz * 250 / (100 + caml_percent_free) + MS = P * (caml_stat_heap_wsz * 250 / (100 + caml_percent_free) + + 2.5 * caml_incremental_roots_count) Amount of sweeping work for a sweeping slice: SS = P * SW / (60/100) SS = P * caml_stat_heap_wsz * 5 / 3 @@ -421,8 +534,7 @@ intnat caml_major_collection_slice (intnat howmuch) */ if (caml_major_slice_begin_hook != NULL) (*caml_major_slice_begin_hook) (); - - if (caml_gc_phase == Phase_idle) start_cycle (); + CAML_INSTR_SETUP (tmr, "major"); p = (double) caml_allocated_words * 3.0 * (100 + caml_percent_free) / caml_stat_heap_wsz / caml_percent_free / 2.0; @@ -434,51 +546,134 @@ intnat caml_major_collection_slice (intnat howmuch) } if (p < dp) p = dp; if (p < caml_extra_heap_resources) p = caml_extra_heap_resources; + if (p > 0.3) p = 0.3; + CAML_INSTR_INT ("major/work/extra#", + (uintnat) (caml_extra_heap_resources * 1000000)); + caml_gc_message (0x40, "ordered work = %ld words\n", howmuch); caml_gc_message (0x40, "allocated_words = %" ARCH_INTNAT_PRINTF_FORMAT "u\n", caml_allocated_words); caml_gc_message (0x40, "extra_heap_resources = %" ARCH_INTNAT_PRINTF_FORMAT "uu\n", (uintnat) (caml_extra_heap_resources * 1000000)); - caml_gc_message (0x40, "amount of work to do = %" - ARCH_INTNAT_PRINTF_FORMAT "uu\n", - (uintnat) (p * 1000000)); + caml_gc_message (0x40, "raw work-to-do = %" + ARCH_INTNAT_PRINTF_FORMAT "du\n", + (intnat) (p * 1000000)); + + for (i = 0; i < caml_major_window; i++){ + caml_major_ring[i] += p / caml_major_window; + } + + if (caml_gc_clock >= 1.0){ + caml_gc_clock -= 1.0; + ++caml_major_ring_index; + if (caml_major_ring_index >= caml_major_window){ + caml_major_ring_index = 0; + } + } + if (howmuch == -1){ + /* auto-triggered GC slice: spend work credit on the current bucket, + then do the remaining work, if any */ + /* Note that the minor GC guarantees that the major slice is called in + automatic mode (with [howmuch] = -1) at least once per clock tick. + This means we never leave a non-empty bucket behind. */ + spend = fmin (caml_major_work_credit, + caml_major_ring[caml_major_ring_index]); + caml_major_work_credit -= spend; + filt_p = caml_major_ring[caml_major_ring_index] - spend; + caml_major_ring[caml_major_ring_index] = 0.0; + }else{ + /* forced GC slice: do work and add it to the credit */ + if (howmuch == 0){ + /* automatic setting: size of next bucket + we do not use the current bucket, as it may be empty */ + int i = caml_major_ring_index + 1; + if (i >= caml_major_window) i = 0; + filt_p = caml_major_ring[i]; + }else{ + /* manual setting */ + filt_p = (double) howmuch * 3.0 * (100 + caml_percent_free) + / caml_stat_heap_wsz / caml_percent_free / 2.0; + } + caml_major_work_credit += filt_p; + } + + p = filt_p; + + caml_gc_message (0x40, "filtered work-to-do = %" + ARCH_INTNAT_PRINTF_FORMAT "du\n", + (intnat) (p * 1000000)); + + if (caml_gc_phase == Phase_idle){ + start_cycle (); + CAML_INSTR_TIME (tmr, "major/roots"); + p = 0; + goto finished; + } + + if (p < 0){ + p = 0; + goto finished; + } if (caml_gc_phase == Phase_mark){ - computed_work = (intnat) (p * caml_stat_heap_wsz * 250 - / (100 + caml_percent_free)); + computed_work = (intnat) (p * (caml_stat_heap_wsz * 250 + / (100 + caml_percent_free) + + caml_incremental_roots_count)); }else{ computed_work = (intnat) (p * caml_stat_heap_wsz * 5 / 3); } - caml_gc_message (0x40, "ordered work = %ld words\n", howmuch); caml_gc_message (0x40, "computed work = %ld words\n", computed_work); - if (howmuch == 0) howmuch = computed_work; if (caml_gc_phase == Phase_mark){ - mark_slice (howmuch); + CAML_INSTR_INT ("major/work/mark#", computed_work); + mark_slice (computed_work); + CAML_INSTR_TIME (tmr, mark_slice_name[caml_gc_subphase]); caml_gc_message (0x02, "!", 0); + /* + remaining_p = remaining_work / (Wsize_bsize (caml_stat_heap_size) * 250 + / (100 + caml_percent_free) + + caml_incremental_roots_count); + */ }else{ Assert (caml_gc_phase == Phase_sweep); - sweep_slice (howmuch); + CAML_INSTR_INT ("major/work/sweep#", computed_work); + sweep_slice (computed_work); + CAML_INSTR_TIME (tmr, "major/sweep"); caml_gc_message (0x02, "$", 0); } - if (caml_gc_phase == Phase_idle) caml_compact_heap_maybe (); + if (caml_gc_phase == Phase_idle){ + caml_compact_heap_maybe (); + CAML_INSTR_TIME (tmr, "major/check_and_compact"); + } + + finished: + caml_gc_message (0x40, "work-done = %" + ARCH_INTNAT_PRINTF_FORMAT "du\n", + (intnat) (p * 1000000)); + + /* if some of the work was not done, take it back from the credit + or spread it over the buckets. */ + p = filt_p - p; + spend = fmin (p, caml_major_work_credit); + caml_major_work_credit -= spend; + if (p > spend){ + p -= spend; + p /= caml_major_window; + for (i = 0; i < caml_major_window; i++) caml_major_ring[i] += p; + } caml_stat_major_words += caml_allocated_words; caml_allocated_words = 0; caml_dependent_allocated = 0; caml_extra_heap_resources = 0.0; if (caml_major_slice_end_hook != NULL) (*caml_major_slice_end_hook) (); - return computed_work; } -/* The minor heap must be empty when this function is called; - the minor heap is empty when this function returns. -*/ -/* This does not call caml_compact_heap_maybe because the estimations of +/* This does not call [caml_compact_heap_maybe] because the estimates of free and live memory are only valid for a cycle done incrementally. - Besides, this function is called by caml_compact_heap_maybe. + Besides, this function itself is called by [caml_compact_heap_maybe]. */ void caml_finish_major_cycle (void) { @@ -491,27 +686,12 @@ void caml_finish_major_cycle (void) caml_allocated_words = 0; } -/* Make sure the request is at least Heap_chunk_min and round it up - to a multiple of the page size. - The argument and result are both numbers of words. +/* Call this function to make sure [bsz] is greater than or equal + to both [Heap_chunk_min] and the current heap increment. */ -static asize_t clip_heap_chunk_size (asize_t request) +asize_t caml_clip_heap_chunk_wsz (asize_t wsz) { - if (request < Heap_chunk_min){ - request = Heap_chunk_min; - } - return - Wsize_bsize (((Bsize_wsize (request) + Page_size - 1) - >> Page_log) << Page_log); -} - -/* Compute the heap increment, make sure the request is at least that big, - then call clip_heap_chunk_size, then make sure the result is >= request. - The argument and result are both numbers of words. -*/ -asize_t caml_round_heap_chunk_wsz (asize_t request) -{ - asize_t result = request; + asize_t result = wsz; uintnat incr; /* Compute the heap increment as a word size. */ @@ -524,11 +704,8 @@ asize_t caml_round_heap_chunk_wsz (asize_t request) if (result < incr){ result = incr; } - result = clip_heap_chunk_size (result); - - if (result < request){ - caml_raise_out_of_memory (); - return 0; /* not reached */ + if (result < Heap_chunk_min){ + result = Heap_chunk_min; } return result; } @@ -536,21 +713,25 @@ asize_t caml_round_heap_chunk_wsz (asize_t request) /* [heap_size] is a number of bytes */ void caml_init_major_heap (asize_t heap_size) { - caml_stat_heap_wsz = Wsize_bsize (clip_heap_chunk_size (heap_size)); + int i; + + caml_stat_heap_wsz = caml_clip_heap_chunk_wsz (Wsize_bsize (heap_size)); caml_stat_top_heap_wsz = caml_stat_heap_wsz; Assert (Bsize_wsize (caml_stat_heap_wsz) % Page_size == 0); caml_heap_start = (char *) caml_alloc_for_heap (Bsize_wsize (caml_stat_heap_wsz)); if (caml_heap_start == NULL) - caml_fatal_error ("Fatal error: not enough memory for the initial heap.\n"); + caml_fatal_error ("Fatal error: cannot allocate initial major heap.\n"); Chunk_next (caml_heap_start) = NULL; + caml_stat_heap_wsz = Wsize_bsize (Chunk_size (caml_heap_start)); caml_stat_heap_chunks = 1; + caml_stat_top_heap_wsz = caml_stat_heap_wsz; if (caml_page_table_add(In_heap, caml_heap_start, caml_heap_start + Bsize_wsize (caml_stat_heap_wsz)) != 0) { - caml_fatal_error ("Fatal error: not enough memory " - "for the initial page table.\n"); + caml_fatal_error ("Fatal error: cannot allocate " + "initial page table.\n"); } caml_fl_init_merge (); @@ -566,4 +747,21 @@ void caml_init_major_heap (asize_t heap_size) heap_is_pure = 1; caml_allocated_words = 0; caml_extra_heap_resources = 0.0; + for (i = 0; i < Max_major_window; i++) caml_major_ring[i] = 0.0; +} + +void caml_set_major_window (int w){ + uintnat total = 0; + int i; + if (w == caml_major_window) return; + CAMLassert (w <= Max_major_window); + /* Collect the current work-to-do from the buckets. */ + for (i = 0; i < caml_major_window; i++){ + total += caml_major_ring[i]; + } + /* Redistribute to the new buckets. */ + for (i = 0; i < w; i++){ + caml_major_ring[i] = total / w; + } + caml_major_window = w; } diff --git a/byterun/memory.c b/byterun/memory.c index 15039b3cc..3a0711868 100644 --- a/byterun/memory.c +++ b/byterun/memory.c @@ -30,6 +30,18 @@ #define inline _inline #endif +int caml_huge_fallback_count = 0; +/* Number of times that mmapping big pages fails and we fell back to small + pages. This counter is available to the program through + [Gc.huge_fallback_count]. +*/ + +uintnat caml_use_huge_pages = 0; +/* True iff the program allocates heap chunks by mmapping huge pages. + This is set when parsing [OCAMLRUNPARAM] and must stay constant + after that. +*/ + extern uintnat caml_percent_free; /* major_gc.c */ /* Page table management */ @@ -221,25 +233,56 @@ int caml_page_table_remove(int kind, void * start, void * end) return 0; } + +/* Initialize the [alloc_for_heap] system. + This function must be called exactly once, and it must be called + before the first call to [alloc_for_heap]. + It returns 0 on success and -1 on failure. +*/ +int caml_init_alloc_for_heap (void) +{ + return 0; +} + /* Allocate a block of the requested size, to be passed to [caml_add_to_heap] later. - [request] must be a multiple of [Page_size], it is a number of bytes. - [caml_alloc_for_heap] returns NULL if the request cannot be satisfied. - The returned pointer is a hp, but the header must be initialized by - the caller. + [request] will be rounded up to some implementation-dependent size. + The caller must use [Chunk_size] on the result to recover the actual + size. + Return NULL if the request cannot be satisfied. The returned pointer + is a hp, but the header (and the contents) must be initialized by the + caller. */ char *caml_alloc_for_heap (asize_t request) { - char *mem; - void *block; - Assert (request % Page_size == 0); - mem = caml_aligned_malloc (request + sizeof (heap_chunk_head), - sizeof (heap_chunk_head), &block); - if (mem == NULL) return NULL; - mem += sizeof (heap_chunk_head); - Chunk_size (mem) = request; - Chunk_block (mem) = block; - return mem; + if (caml_use_huge_pages){ +#ifdef HAS_HUGE_PAGES + uintnat size = Round_mmap_size (sizeof (heap_chunk_head) + request); + void *block; + char *mem; + block = mmap (NULL, size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0); + if (block == MAP_FAILED) return NULL; + mem = (char *) block + sizeof (heap_chunk_head); + Chunk_size (mem) = size - sizeof (heap_chunk_head); + Chunk_block (mem) = block; + return mem; +#else + return NULL; +#endif + }else{ + char *mem; + void *block; + + request = ((request + Page_size - 1) >> Page_log) << Page_log; + mem = caml_aligned_malloc (request + sizeof (heap_chunk_head), + sizeof (heap_chunk_head), &block); + if (mem == NULL) return NULL; + mem += sizeof (heap_chunk_head); + Chunk_size (mem) = request; + Chunk_block (mem) = block; + return mem; + } } /* Use this function to free a block allocated with [caml_alloc_for_heap] @@ -247,7 +290,15 @@ char *caml_alloc_for_heap (asize_t request) */ void caml_free_for_heap (char *mem) { - free (Chunk_block (mem)); + if (caml_use_huge_pages){ +#ifdef HAS_HUGE_PAGES + munmap (Chunk_block (mem), Chunk_size (mem) + sizeof (heap_chunk_head)); +#else + CAMLassert (0); +#endif + }else{ + free (Chunk_block (mem)); + } } /* Take a chunk of memory as argument, which must be the result of a @@ -263,10 +314,9 @@ void caml_free_for_heap (char *mem) */ int caml_add_to_heap (char *m) { - Assert (Chunk_size (m) % Page_size == 0); #ifdef DEBUG /* Should check the contents of the block. */ -#endif /* debug */ +#endif /* DEBUG */ caml_gc_message (0x04, "Growing heap to %luk bytes\n", (Bsize_wsize (caml_stat_heap_wsz) + Chunk_size (m)) / 1024); @@ -314,14 +364,14 @@ static value *expand_heap (mlsize_t request) asize_t over_request, malloc_request, remain; Assert (request <= Max_wosize); - over_request = Whsize_wosize (request + request / 100 * caml_percent_free); - malloc_request = caml_round_heap_chunk_wsz (over_request); + over_request = request + request / 100 * caml_percent_free; + malloc_request = caml_clip_heap_chunk_wsz (over_request); mem = (value *) caml_alloc_for_heap (Bsize_wsize (malloc_request)); if (mem == NULL){ caml_gc_message (0x04, "No room for growing heap\n", 0); return NULL; } - remain = malloc_request; + remain = Wsize_bsize (Chunk_size (mem)); prev = hp = mem; /* FIXME find a way to do this with a call to caml_make_free_blocks */ while (Wosize_whsize (remain) > Max_wosize){ @@ -451,7 +501,8 @@ static inline value caml_alloc_shr_aux (mlsize_t wosize, tag_t tag, Assert (Hd_hp (hp) == Make_header (wosize, tag, caml_allocation_color (hp))); caml_allocated_words += Whsize_wosize (wosize); if (caml_allocated_words > caml_minor_heap_wsz){ - caml_urge_major_slice (); + CAML_INSTR_INT ("request_major/alloc_shr@", 1); + caml_request_major_slice (); } #ifdef DEBUG { @@ -512,13 +563,15 @@ CAMLexport void caml_adjust_gc_speed (mlsize_t res, mlsize_t max) if (res > max) res = max; caml_extra_heap_resources += (double) res / (double) max; if (caml_extra_heap_resources > 1.0){ + CAML_INSTR_INT ("request_major/adjust_gc_speed_1@", 1); caml_extra_heap_resources = 1.0; - caml_urge_major_slice (); + caml_request_major_slice (); } if (caml_extra_heap_resources > (double) caml_minor_heap_wsz / 2.0 / (double) caml_stat_heap_wsz) { - caml_urge_major_slice (); + CAML_INSTR_INT ("request_major/adjust_gc_speed_2@", 1); + caml_request_major_slice (); } } @@ -535,10 +588,7 @@ CAMLexport CAMLweakdef void caml_initialize (value *fp, value val) CAMLassert(Is_in_heap(fp)); *fp = val; if (Is_block (val) && Is_young (val)) { - if (caml_ref_table.ptr >= caml_ref_table.limit){ - caml_realloc_ref_table (&caml_ref_table); - } - *caml_ref_table.ptr++ = fp; + Add_to_ref_table (caml_ref_table, fp); } } @@ -586,12 +636,7 @@ CAMLexport CAMLweakdef void caml_modify (value *fp, value val) } /* Check for condition 1. */ if (Is_block(val) && Is_young(val)) { - /* Add [fp] to remembered set */ - if (caml_ref_table.ptr >= caml_ref_table.limit){ - CAMLassert (caml_ref_table.ptr == caml_ref_table.limit); - caml_realloc_ref_table (&caml_ref_table); - } - *caml_ref_table.ptr++ = fp; + Add_to_ref_table (caml_ref_table, fp); } } } diff --git a/byterun/minor_gc.c b/byterun/minor_gc.c index 54bb47332..0ffafefc4 100644 --- a/byterun/minor_gc.c +++ b/byterun/minor_gc.c @@ -27,10 +27,36 @@ #include "caml/signals.h" #include "caml/weak.h" +/* Pointers into the minor heap. + [caml_young_base] + The [malloc] block that contains the heap. + [caml_young_start] ... [caml_young_end] + The whole range of the minor heap: all young blocks are inside + this interval. + [caml_young_alloc_start]...[caml_young_alloc_end] + The allocation arena: newly-allocated blocks are carved from + this interval. + [caml_young_alloc_mid] is the mid-point of this interval. + [caml_young_ptr], [caml_young_trigger], [caml_young_limit] + These pointers are all inside the allocation arena. + - [caml_young_ptr] is where the next allocation will take place. + - [caml_young_trigger] is how far we can allocate before triggering + [caml_gc_dispatch]. Currently, it is either [caml_young_alloc_start] + or the mid-point of the allocation arena. + - [caml_young_limit] is the pointer that is compared to + [caml_young_ptr] for allocation. It is either + [caml_young_alloc_end] if a signal is pending and we are in + native code, or [caml_young_trigger]. +*/ + asize_t caml_minor_heap_wsz; static void *caml_young_base = NULL; CAMLexport value *caml_young_start = NULL, *caml_young_end = NULL; +CAMLexport value *caml_young_alloc_start = NULL, + *caml_young_alloc_mid = NULL, + *caml_young_alloc_end = NULL; CAMLexport value *caml_young_ptr = NULL, *caml_young_limit = NULL; +CAMLexport value *caml_young_trigger = NULL; CAMLexport struct caml_ref_table caml_ref_table = { NULL, NULL, NULL, NULL, NULL, 0, 0}, @@ -40,10 +66,6 @@ CAMLexport struct caml_ref_table int caml_in_minor_collection = 0; -#ifdef DEBUG -static unsigned long minor_gc_counter = 0; -#endif - /* [sz] and [rsv] are numbers of entries */ void caml_alloc_table (struct caml_ref_table *tbl, asize_t sz, asize_t rsv) { @@ -75,32 +97,73 @@ static void clear_table (struct caml_ref_table *tbl) tbl->limit = tbl->threshold; } -/* [size] is a number of bytes */ -void caml_set_minor_heap_size (asize_t size) +void caml_set_minor_heap_size (asize_t bsz) { char *new_heap; void *new_heap_base; - Assert (size >= Bsize_wsize(Minor_heap_min)); - Assert (size <= Bsize_wsize(Minor_heap_max)); - Assert (size % sizeof (value) == 0); - if (caml_young_ptr != caml_young_end) caml_minor_collection (); - Assert (caml_young_ptr == caml_young_end); - new_heap = caml_aligned_malloc(size, 0, &new_heap_base); + Assert (bsz >= Bsize_wsize(Minor_heap_min)); + Assert (bsz <= Bsize_wsize(Minor_heap_max)); + Assert (bsz % sizeof (value) == 0); + if (caml_young_ptr != caml_young_alloc_end){ + CAML_INSTR_INT ("force_minor/set_minor_heap_size@", 1); + caml_requested_minor_gc = 0; + caml_young_trigger = caml_young_alloc_mid; + caml_young_limit = caml_young_trigger; + caml_empty_minor_heap (); + } + CAMLassert (caml_young_ptr == caml_young_alloc_end); +#ifdef MMAP_INTERVAL + { + static uintnat minor_heap_mapped_bsz = 0; + uintnat new_mapped_bsz; + new_mapped_bsz = Round_mmap_size (bsz); + void *block; + + CAMLassert (caml_young_start != NULL); + if (new_mapped_bsz > minor_heap_mapped_bsz){ + uintnat addbsz = new_mapped_bsz - minor_heap_mapped_bsz; + new_heap = (char *) caml_young_start - addbsz; + block = caml_mmap_heap (new_heap, addbsz, PROT_READ | PROT_WRITE, + MAP_FIXED); + if (block != new_heap){ + if (minor_heap_mapped_bsz == 0){ + caml_fatal_error ("cannot initialize minor heap: mmap failed\n"); + }else{ + caml_raise_out_of_memory (); + } + } + new_heap_base = new_heap; + }else if (new_mapped_bsz < minor_heap_mapped_bsz){ + uintnat subbsz = minor_heap_mapped_bsz - new_mapped_bsz; + (void) caml_mmap_heap (caml_young_start, subbsz, PROT_NONE, + MAP_FIXED | MAP_NORESERVE); + new_heap_base = new_heap = (char *) caml_young_start + subbsz; + }else{ + new_heap_base = new_heap = caml_young_base; + } + } +#else + new_heap = caml_aligned_malloc(bsz, 0, &new_heap_base); if (new_heap == NULL) caml_raise_out_of_memory(); - if (caml_page_table_add(In_young, new_heap, new_heap + size) != 0) + if (caml_page_table_add(In_young, new_heap, new_heap + bsz) != 0) caml_raise_out_of_memory(); if (caml_young_start != NULL){ caml_page_table_remove(In_young, caml_young_start, caml_young_end); free (caml_young_base); } +#endif caml_young_base = new_heap_base; caml_young_start = (value *) new_heap; - caml_young_end = (value *) (new_heap + size); - caml_young_limit = caml_young_start; - caml_young_ptr = caml_young_end; - caml_minor_heap_wsz = Wsize_bsize (size); + caml_young_end = (value *) (new_heap + bsz); + caml_young_alloc_start = caml_young_start; + caml_young_alloc_mid = caml_young_alloc_start + Wsize_bsize (bsz) / 2; + caml_young_alloc_end = caml_young_end; + caml_young_trigger = caml_young_alloc_start; + caml_young_limit = caml_young_trigger; + caml_young_ptr = caml_young_alloc_end; + caml_minor_heap_wsz = Wsize_bsize (bsz); reset_table (&caml_ref_table); reset_table (&caml_weak_ref_table); @@ -232,16 +295,20 @@ void caml_empty_minor_heap (void) value **r; uintnat prev_alloc_words; - if (caml_young_ptr != caml_young_end){ + if (caml_young_ptr != caml_young_alloc_end){ if (caml_minor_gc_begin_hook != NULL) (*caml_minor_gc_begin_hook) (); + CAML_INSTR_SETUP (tmr, "minor"); prev_alloc_words = caml_allocated_words; caml_in_minor_collection = 1; caml_gc_message (0x02, "<", 0); caml_oldify_local_roots(); + CAML_INSTR_TIME (tmr, "minor/local_roots"); for (r = caml_ref_table.base; r < caml_ref_table.ptr; r++){ caml_oldify_one (**r, *r); } + CAML_INSTR_TIME (tmr, "minor/ref_table"); caml_oldify_mopup (); + CAML_INSTR_TIME (tmr, "minor/copy"); for (r = caml_weak_ref_table.base; r < caml_weak_ref_table.ptr; r++){ if (Is_block (**r) && Is_young (**r)){ if (Hd_val (**r) == 0){ @@ -258,18 +325,22 @@ void caml_empty_minor_heap (void) final_fun((value)*r); } } - if (caml_young_ptr < caml_young_start) caml_young_ptr = caml_young_start; - caml_stat_minor_words += caml_young_end - caml_young_ptr; - caml_young_ptr = caml_young_end; - caml_young_limit = caml_young_start; + CAML_INSTR_TIME (tmr, "minor/update_weak"); + CAMLassert (caml_young_ptr >= caml_young_alloc_start); + caml_stat_minor_words += caml_young_alloc_end - caml_young_ptr; + caml_gc_clock += (double) (caml_young_alloc_end - caml_young_ptr) + / caml_minor_heap_wsz; + caml_young_ptr = caml_young_alloc_end; clear_table (&caml_ref_table); clear_table (&caml_weak_ref_table); clear_table (&caml_finalize_table); caml_gc_message (0x02, ">", 0); caml_in_minor_collection = 0; - caml_stat_promoted_words += caml_allocated_words - prev_alloc_words; - ++ caml_stat_minor_collections; caml_final_empty_young (); + CAML_INSTR_TIME (tmr, "minor/finalized"); + caml_stat_promoted_words += caml_allocated_words - prev_alloc_words; + CAML_INSTR_INT ("minor/promoted#", caml_allocated_words - prev_alloc_words); + ++ caml_stat_minor_collections; if (caml_minor_gc_end_hook != NULL) (*caml_minor_gc_end_hook) (); }else{ caml_final_empty_young (); @@ -277,34 +348,81 @@ void caml_empty_minor_heap (void) #ifdef DEBUG { value *p; - for (p = caml_young_start; p < caml_young_end; ++p){ + for (p = caml_young_alloc_start; p < caml_young_alloc_end; ++p){ *p = Debug_free_minor; } - ++ minor_gc_counter; } #endif } -/* Do a minor collection and a slice of major collection, call finalisation +#ifdef CAML_INSTR +extern uintnat caml_instr_alloc_jump; +#endif + +/* Do a minor collection or a slice of major collection, call finalisation functions, etc. - Leave the minor heap empty. + Leave enough room in the minor heap to allocate at least one object. +*/ +CAMLexport void caml_gc_dispatch (void) +{ + value *trigger = caml_young_trigger; /* save old value of trigger */ +#ifdef CAML_INSTR + CAML_INSTR_SETUP(tmr, "dispatch"); + CAML_INSTR_TIME (tmr, "overhead"); + CAML_INSTR_INT ("alloc/jump#", caml_instr_alloc_jump); + caml_instr_alloc_jump = 0; +#endif + + if (trigger == caml_young_alloc_start || caml_requested_minor_gc){ + /* The minor heap is full, we must do a minor collection. */ + /* reset the pointers first because the end hooks might allocate */ + caml_requested_minor_gc = 0; + caml_young_trigger = caml_young_alloc_mid; + caml_young_limit = caml_young_trigger; + caml_empty_minor_heap (); + if (caml_gc_phase == Phase_idle) caml_major_collection_slice (-1); + CAML_INSTR_TIME (tmr, "dispatch/minor"); + + caml_final_do_calls (); + CAML_INSTR_TIME (tmr, "dispatch/finalizers"); + + while (caml_young_ptr - caml_young_alloc_start < Max_young_whsize){ + /* The finalizers or the hooks have filled up the minor heap, we must + repeat the minor collection. */ + caml_requested_minor_gc = 0; + caml_young_trigger = caml_young_alloc_mid; + caml_young_limit = caml_young_trigger; + caml_empty_minor_heap (); + if (caml_gc_phase == Phase_idle) caml_major_collection_slice (-1); + CAML_INSTR_TIME (tmr, "dispatch/finalizers_minor"); + } + } + if (trigger != caml_young_alloc_start || caml_requested_major_slice){ + /* The minor heap is half-full, do a major GC slice. */ + caml_requested_major_slice = 0; + caml_young_trigger = caml_young_alloc_start; + caml_young_limit = caml_young_trigger; + caml_major_collection_slice (-1); + CAML_INSTR_TIME (tmr, "dispatch/major"); + } +} + +/* For backward compatibility with Lablgtk: do a minor collection to + ensure that the minor heap is empty. */ CAMLexport void caml_minor_collection (void) { - caml_empty_minor_heap (); - - caml_major_collection_slice (0); - caml_force_major_slice = 0; - - caml_final_do_calls (); - - caml_empty_minor_heap (); + caml_requested_minor_gc = 1; + caml_gc_dispatch (); } CAMLexport value caml_check_urgent_gc (value extra_root) { CAMLparam1 (extra_root); - if (caml_force_major_slice) caml_minor_collection(); + if (caml_requested_major_slice || caml_requested_minor_gc){ + CAML_INSTR_INT ("force_minor/check_urgent_gc@", 1); + caml_gc_dispatch(); + } CAMLreturn (extra_root); } @@ -316,13 +434,14 @@ void caml_realloc_ref_table (struct caml_ref_table *tbl) if (tbl->base == NULL){ caml_alloc_table (tbl, caml_minor_heap_wsz / 8, 256); }else if (tbl->limit == tbl->threshold){ + CAML_INSTR_INT ("request_minor/realloc_ref_table@", 1); caml_gc_message (0x08, "ref_table threshold crossed\n", 0); tbl->limit = tbl->end; - caml_urge_major_slice (); - }else{ /* This will almost never happen with the bytecode interpreter. */ + caml_request_minor_gc (); + }else{ asize_t sz; asize_t cur_ptr = tbl->ptr - tbl->base; - Assert (caml_force_major_slice); + CAMLassert (caml_requested_minor_gc); tbl->size *= 2; sz = (tbl->size + tbl->reserve) * sizeof (value *); diff --git a/byterun/misc.c b/byterun/misc.c index 8191b83e7..28bd10cb2 100644 --- a/byterun/misc.c +++ b/byterun/misc.c @@ -17,6 +17,7 @@ #include "caml/config.h" #include "caml/misc.h" #include "caml/memory.h" +#include "caml/version.h" caml_timing_hook caml_major_slice_begin_hook = NULL; caml_timing_hook caml_major_slice_end_hook = NULL; @@ -49,7 +50,7 @@ uintnat caml_verb_gc = 0; void caml_gc_message (int level, char *msg, uintnat arg) { - if (level < 0 || (caml_verb_gc & level) != 0){ + if ((caml_verb_gc & level) != 0){ fprintf (stderr, msg, arg); fflush (stderr); } @@ -195,3 +196,81 @@ int caml_runtime_warnings_active(void) } return 1; } + +#ifdef CAML_INSTR +/* Timers for profiling GC and allocation (experimental, Linux-only) */ + +#include +#include +#include + +struct CAML_INSTR_BLOCK *CAML_INSTR_LOG = NULL; +intnat CAML_INSTR_STARTTIME, CAML_INSTR_STOPTIME; + +#define Get_time(p,i) ((p)->ts[(i)].tv_nsec + 1000000000 * (p)->ts[(i)].tv_sec) + +void CAML_INSTR_INIT (void) +{ + char *s; + + CAML_INSTR_STARTTIME = 0; + s = getenv ("OCAML_INSTR_START"); + if (s != NULL) CAML_INSTR_STARTTIME = atol (s); + CAML_INSTR_STOPTIME = LONG_MAX; + s = getenv ("OCAML_INSTR_STOP"); + if (s != NULL) CAML_INSTR_STOPTIME = atol (s); +} + +void CAML_INSTR_ATEXIT (void) +{ + int i; + struct CAML_INSTR_BLOCK *p, *prev, *next; + FILE *f = NULL; + char *fname; + + fname = getenv ("OCAML_INSTR_FILE"); + if (fname != NULL){ + char *mode = "a"; + char buf [1000]; + char *name = fname; + + if (name[0] == '@'){ + snprintf (buf, sizeof(buf), "%s.%d", name + 1, getpid ()); + name = buf; + } + if (name[0] == '+'){ + mode = "a"; + name = name + 1; + }else if (name [0] == '>' || name[0] == '-'){ + mode = "w"; + name = name + 1; + } + f = fopen (name, mode); + } + + if (f != NULL){ + /* reverse the list */ + prev = NULL; + p = CAML_INSTR_LOG; + while (p != NULL){ + next = p->next; + p->next = prev; + prev = p; + p = next; + } + CAML_INSTR_LOG = prev; + fprintf (f, "==== OCAML INSTRUMENTATION DATA %s\n", OCAML_VERSION_STRING); + for (p = CAML_INSTR_LOG; p != NULL; p = p->next){ + for (i = 0; i < p->index; i++){ + fprintf (f, "@@ %19ld %19ld %s\n", + Get_time (p, i), Get_time(p, i+1), p->tag[i+1]); + } + if (p->tag[0][0] != '\000'){ + fprintf (f, "@@ %19ld %19ld %s\n", + Get_time (p, 0), Get_time(p, p->index), p->tag[0]); + } + } + fclose (f); + } +} +#endif /* CAML_INSTR */ diff --git a/byterun/obj.c b/byterun/obj.c index ab5b59970..57932c047 100644 --- a/byterun/obj.c +++ b/byterun/obj.c @@ -111,9 +111,13 @@ CAMLprim value caml_obj_dup(value arg) to 0 or greater than the current size. algorithm: - Change the length field of the header. Make up a white object + Change the length field of the header. Make up a black object with the leftover part of the object: this is needed in the major - heap and harmless in the minor heap. + heap and harmless in the minor heap. The object cannot be white + because there may still be references to it in the ref table. By + using a black object we ensure that the ref table will be emptied + before the block is reallocated (since there must be a minor + collection within each major cycle). [newsize] is a value encoding a number of words. */ @@ -147,7 +151,7 @@ CAMLprim value caml_obj_truncate (value v, value newsize) look like a pointer because there may be some references to it in ref_table. */ Field (v, new_wosize) = - Make_header (Wosize_whsize (wosize-new_wosize), 1, Caml_white); + Make_header (Wosize_whsize (wosize-new_wosize), Abstract_tag, Caml_black); Hd_val (v) = Make_header (new_wosize, tag, color); return Val_unit; } diff --git a/byterun/roots.c b/byterun/roots.c index f812cd75a..85bbf5172 100644 --- a/byterun/roots.c +++ b/byterun/roots.c @@ -27,7 +27,7 @@ CAMLexport struct caml__roots_block *caml_local_roots = NULL; CAMLexport void (*caml_scan_roots_hook) (scanning_action f) = NULL; -/* FIXME should rename to [caml_oldify_young_roots] and synchronise with +/* FIXME should rename to [caml_oldify_minor_roots] and synchronise with asmrun/roots.c */ /* Call [caml_oldify_one] on (at least) all the roots that point to the minor heap. */ @@ -60,23 +60,54 @@ void caml_oldify_local_roots (void) /* Call [caml_darken] on all roots */ -void caml_darken_all_roots (void) +void caml_darken_all_roots_start (void) { - caml_do_roots (caml_darken); + caml_do_roots (caml_darken, 1); } -void caml_do_roots (scanning_action f) +uintnat caml_incremental_roots_count = 1; + +intnat caml_darken_all_roots_slice (intnat work) { + return 0; +} + +/* Note, in byte-code there is only one global root, so [do_globals] is + ignored and [caml_darken_all_roots_slice] does nothing. */ +void caml_do_roots (scanning_action f, int do_globals) +{ + CAML_INSTR_SETUP (tmr, "major_roots"); /* Global variables */ f(caml_global_data, &caml_global_data); + CAML_INSTR_TIME (tmr, "major_roots/global"); /* The stack and the local C roots */ caml_do_local_roots(f, caml_extern_sp, caml_stack_high, caml_local_roots); + CAML_INSTR_TIME (tmr, "major_roots/local"); /* Global C roots */ caml_scan_global_roots(f); + CAML_INSTR_TIME (tmr, "major_roots/C"); /* Finalised values */ caml_final_do_strong_roots (f); + CAML_INSTR_TIME (tmr, "major_roots/finalised"); + /* Objects in the minor heap are roots for the major GC. */ + { + value *hp; + asize_t sz, i; + for (hp = caml_young_ptr; + hp < caml_young_alloc_end; + hp += Whsize_wosize (sz)){ + sz = Wosize_hp (hp); + if (Tag_hp (hp) < No_scan_tag){ + for (i = 0; i < sz; i++){ + f(Field(Val_hp(hp), i), &Field(Val_hp(hp), i)); + } + } + } + } + CAML_INSTR_TIME (tmr, "major_roots/minor_heap"); /* Hook */ if (caml_scan_roots_hook != NULL) (*caml_scan_roots_hook)(f); + CAML_INSTR_TIME (tmr, "major_roots/hook"); } CAMLexport void caml_do_local_roots (scanning_action f, value *stack_low, diff --git a/byterun/signals.c b/byterun/signals.c index e6ec7a518..d7aae02b7 100644 --- a/byterun/signals.c +++ b/byterun/signals.c @@ -67,7 +67,7 @@ void caml_record_signal(int signal_number) #ifndef NATIVE_CODE caml_something_to_do = 1; #else - caml_young_limit = caml_young_end; + caml_young_limit = caml_young_alloc_end; #endif } @@ -157,15 +157,16 @@ void caml_execute_signal(int signal_number, int in_signal_handler) /* Arrange for a garbage collection to be performed as soon as possible */ -int volatile caml_force_major_slice = 0; +int volatile caml_requested_major_slice = 0; +int volatile caml_requested_minor_gc = 0; -void caml_urge_major_slice (void) +void caml_request_major_slice (void) { - caml_force_major_slice = 1; + caml_requested_major_slice = 1; #ifndef NATIVE_CODE caml_something_to_do = 1; #else - caml_young_limit = caml_young_end; + caml_young_limit = caml_young_alloc_end; /* This is only moderately effective on ports that cache [caml_young_limit] in a register, since [caml_modify] is called directly, not through [caml_c_call], so it may take a while before the register is reloaded @@ -173,6 +174,17 @@ void caml_urge_major_slice (void) #endif } +void caml_request_minor_gc (void) +{ + caml_requested_minor_gc = 1; +#ifndef NATIVE_CODE + caml_something_to_do = 1; +#else + caml_young_limit = caml_young_alloc_end; + /* Same remark as above in [caml_request_major_slice]. */ +#endif +} + /* OS-independent numbering of signals */ #ifndef SIGABRT diff --git a/byterun/startup.c b/byterun/startup.c index faa0e4a1f..fa43c5316 100644 --- a/byterun/startup.c +++ b/byterun/startup.c @@ -287,9 +287,13 @@ CAMLexport void caml_main(char **argv) caml_external_raise = NULL; /* Determine options and position of bytecode file */ #ifdef DEBUG - caml_verb_gc = 0xBF; + caml_verb_gc = 0x3F; #endif caml_parse_ocamlrunparam(); +#ifdef DEBUG + caml_gc_message (-1, "### OCaml runtime: debug mode ###\n", 0); +#endif + pos = 0; /* First, try argv[0] (when ocamlrun is called by a bytecode program) */ @@ -326,7 +330,7 @@ CAMLexport void caml_main(char **argv) /* Initialize the abstract machine */ caml_init_gc (caml_init_minor_heap_wsz, caml_init_heap_wsz, caml_init_heap_chunk_sz, caml_init_percent_free, - caml_init_max_percent_free); + caml_init_max_percent_free, caml_init_major_window); caml_init_stack (caml_init_max_stack_wsz); caml_init_atom_table(); caml_init_backtrace(); @@ -410,7 +414,7 @@ CAMLexport void caml_startup_code( /* Initialize the abstract machine */ caml_init_gc (caml_init_minor_heap_wsz, caml_init_heap_wsz, caml_init_heap_chunk_sz, caml_init_percent_free, - caml_init_max_percent_free); + caml_init_max_percent_free, caml_init_major_window); caml_init_stack (caml_init_max_stack_wsz); caml_init_atom_table(); caml_init_backtrace(); diff --git a/byterun/startup_aux.c b/byterun/startup_aux.c index ea9a27f1a..1d584497a 100644 --- a/byterun/startup_aux.c +++ b/byterun/startup_aux.c @@ -42,6 +42,7 @@ uintnat caml_init_minor_heap_wsz = Minor_heap_def; uintnat caml_init_heap_chunk_sz = Heap_chunk_def; uintnat caml_init_heap_wsz = Init_heap_def; uintnat caml_init_max_stack_wsz = Max_stack_def; +uintnat caml_init_major_window = Major_window_def; extern int caml_parser_trace; uintnat caml_trace_level = 0; @@ -73,6 +74,7 @@ void caml_parse_ocamlrunparam(void) case 'a': scanmult (opt, &p); caml_set_allocation_policy (p); break; case 'b': scanmult (opt, &p); caml_record_backtrace(Val_bool (p)); break; case 'h': scanmult (opt, &caml_init_heap_wsz); break; + case 'H': scanmult (opt, &caml_use_huge_pages); break; case 'i': scanmult (opt, &caml_init_heap_chunk_sz); break; case 'l': scanmult (opt, &caml_init_max_stack_wsz); break; case 'o': scanmult (opt, &caml_init_percent_free); break; @@ -82,6 +84,7 @@ void caml_parse_ocamlrunparam(void) case 's': scanmult (opt, &caml_init_minor_heap_wsz); break; case 't': scanmult (opt, &caml_trace_level); break; case 'v': scanmult (opt, &caml_verb_gc); break; + case 'w': scanmult (opt, &caml_init_major_window); break; case 'W': scanmult (opt, &caml_runtime_warnings); break; } while (*opt != '\0'){ diff --git a/byterun/sys.c b/byterun/sys.c index 506c99a5b..2eae52a55 100644 --- a/byterun/sys.c +++ b/byterun/sys.c @@ -44,14 +44,15 @@ #include "caml/alloc.h" #include "caml/debugger.h" #include "caml/fail.h" +#include "caml/gc_ctrl.h" #include "caml/instruct.h" +#include "caml/io.h" +#include "caml/misc.h" #include "caml/mlvalues.h" #include "caml/osdeps.h" #include "caml/signals.h" #include "caml/stacks.h" #include "caml/sys.h" -#include "caml/gc_ctrl.h" -#include "caml/io.h" static char * error_message(void) { @@ -135,6 +136,7 @@ CAMLprim value caml_sys_exit(value retcode) #ifndef NATIVE_CODE caml_debugger(PROGRAM_EXIT); #endif + CAML_INSTR_ATEXIT (); exit(Int_val(retcode)); return Val_unit; } diff --git a/byterun/weak.c b/byterun/weak.c index 3614d11cf..a6e9446a6 100644 --- a/byterun/weak.c +++ b/byterun/weak.c @@ -51,11 +51,7 @@ static void do_set (value ar, mlsize_t offset, value v) value old = Field (ar, offset); Field (ar, offset) = v; if (!(Is_block (old) && Is_young (old))){ - if (caml_weak_ref_table.ptr >= caml_weak_ref_table.limit){ - CAMLassert (caml_weak_ref_table.ptr == caml_weak_ref_table.limit); - caml_realloc_ref_table (&caml_weak_ref_table); - } - *caml_weak_ref_table.ptr++ = &Field (ar, offset); + Add_to_ref_table (caml_weak_ref_table, &Field (ar, offset)); } }else{ Field (ar, offset) = v; diff --git a/config/auto-aux/mmap-huge.c b/config/auto-aux/mmap-huge.c new file mode 100644 index 000000000..c4324d11f --- /dev/null +++ b/config/auto-aux/mmap-huge.c @@ -0,0 +1,49 @@ +/***********************************************************************/ +/* */ +/* OCaml */ +/* */ +/* Damien Doligez, Jane Street Group, LLC */ +/* */ +/* Copyright 2015 Institut National de Recherche en Informatique et */ +/* en Automatique. All rights reserved. This file is distributed */ +/* under the terms of the GNU Library General Public License, with */ +/* the special exception on linking described in file ../../LICENSE. */ +/* */ +/***********************************************************************/ + +#include +#include +#include + +#define huge_page_size (4 * 1024 * 1024) + +/* Test for the possible availability of huge pages. Answer yes + if the OS knows about huge pages, even if they are not available + on the build machine at configure time, because (on Linux) huge + pages can be activated and deactivated easily while the system + is running. +*/ + +int main (int argc, char *argv[]){ + void *block; + char *p; + int i, res; + block = mmap (NULL, huge_page_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, + -1, 0); + if (block == MAP_FAILED){ + block = mmap (NULL, huge_page_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, + -1, 0); + } + if (block == MAP_FAILED){ + perror ("mmap"); + return 3; + } + /*printf ("block = %p\n", block);*/ + p = (char *) block; + for (i = 0; i < huge_page_size; i += 4096){ + p[i] = (char) i; + } + return 0; +} diff --git a/configure b/configure index 1ab5098fc..e5ae7a595 100755 --- a/configure +++ b/configure @@ -40,6 +40,7 @@ dl_defs='' verbose=no with_curses=yes debugruntime=noruntimed +with_instrumented_runtime=false with_sharedlibs=yes partialld="ld -r" with_debugger=ocamldebugger @@ -144,6 +145,8 @@ while : ; do verbose=yes;; -with-debug-runtime|--with-debug-runtime) debugruntime=runtimed;; + -with-instrumented-runtime|--with-instrumented-runtime) + with_instrumented_runtime=true;; -no-debugger|--no-debugger) with_debugger="";; -no-ocamldoc|--no-ocamldoc) @@ -1687,6 +1690,16 @@ if $no_naked_pointers; then echo "#define NO_NAKED_POINTERS" >> m.h fi +# Check for mmap support for huge pages and contiguous heap +if sh ./runtest mmap-huge.c; then + has_huge_pages=true + echo "#define HAS_HUGE_PAGES" >>s.h + echo "#define HUGE_PAGE_SIZE (4 * 1024 * 1024)" >>s.h + inf "mmap supports huge pages" +else + has_huge_pages=false +fi + # Finish generated files cclibs="$cclibs $mathlib" @@ -1755,6 +1768,7 @@ if $shared_libraries_supported; then else echo "SHARED=noshared" >>Makefile fi +echo "RUNTIMEI=${with_instrumented_runtime}" >>Makefile echo "WITH_DEBUGGER=${with_debugger}" >>Makefile echo "WITH_OCAMLDOC=${with_ocamldoc}" >>Makefile echo "WITH_OCAMLBUILD=${with_ocamlbuild}" >>Makefile @@ -1845,6 +1859,10 @@ if test "$debugruntime" = "runtimed"; then inf "Debug runtime will be compiled and installed" fi +if $with_instrumented_runtime; then + inf "Instrumented runtime will be compiled and installed" +fi + inf "Additional libraries supported:" inf " $otherlibraries" diff --git a/debugger/.depend b/debugger/.depend index c9a56ac14..b62541619 100644 --- a/debugger/.depend +++ b/debugger/.depend @@ -16,8 +16,8 @@ int64ops.cmi : lexer.cmi : parser.cmi loadprinter.cmi : ../parsing/longident.cmi dynlink.cmi parameters.cmi : -parser_aux.cmi : primitives.cmi ../parsing/longident.cmi parser.cmi : parser_aux.cmi ../parsing/longident.cmi +parser_aux.cmi : primitives.cmi ../parsing/longident.cmi pattern_matching.cmi : ../typing/typedtree.cmi parser_aux.cmi debugcom.cmi pos.cmi : ../bytecomp/instruct.cmi primitives.cmi : $(UNIXDIR)/unix.cmi diff --git a/lex/.depend b/lex/.depend index 10f90c22c..455421e70 100644 --- a/lex/.depend +++ b/lex/.depend @@ -3,8 +3,8 @@ compact.cmi : lexgen.cmi cset.cmi : lexer.cmi : parser.cmi lexgen.cmi : syntax.cmi -outputbis.cmi : syntax.cmi lexgen.cmi common.cmi output.cmi : syntax.cmi lexgen.cmi compact.cmi common.cmi +outputbis.cmi : syntax.cmi lexgen.cmi common.cmi parser.cmi : syntax.cmi syntax.cmi : cset.cmi table.cmi : @@ -22,10 +22,10 @@ main.cmo : syntax.cmi parser.cmi outputbis.cmi output.cmi lexgen.cmi \ lexer.cmi cset.cmi compact.cmi common.cmi main.cmx : syntax.cmx parser.cmx outputbis.cmx output.cmx lexgen.cmx \ lexer.cmx cset.cmx compact.cmx common.cmx -outputbis.cmo : lexgen.cmi common.cmi outputbis.cmi -outputbis.cmx : lexgen.cmx common.cmx outputbis.cmi output.cmo : lexgen.cmi compact.cmi common.cmi output.cmi output.cmx : lexgen.cmx compact.cmx common.cmx output.cmi +outputbis.cmo : lexgen.cmi common.cmi outputbis.cmi +outputbis.cmx : lexgen.cmx common.cmx outputbis.cmi parser.cmo : syntax.cmi cset.cmi parser.cmi parser.cmx : syntax.cmx cset.cmx parser.cmi syntax.cmo : cset.cmi syntax.cmi diff --git a/ocamlbuild/.depend b/ocamlbuild/.depend index d6dda722e..3b67d873d 100644 --- a/ocamlbuild/.depend +++ b/ocamlbuild/.depend @@ -8,9 +8,9 @@ exit_codes.cmi : fda.cmi : slurp.cmi findlib.cmi : signatures.cmi command.cmi flags.cmi : tags.cmi command.cmi +glob.cmi : signatures.cmi glob_ast.cmi bool.cmi glob_ast.cmi : bool.cmi glob_lexer.cmi : glob_ast.cmi -glob.cmi : signatures.cmi glob_ast.cmi bool.cmi hooks.cmi : hygiene.cmi : slurp.cmi lexers.cmi : loc.cmi glob.cmi @@ -20,17 +20,17 @@ main.cmi : my_std.cmi : signatures.cmi my_unix.cmi : ocaml_arch.cmi : signatures.cmi command.cmi -ocamlbuild_executor.cmi : -ocamlbuildlight.cmi : -ocamlbuild.cmi : -ocamlbuild_plugin.cmi : -ocamlbuild_unix_plugin.cmi : -ocamlbuild_where.cmi : ocaml_compiler.cmi : tags.cmi rule.cmi pathname.cmi command.cmi ocaml_dependencies.cmi : pathname.cmi ocaml_specific.cmi : ocaml_tools.cmi : tags.cmi rule.cmi pathname.cmi command.cmi ocaml_utils.cmi : tags.cmi pathname.cmi command.cmi +ocamlbuild.cmi : +ocamlbuild_executor.cmi : +ocamlbuild_plugin.cmi : +ocamlbuild_unix_plugin.cmi : +ocamlbuild_where.cmi : +ocamlbuildlight.cmi : options.cmi : slurp.cmi signatures.cmi command.cmi param_tags.cmi : tags.cmi loc.cmi pathname.cmi : signatures.cmi @@ -75,12 +75,12 @@ findlib.cmx : my_unix.cmx my_std.cmx lexers.cmx const.cmx command.cmx \ findlib.cmi flags.cmo : tags.cmi param_tags.cmi log.cmi command.cmi bool.cmi flags.cmi flags.cmx : tags.cmx param_tags.cmx log.cmx command.cmx bool.cmx flags.cmi +glob.cmo : my_std.cmi glob_lexer.cmi glob_ast.cmi bool.cmi glob.cmi +glob.cmx : my_std.cmx glob_lexer.cmx glob_ast.cmx bool.cmx glob.cmi glob_ast.cmo : bool.cmi glob_ast.cmi glob_ast.cmx : bool.cmx glob_ast.cmi glob_lexer.cmo : glob_ast.cmi bool.cmi glob_lexer.cmi glob_lexer.cmx : glob_ast.cmx bool.cmx glob_lexer.cmi -glob.cmo : my_std.cmi glob_lexer.cmi glob_ast.cmi bool.cmi glob.cmi -glob.cmx : my_std.cmx glob_lexer.cmx glob_ast.cmx bool.cmx glob.cmi hooks.cmo : hooks.cmi hooks.cmx : hooks.cmi hygiene.cmo : slurp.cmi shell.cmi pathname.cmi options.cmi my_std.cmi \ @@ -111,22 +111,6 @@ my_unix.cmo : my_std.cmi my_unix.cmi my_unix.cmx : my_std.cmx my_unix.cmi ocaml_arch.cmo : pathname.cmi my_std.cmi command.cmi ocaml_arch.cmi ocaml_arch.cmx : pathname.cmx my_std.cmx command.cmx ocaml_arch.cmi -ocamlbuild_config.cmo : -ocamlbuild_config.cmx : -ocamlbuild_executor.cmo : ocamlbuild_executor.cmi -ocamlbuild_executor.cmx : ocamlbuild_executor.cmi -ocamlbuildlight.cmo : ocamlbuildlight.cmi -ocamlbuildlight.cmx : ocamlbuildlight.cmi -ocamlbuild.cmo : ocamlbuild_unix_plugin.cmi ocamlbuild.cmi -ocamlbuild.cmx : ocamlbuild_unix_plugin.cmx ocamlbuild.cmi -ocamlbuild_plugin.cmo : ocamlbuild_plugin.cmi -ocamlbuild_plugin.cmx : ocamlbuild_plugin.cmi -ocamlbuild_unix_plugin.cmo : ocamlbuild_executor.cmi my_unix.cmi my_std.cmi \ - exit_codes.cmi ocamlbuild_unix_plugin.cmi -ocamlbuild_unix_plugin.cmx : ocamlbuild_executor.cmx my_unix.cmx my_std.cmx \ - exit_codes.cmx ocamlbuild_unix_plugin.cmi -ocamlbuild_where.cmo : ocamlbuild_config.cmo ocamlbuild_where.cmi -ocamlbuild_where.cmx : ocamlbuild_config.cmx ocamlbuild_where.cmi ocaml_compiler.cmo : tools.cmi tags.cmi rule.cmi resource.cmi pathname.cmi \ options.cmi ocaml_utils.cmi ocaml_dependencies.cmi ocaml_arch.cmi \ my_std.cmi log.cmi command.cmi ocaml_compiler.cmi @@ -157,6 +141,22 @@ ocaml_utils.cmo : tools.cmi tags.cmi pathname.cmi param_tags.cmi options.cmi \ ocaml_utils.cmx : tools.cmx tags.cmx pathname.cmx param_tags.cmx options.cmx \ my_std.cmx log.cmx lexers.cmx flags.cmx const.cmx command.cmx \ ocaml_utils.cmi +ocamlbuild.cmo : ocamlbuild_unix_plugin.cmi ocamlbuild.cmi +ocamlbuild.cmx : ocamlbuild_unix_plugin.cmx ocamlbuild.cmi +ocamlbuild_config.cmo : +ocamlbuild_config.cmx : +ocamlbuild_executor.cmo : ocamlbuild_executor.cmi +ocamlbuild_executor.cmx : ocamlbuild_executor.cmi +ocamlbuild_plugin.cmo : ocamlbuild_plugin.cmi +ocamlbuild_plugin.cmx : ocamlbuild_plugin.cmi +ocamlbuild_unix_plugin.cmo : ocamlbuild_executor.cmi my_unix.cmi my_std.cmi \ + exit_codes.cmi ocamlbuild_unix_plugin.cmi +ocamlbuild_unix_plugin.cmx : ocamlbuild_executor.cmx my_unix.cmx my_std.cmx \ + exit_codes.cmx ocamlbuild_unix_plugin.cmi +ocamlbuild_where.cmo : ocamlbuild_config.cmo ocamlbuild_where.cmi +ocamlbuild_where.cmx : ocamlbuild_config.cmx ocamlbuild_where.cmi +ocamlbuildlight.cmo : ocamlbuildlight.cmi +ocamlbuildlight.cmx : ocamlbuildlight.cmi options.cmo : shell.cmi ocamlbuild_where.cmi ocamlbuild_config.cmo \ my_std.cmi log.cmi lexers.cmi const.cmo command.cmi options.cmi options.cmx : shell.cmx ocamlbuild_where.cmx ocamlbuild_config.cmx \ diff --git a/ocamldoc/.depend b/ocamldoc/.depend index ec461d73d..5a2df26c5 100644 --- a/ocamldoc/.depend +++ b/ocamldoc/.depend @@ -1,3 +1,11 @@ +odoc.cmo : ../typing/typedtree.cmi odoc_messages.cmo odoc_info.cmi \ + odoc_global.cmi odoc_gen.cmi odoc_config.cmi odoc_args.cmi \ + odoc_analyse.cmi ../utils/misc.cmi ../utils/config.cmi \ + ../utils/clflags.cmi +odoc.cmx : ../typing/typedtree.cmx odoc_messages.cmx odoc_info.cmx \ + odoc_global.cmx odoc_gen.cmx odoc_config.cmx odoc_args.cmx \ + odoc_analyse.cmx ../utils/misc.cmx ../utils/config.cmx \ + ../utils/clflags.cmx odoc_analyse.cmo : ../utils/warnings.cmi ../typing/types.cmi \ ../typing/typemod.cmi ../typing/typedtree.cmi ../parsing/syntaxerr.cmi \ ../driver/pparse.cmi ../parsing/parse.cmi odoc_types.cmi odoc_text.cmi \ @@ -44,8 +52,6 @@ odoc_class.cmo : ../typing/types.cmi odoc_value.cmo odoc_types.cmi \ odoc_parameter.cmo odoc_name.cmi odoc_class.cmx : ../typing/types.cmx odoc_value.cmx odoc_types.cmx \ odoc_parameter.cmx odoc_name.cmx -odoc_comments_global.cmo : odoc_comments_global.cmi -odoc_comments_global.cmx : odoc_comments_global.cmi odoc_comments.cmo : odoc_types.cmi odoc_text.cmi odoc_see_lexer.cmo \ odoc_parser.cmi odoc_misc.cmi odoc_messages.cmo odoc_merge.cmi \ odoc_lexer.cmo odoc_global.cmi odoc_cross.cmi odoc_comments_global.cmi \ @@ -54,6 +60,8 @@ odoc_comments.cmx : odoc_types.cmx odoc_text.cmx odoc_see_lexer.cmx \ odoc_parser.cmx odoc_misc.cmx odoc_messages.cmx odoc_merge.cmx \ odoc_lexer.cmx odoc_global.cmx odoc_cross.cmx odoc_comments_global.cmx \ odoc_comments.cmi +odoc_comments_global.cmo : odoc_comments_global.cmi +odoc_comments_global.cmx : odoc_comments_global.cmi odoc_config.cmo : ../utils/config.cmi odoc_config.cmi odoc_config.cmx : ../utils/config.cmx odoc_config.cmi odoc_control.cmo : @@ -144,14 +152,6 @@ odoc_misc.cmo : ../typing/types.cmi ../typing/predef.cmi ../typing/path.cmi \ odoc_misc.cmx : ../typing/types.cmx ../typing/predef.cmx ../typing/path.cmx \ odoc_types.cmx odoc_messages.cmx ../parsing/longident.cmx \ ../typing/ctype.cmx ../typing/btype.cmx odoc_misc.cmi -odoc.cmo : ../typing/typedtree.cmi odoc_messages.cmo odoc_info.cmi \ - odoc_global.cmi odoc_gen.cmi odoc_config.cmi odoc_args.cmi \ - odoc_analyse.cmi ../utils/misc.cmi ../utils/config.cmi \ - ../utils/clflags.cmi -odoc.cmx : ../typing/typedtree.cmx odoc_messages.cmx odoc_info.cmx \ - odoc_global.cmx odoc_gen.cmx odoc_config.cmx odoc_args.cmx \ - odoc_analyse.cmx ../utils/misc.cmx ../utils/config.cmx \ - ../utils/clflags.cmx odoc_module.cmo : ../typing/types.cmi odoc_value.cmo odoc_types.cmi \ odoc_type.cmo odoc_name.cmi odoc_extension.cmo odoc_exception.cmo \ odoc_class.cmo @@ -214,12 +214,12 @@ odoc_texi.cmo : ../typing/types.cmi odoc_to_text.cmo odoc_messages.cmo \ odoc_info.cmi ../parsing/asttypes.cmi odoc_texi.cmx : ../typing/types.cmx odoc_to_text.cmx odoc_messages.cmx \ odoc_info.cmx ../parsing/asttypes.cmi -odoc_text_lexer.cmo : odoc_text_parser.cmi odoc_misc.cmi -odoc_text_lexer.cmx : odoc_text_parser.cmx odoc_misc.cmx odoc_text.cmo : odoc_types.cmi odoc_text_parser.cmi odoc_text_lexer.cmo \ odoc_text.cmi odoc_text.cmx : odoc_types.cmx odoc_text_parser.cmx odoc_text_lexer.cmx \ odoc_text.cmi +odoc_text_lexer.cmo : odoc_text_parser.cmi odoc_misc.cmi +odoc_text_lexer.cmx : odoc_text_parser.cmx odoc_misc.cmx odoc_text_parser.cmo : odoc_types.cmi odoc_misc.cmi odoc_text_parser.cmi odoc_text_parser.cmx : odoc_types.cmx odoc_misc.cmx odoc_text_parser.cmi odoc_to_text.cmo : odoc_module.cmo odoc_messages.cmo odoc_info.cmi @@ -238,8 +238,8 @@ odoc_analyse.cmi : odoc_module.cmo odoc_global.cmi odoc_args.cmi : odoc_gen.cmi odoc_ast.cmi : ../typing/types.cmi ../typing/typedtree.cmi \ ../parsing/parsetree.cmi odoc_sig.cmi odoc_name.cmi odoc_module.cmo -odoc_comments_global.cmi : odoc_comments.cmi : odoc_types.cmi odoc_module.cmo +odoc_comments_global.cmi : odoc_config.cmi : odoc_cross.cmi : odoc_types.cmi odoc_module.cmo odoc_dag2html.cmi : odoc_info.cmi diff --git a/otherlibs/bigarray/.depend b/otherlibs/bigarray/.depend index c7bc32603..a1deb3649 100644 --- a/otherlibs/bigarray/.depend +++ b/otherlibs/bigarray/.depend @@ -1,27 +1,28 @@ bigarray_stubs.o: bigarray_stubs.c ../../byterun/caml/alloc.h \ - ../../byterun/caml/misc.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/mlvalues.h bigarray.h ../../byterun/caml/config.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/custom.h \ - ../../byterun/caml/fail.h ../../byterun/caml/intext.h \ - ../../byterun/caml/io.h ../../byterun/caml/hash.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h + ../../byterun/caml/misc.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/mlvalues.h bigarray.h ../../byterun/caml/config.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/custom.h \ + ../../byterun/caml/fail.h ../../byterun/caml/intext.h \ + ../../byterun/caml/io.h ../../byterun/caml/hash.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h mmap_unix.o: mmap_unix.c bigarray.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/config.h \ - ../../byterun/caml/misc.h ../../byterun/caml/custom.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/io.h ../../byterun/caml/sys.h \ - ../../byterun/caml/signals.h + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/config.h \ + ../../byterun/caml/misc.h ../../byterun/caml/custom.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/io.h ../../byterun/caml/sys.h \ + ../../byterun/caml/signals.h mmap_win32.o: mmap_win32.c bigarray.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/config.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/custom.h \ - ../../byterun/caml/fail.h ../../byterun/caml/sys.h ../unix/unixsupport.h + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/config.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/custom.h \ + ../../byterun/caml/fail.h ../../byterun/caml/sys.h \ + ../unix/unixsupport.h bigarray.cmi : bigarray.cmo : bigarray.cmi bigarray.cmx : bigarray.cmi diff --git a/otherlibs/graph/.depend b/otherlibs/graph/.depend index 30f3dac33..7c37d0e1b 100644 --- a/otherlibs/graph/.depend +++ b/otherlibs/graph/.depend @@ -1,74 +1,118 @@ -color.o: color.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h -draw.o: draw.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/mlvalues.h -dump_img.o: dump_img.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h image.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h -events.o: events.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/signals.h -fill.o: fill.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h -image.o: image.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h image.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/custom.h -make_img.o: make_img.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h image.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h -open.o: open.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/callback.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h -point_col.o: point_col.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h -sound.o: sound.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h -subwindow.o: subwindow.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h -text.o: text.c libgraph.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/misc.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/mlvalues.h +color.o: color.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h +draw.o: draw.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h +dump_img.o: dump_img.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h image.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h +events.o: events.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h +fill.o: fill.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h +image.o: image.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h image.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/custom.h +make_img.o: make_img.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h image.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h +open.o: open.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/callback.h \ + ../../byterun/caml/fail.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h +point_col.o: point_col.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h +sound.o: sound.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h +subwindow.o: subwindow.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h +text.o: text.c libgraph.h \ + \ + \ + \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/compatibility.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/misc.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h graphics.cmi : graphicsX11.cmi : graphics.cmo : graphics.cmi diff --git a/otherlibs/num/.depend b/otherlibs/num/.depend index c885abf05..ce7cc9b8c 100644 --- a/otherlibs/num/.depend +++ b/otherlibs/num/.depend @@ -1,23 +1,23 @@ +bng.o: bng.c bng.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/compatibility.h bng_amd64.c bng_digit.c bng_amd64.o: bng_amd64.c bng_arm64.o: bng_arm64.c -bng.o: bng.c bng.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/compatibility.h bng_amd64.c bng_digit.c bng_digit.o: bng_digit.c bng_ia32.o: bng_ia32.c bng_ppc.o: bng_ppc.c bng_sparc.o: bng_sparc.c nat_stubs.o: nat_stubs.c ../../byterun/caml/alloc.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/config.h ../../byterun/caml/custom.h \ - ../../byterun/caml/intext.h ../../byterun/caml/io.h \ - ../../byterun/caml/fail.h ../../byterun/caml/hash.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/mlvalues.h bng.h nat.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/config.h ../../byterun/caml/custom.h \ + ../../byterun/caml/intext.h ../../byterun/caml/io.h \ + ../../byterun/caml/fail.h ../../byterun/caml/hash.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/mlvalues.h bng.h nat.h arith_flags.cmi : arith_status.cmi : big_int.cmi : nat.cmi diff --git a/otherlibs/str/.depend b/otherlibs/str/.depend index 1d224311c..148cb312b 100644 --- a/otherlibs/str/.depend +++ b/otherlibs/str/.depend @@ -1,11 +1,11 @@ strstubs.o: strstubs.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/fail.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/fail.h str.cmi : str.cmo : str.cmi str.cmx : str.cmi diff --git a/otherlibs/systhreads/.depend b/otherlibs/systhreads/.depend index fb87b4aa9..03da2d853 100644 --- a/otherlibs/systhreads/.depend +++ b/otherlibs/systhreads/.depend @@ -1,18 +1,16 @@ st_stubs.o: st_stubs.c ../../byterun/caml/alloc.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/backtrace.h ../../byterun/caml/exec.h \ - ../../byterun/caml/callback.h ../../byterun/caml/custom.h \ - ../../byterun/caml/fail.h ../../byterun/caml/io.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/misc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/printexc.h ../../byterun/caml/roots.h \ - ../../byterun/caml/memory.h ../../byterun/caml/signals.h \ - ../../byterun/caml/stacks.h ../../byterun/caml/sys.h threads.h \ - st_posix.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/backtrace.h ../../byterun/caml/exec.h \ + ../../byterun/caml/callback.h ../../byterun/caml/custom.h \ + ../../byterun/caml/fail.h ../../byterun/caml/io.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/printexc.h ../../byterun/caml/roots.h \ + ../../byterun/caml/signals.h ../../byterun/caml/stacks.h \ + ../../byterun/caml/sys.h threads.h st_posix.h condition.cmi : mutex.cmi event.cmi : mutex.cmi : diff --git a/otherlibs/threads/.depend b/otherlibs/threads/.depend index 799714fc7..d6bda8ae4 100644 --- a/otherlibs/threads/.depend +++ b/otherlibs/threads/.depend @@ -1,17 +1,17 @@ scheduler.o: scheduler.c ../../byterun/caml/alloc.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/backtrace.h ../../byterun/caml/exec.h \ - ../../byterun/caml/callback.h ../../byterun/caml/config.h \ - ../../byterun/caml/fail.h ../../byterun/caml/io.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/misc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/printexc.h ../../byterun/caml/roots.h \ - ../../byterun/caml/memory.h ../../byterun/caml/signals.h \ - ../../byterun/caml/stacks.h ../../byterun/caml/sys.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/backtrace.h ../../byterun/caml/exec.h \ + ../../byterun/caml/callback.h ../../byterun/caml/config.h \ + ../../byterun/caml/fail.h ../../byterun/caml/io.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/misc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/printexc.h ../../byterun/caml/roots.h \ + ../../byterun/caml/memory.h ../../byterun/caml/signals.h \ + ../../byterun/caml/stacks.h ../../byterun/caml/sys.h condition.cmi : mutex.cmi event.cmi : marshal.cmi : diff --git a/otherlibs/unix/.depend b/otherlibs/unix/.depend index 4f6a63874..f03f792ae 100644 --- a/otherlibs/unix/.depend +++ b/otherlibs/unix/.depend @@ -1,644 +1,648 @@ accept.o: accept.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h access.o: access.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ + unixsupport.h addrofstr.o: addrofstr.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/fail.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/fail.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h alarm.o: alarm.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h bind.o: bind.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h chdir.o: chdir.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h chmod.o: chmod.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h chown.o: chown.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h chroot.o: chroot.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h close.o: close.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/signals.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/signals.h \ + ../../byterun/caml/mlvalues.h unixsupport.h closedir.o: closedir.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h connect.o: connect.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h unixsupport.h \ - socketaddr.h ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h \ + unixsupport.h socketaddr.h ../../byterun/caml/misc.h cst2constr.o: cst2constr.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ - ../../byterun/caml/mlvalues.h cst2constr.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ + ../../byterun/caml/mlvalues.h cst2constr.h cstringv.o: cstringv.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h -dup2.o: dup2.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h dup.o: dup.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h +dup2.o: dup2.c ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h envir.o: envir.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h errmsg.o: errmsg.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h execv.o: execv.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h execve.o: execve.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h execvp.o: execvp.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h exit.o: exit.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h fchmod.o: fchmod.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h \ + unixsupport.h fchown.o: fchown.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h \ + unixsupport.h fcntl.o: fcntl.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h fork.o: fork.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/debugger.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/debugger.h \ + ../../byterun/caml/mlvalues.h unixsupport.h ftruncate.o: ftruncate.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/io.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/io.h \ + ../../byterun/caml/signals.h unixsupport.h getaddrinfo.o: getaddrinfo.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/misc.h ../../byterun/caml/signals.h unixsupport.h \ - cst2constr.h socketaddr.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/misc.h ../../byterun/caml/signals.h unixsupport.h \ + cst2constr.h socketaddr.h getcwd.o: getcwd.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h getegid.o: getegid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h geteuid.o: geteuid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h getgid.o: getgid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h getgr.o: getgr.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h getgroups.o: getgroups.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h gethost.o: gethost.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h gethostname.o: gethostname.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h getlogin.o: getlogin.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h unixsupport.h getnameinfo.o: getnameinfo.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h getpeername.o: getpeername.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h getpid.o: getpid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h getppid.o: getppid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h getproto.o: getproto.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h getpw.o: getpw.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/fail.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/fail.h \ + unixsupport.h getserv.o: getserv.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h getsockname.o: getsockname.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h gettimeofday.o: gettimeofday.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h getuid.o: getuid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h gmtime.o: gmtime.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h initgroups.o: initgroups.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h isatty.o: isatty.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h itimer.o: itimer.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h kill.o: kill.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ - ../../byterun/caml/mlvalues.h unixsupport.h ../../byterun/caml/signals.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ + ../../byterun/caml/mlvalues.h unixsupport.h \ + ../../byterun/caml/signals.h link.o: link.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h listen.o: listen.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h lockf.o: lockf.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/signals.h \ + unixsupport.h lseek.o: lseek.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/io.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/io.h \ + ../../byterun/caml/signals.h unixsupport.h mkdir.o: mkdir.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h mkfifo.o: mkfifo.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ + unixsupport.h nice.o: nice.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h open.o: open.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/misc.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/misc.h \ + ../../byterun/caml/signals.h unixsupport.h opendir.o: opendir.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/alloc.h ../../byterun/caml/signals.h unixsupport.h pipe.o: pipe.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h unixsupport.h putenv.o: putenv.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/mlvalues.h unixsupport.h read.o: read.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h readdir.o: readdir.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/fail.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/signals.h unixsupport.h readlink.o: readlink.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/fail.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/alloc.h ../../byterun/caml/fail.h \ + ../../byterun/caml/signals.h unixsupport.h rename.o: rename.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h rewinddir.o: rewinddir.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h rmdir.o: rmdir.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h select.o: select.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h sendrecv.o: sendrecv.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h setgid.o: setgid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h setgroups.o: setgroups.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + unixsupport.h setsid.o: setsid.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h setuid.o: setuid.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h shutdown.o: shutdown.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h signals.o: signals.c ../../byterun/caml/alloc.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/fail.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/fail.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/signals.h unixsupport.h sleep.o: sleep.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/signals.h \ - ../../byterun/caml/mlvalues.h unixsupport.h -socketaddr.o: socketaddr.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h unixsupport.h socketaddr.h \ - ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/signals.h \ + ../../byterun/caml/mlvalues.h unixsupport.h socket.o: socket.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h unixsupport.h +socketaddr.o: socketaddr.c ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h unixsupport.h socketaddr.h \ + ../../byterun/caml/misc.h socketpair.o: socketpair.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h sockopt.o: sockopt.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/fail.h unixsupport.h \ - socketaddr.h ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/alloc.h ../../byterun/caml/fail.h unixsupport.h \ + socketaddr.h ../../byterun/caml/misc.h stat.o: stat.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/alloc.h ../../byterun/caml/signals.h \ - ../../byterun/caml/io.h unixsupport.h cst2constr.h nanosecond_stat.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/alloc.h ../../byterun/caml/signals.h \ + ../../byterun/caml/io.h unixsupport.h cst2constr.h nanosecond_stat.h strofaddr.o: strofaddr.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h \ - socketaddr.h ../../byterun/caml/misc.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h \ + socketaddr.h ../../byterun/caml/misc.h symlink.o: symlink.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ + unixsupport.h termios.o: termios.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h unixsupport.h time.o: time.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h unixsupport.h times.o: times.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h unixsupport.h truncate.o: truncate.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/fail.h ../../byterun/caml/signals.h \ - ../../byterun/caml/io.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/fail.h ../../byterun/caml/signals.h \ + ../../byterun/caml/io.h unixsupport.h umask.o: umask.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h unixsupport.h unixsupport.o: unixsupport.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/callback.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/fail.h unixsupport.h cst2constr.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/callback.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/fail.h unixsupport.h cst2constr.h unlink.o: unlink.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h utimes.o: utimes.c ../../byterun/caml/fail.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ - ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ - ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ - ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ - ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ - unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/misc.h \ + ../../byterun/caml/config.h ../../byterun/caml/../../config/m.h \ + ../../byterun/caml/../../config/s.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/major_gc.h \ + ../../byterun/caml/freelist.h ../../byterun/caml/minor_gc.h \ + ../../byterun/caml/address_class.h ../../byterun/caml/signals.h \ + unixsupport.h wait.o: wait.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ - ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ - ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/alloc.h \ + ../../byterun/caml/mlvalues.h ../../byterun/caml/fail.h \ + ../../byterun/caml/memory.h ../../byterun/caml/gc.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h write.o: write.c ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ - ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ - ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ - ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ - ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ - ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ - ../../byterun/caml/signals.h unixsupport.h -unixLabels.cmi : unix.cmi + ../../byterun/caml/compatibility.h ../../byterun/caml/config.h \ + ../../byterun/caml/../../config/m.h ../../byterun/caml/../../config/s.h \ + ../../byterun/caml/misc.h ../../byterun/caml/memory.h \ + ../../byterun/caml/gc.h ../../byterun/caml/mlvalues.h \ + ../../byterun/caml/major_gc.h ../../byterun/caml/freelist.h \ + ../../byterun/caml/minor_gc.h ../../byterun/caml/address_class.h \ + ../../byterun/caml/signals.h unixsupport.h unix.cmi : -unixLabels.cmo : unix.cmi unixLabels.cmi -unixLabels.cmx : unix.cmx unixLabels.cmi +unixLabels.cmi : unix.cmi unix.cmo : unix.cmi unix.cmx : unix.cmi +unixLabels.cmo : unix.cmi unixLabels.cmi +unixLabels.cmx : unix.cmx unixLabels.cmi diff --git a/stdlib/Makefile b/stdlib/Makefile index 92fa3740e..2cd5dc05d 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -45,16 +45,18 @@ installopt-prof: stdlib.p.cmxa: $(OBJS:.cmo=.p.cmx) $(CAMLOPT) -a -o stdlib.p.cmxa $(OBJS:.cmo=.p.cmx) -camlheader target_camlheader camlheaderd target_camlheaderd camlheader_ur: \ +camlheader target_camlheader camlheader_ur \ +camlheaderd target_camlheaderd \ +camlheaderi target_camlheaderi: \ header.c ../config/Makefile if $(SHARPBANGSCRIPTS); then \ - echo '#!$(BINDIR)/ocamlrun' > camlheader && \ - echo '#!$(TARGET_BINDIR)/ocamlrun' > target_camlheader && \ - echo '#!$(BINDIR)/ocamlrund' > camlheaderd && \ - echo '#!$(TARGET_BINDIR)/ocamlrund' > target_camlheaderd && \ + for suff in '' d i; do \ + echo '#!$(BINDIR)/ocamlrun'$$suff > camlheader$$suff && \ + echo '#!$(TARGET_BINDIR)/ocamlrun'$$suff > target_camlheader$$suff; \ + done && \ echo '#!' | tr -d '\012' > camlheader_ur; \ else \ - for suff in '' d; do \ + for suff in '' d i; do \ $(BYTECC) $(BYTECCCOMPOPTS) $(BYTECCLINKOPTS) \ -DRUNTIME_NAME='"$(BINDIR)/ocamlrun'$$suff'"' \ header.c -o tmpheader$(EXE) && \ diff --git a/stdlib/Makefile.nt b/stdlib/Makefile.nt index 5bc2e0edf..7aa9c40da 100644 --- a/stdlib/Makefile.nt +++ b/stdlib/Makefile.nt @@ -34,5 +34,11 @@ camlheaderd target_camlheaderd: headernt.c ../config/Makefile mv tmpheader.exe camlheaderd cp camlheaderd target_camlheaderd +camlheaderi: headernt.c ../config/Makefile + $(BYTECC) $(BYTECCCOMPOPTS) -c -I../byterun \ + -DRUNTIME_NAME='"ocamlruni"' headernt.c + $(MKEXE) -o tmpheader.exe headernt.$(O) $(EXTRALIBS) + mv tmpheader.exe camlheaderi + # TODO: do not call flexlink to build tmpheader.exe (we don't need # the export table) diff --git a/stdlib/Makefile.shared b/stdlib/Makefile.shared index e6b81c942..46e8b0fb2 100755 --- a/stdlib/Makefile.shared +++ b/stdlib/Makefile.shared @@ -25,8 +25,8 @@ CAMLOPT=$(CAMLRUN) $(OPTCOMPILER) CAMLDEP=$(CAMLRUN) ../tools/ocamldep OBJS=camlinternalFormatBasics.cmo pervasives.cmo $(OTHERS) -OTHERS=array.cmo list.cmo char.cmo bytes.cmo string.cmo sys.cmo \ - sort.cmo marshal.cmo obj.cmo \ +OTHERS=list.cmo char.cmo bytes.cmo string.cmo sys.cmo \ + sort.cmo marshal.cmo obj.cmo array.cmo \ int32.cmo int64.cmo nativeint.cmo \ lexing.cmo parsing.cmo \ set.cmo map.cmo stack.cmo queue.cmo \ @@ -43,20 +43,32 @@ OTHERS=array.cmo list.cmo char.cmo bytes.cmo string.cmo sys.cmo \ all: stdlib.cma std_exit.cmo camlheader target_camlheader camlheader_ur +ifeq "$(RUNTIMED)" "runtimed" +all: camlheaderd +endif + +ifeq "$(RUNTIMEI)" "true" +all: camlheaderi +endif + INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR) -install: install-$(RUNTIMED) +install:: cp stdlib.cma std_exit.cmo *.cmi *.cmt *.cmti *.mli *.ml \ camlheader_ur \ $(INSTALL_LIBDIR) cp target_camlheader $(INSTALL_LIBDIR)/camlheader -install-noruntimed: -.PHONY: install-noruntimed +ifeq "$(RUNTIMED)" "runtimed" +install:: + cp target_camlheaderd $(INSTALL_LIBDIR) +endif + +ifeq "$(RUNTIMEI)" "true" +install:: + cp target_camlheaderi $(INSTALL_LIBDIR) +endif -install-runtimed: target_camlheaderd - cp target_camlheaderd $(INSTALL_LIBDIR)/camlheaderd -.PHONY: install-runtimed stdlib.cma: $(OBJS) $(CAMLC) -a -o stdlib.cma $(OBJS) @@ -71,7 +83,7 @@ clean:: rm -f sys.ml clean:: - rm -f camlheader target_camlheader camlheader_ur target_camlheaderd + rm -f camlheader target_camlheader camlheader_ur target_camlheader[di] .SUFFIXES: .mli .ml .cmi .cmo .cmx .p.cmx @@ -104,6 +116,7 @@ $(OTHERS:.cmo=.p.cmx) std_exit.p.cmx: pervasives.cmx clean:: rm -f *.cm* *.$(O) *.$(A) rm -f *~ + rm -f camlheader* include .depend diff --git a/stdlib/gc.ml b/stdlib/gc.ml index 39bf343db..f3a11ab68 100644 --- a/stdlib/gc.ml +++ b/stdlib/gc.ml @@ -38,6 +38,7 @@ type control = { mutable max_overhead : int; mutable stack_limit : int; mutable allocation_policy : int; + window_size : int; };; external stat : unit -> stat = "caml_gc_stat";; @@ -50,26 +51,35 @@ external major_slice : int -> int = "caml_gc_major_slice";; external major : unit -> unit = "caml_gc_major";; external full_major : unit -> unit = "caml_gc_full_major";; external compact : unit -> unit = "caml_gc_compaction";; +external get_minor_free : unit -> int = "caml_get_minor_free" [@@noalloc] +external get_bucket : int -> int = "caml_get_major_bucket" [@@noalloc] +external get_credit : unit -> int = "caml_get_major_credit" [@@noalloc] +external huge_fallback_count : unit -> int = "caml_gc_huge_fallback_count" open Printf;; let print_stat c = let st = stat () in - fprintf c "minor_words: %.0f\n" st.minor_words; - fprintf c "promoted_words: %.0f\n" st.promoted_words; - fprintf c "major_words: %.0f\n" st.major_words; fprintf c "minor_collections: %d\n" st.minor_collections; fprintf c "major_collections: %d\n" st.major_collections; - fprintf c "heap_words: %d\n" st.heap_words; - fprintf c "heap_chunks: %d\n" st.heap_chunks; - fprintf c "top_heap_words: %d\n" st.top_heap_words; - fprintf c "live_words: %d\n" st.live_words; + fprintf c "compactions: %d\n" st.compactions; + fprintf c "\n"; + let l1 = String.length (sprintf "%.0f" st.minor_words) in + fprintf c "minor_words: %*.0f\n" l1 st.minor_words; + fprintf c "promoted_words: %*.0f\n" l1 st.promoted_words; + fprintf c "major_words: %*.0f\n" l1 st.major_words; + fprintf c "\n"; + let l2 = String.length (sprintf "%d" st.top_heap_words) in + fprintf c "top_heap_words: %*d\n" l2 st.top_heap_words; + fprintf c "heap_words: %*d\n" l2 st.heap_words; + fprintf c "live_words: %*d\n" l2 st.live_words; + fprintf c "free_words: %*d\n" l2 st.free_words; + fprintf c "largest_free: %*d\n" l2 st.largest_free; + fprintf c "fragments: %*d\n" l2 st.fragments; + fprintf c "\n"; fprintf c "live_blocks: %d\n" st.live_blocks; - fprintf c "free_words: %d\n" st.free_words; fprintf c "free_blocks: %d\n" st.free_blocks; - fprintf c "largest_free: %d\n" st.largest_free; - fprintf c "fragments: %d\n" st.fragments; - fprintf c "compactions: %d\n" st.compactions; + fprintf c "heap_chunks: %d\n" st.heap_chunks; ;; let allocated_bytes () = diff --git a/stdlib/gc.mli b/stdlib/gc.mli index 15fe0327c..c58bc5f22 100644 --- a/stdlib/gc.mli +++ b/stdlib/gc.mli @@ -141,6 +141,12 @@ type control = first-fit policy, which can be slower in some cases but can be better for programs with fragmentation problems. Default: 0. @since 3.11.0 *) + + window_size : int; + (** The size of the window used by the major GC for smoothing + out variations in its workload. This is an integer between + 1 and 50. + Default: 1. @since 4.03.0 *) } (** The GC parameters are given as a [control] record. Note that these parameters can also be initialised by setting the @@ -173,9 +179,13 @@ external minor : unit -> unit = "caml_gc_minor" (** Trigger a minor collection. *) external major_slice : int -> int = "caml_gc_major_slice";; -(** Do a minor collection and a slice of major collection. The argument - is the size of the slice, 0 to use the automatically-computed - slice size. In all cases, the result is the computed slice size. *) +(** [major_slice n] + Do a minor collection and a slice of major collection. [n] is the + size of the slice: the GC will do enough work to free (on average) + [n] words of memory. If [n] = 0, the GC will try to do enough work + to ensure that the next slice has no work to do. + Return an approximation of the work that the next slice will have + to do. *) external major : unit -> unit = "caml_gc_major" (** Do a minor collection and finish the current major collection cycle. *) @@ -198,6 +208,25 @@ val allocated_bytes : unit -> float started. It is returned as a [float] to avoid overflow problems with [int] on 32-bit machines. *) +external get_minor_free : unit -> int = "caml_get_minor_free" [@@noalloc] +(** Return the current size of the free space inside the minor heap. *) + +external get_bucket : int -> int = "caml_get_major_bucket" [@@noalloc] +(** [get_bucket n] returns the current size of the [n]-th future bucket + of the GC smoothing system. The unit is one millionth of a full GC. + Raise [Invalid_argument] if [n] is negative, return 0 if n is larger + than the smoothing window. *) + +external get_credit : unit -> int = "caml_get_major_credit" [@@noalloc] +(** [get_credit ()] returns the current size of the "work done in advance" + counter of the GC smoothing system. The unit is one millionth of a + full GC. *) + +external huge_fallback_count : unit -> int = "caml_gc_huge_fallback_count" +(** Return the number of times we tried to map huge pages and had to fall + back to small pages. This is always 0 if [OCAMLRUNPARAM] contains [H=1]. + @since 4.03.0 *) + val finalise : ('a -> unit) -> 'a -> unit (** [finalise f v] registers [f] as a finalisation function for [v]. [v] must be heap-allocated. [f] will be called with [v] as diff --git a/stdlib/obj.ml b/stdlib/obj.ml index 76a4e67b5..af37d4289 100644 --- a/stdlib/obj.ml +++ b/stdlib/obj.ml @@ -25,8 +25,10 @@ external set_tag : t -> int -> unit = "caml_obj_set_tag" external size : t -> int = "%obj_size" external field : t -> int -> t = "%obj_field" external set_field : t -> int -> t -> unit = "%obj_set_field" -let double_field x i = Array.get (obj x : float array) i -let set_double_field x i v = Array.set (obj x : float array) i v +external array_get: 'a array -> int -> 'a = "%array_safe_get" +external array_set: 'a array -> int -> 'a -> unit = "%array_safe_set" +let double_field x i = array_get (obj x : float array) i +let set_double_field x i v = array_set (obj x : float array) i v external new_block : int -> int -> t = "caml_obj_block" external dup : t -> t = "caml_obj_dup" external truncate : t -> int -> unit = "caml_obj_truncate" diff --git a/stdlib/sys.mli b/stdlib/sys.mli index 4e3f72a18..b038eb02e 100644 --- a/stdlib/sys.mli +++ b/stdlib/sys.mli @@ -119,6 +119,17 @@ val max_array_length : int array is [max_array_length/2] on 32-bit machines and [max_array_length] on 64-bit machines. *) +external runtime_variant : unit -> string = "caml_runtime_variant" +(** Return the name of the runtime variant the program is running on. + This is normally the argument given to [-runtime-variant] at compile + time, but for byte-code it can be changed after compilation. + @since 4.03.0 *) + +external runtime_parameters : unit -> string = "caml_runtime_parameters" +(** Return the value of the runtime parameters, in the same format + as the contents of the [OCAMLRUNPARAM] environment variable. + @since 4.03.0 *) + (** {6 Signal handling} *) diff --git a/stdlib/sys.mlp b/stdlib/sys.mlp index 67a7d02f2..a0e8ff72c 100644 --- a/stdlib/sys.mlp +++ b/stdlib/sys.mlp @@ -37,6 +37,8 @@ let win32 = win32 () let cygwin = cygwin () let max_array_length = max_wosize () let max_string_length = word_size / 8 * max_array_length - 1;; +external runtime_variant : unit -> string = "caml_runtime_variant" +external runtime_parameters : unit -> string = "caml_runtime_parameters" external file_exists: string -> bool = "caml_sys_file_exists" external is_directory : string -> bool = "caml_sys_is_directory" diff --git a/tools/.depend b/tools/.depend index b3f23fba6..626cdc6af 100644 --- a/tools/.depend +++ b/tools/.depend @@ -56,10 +56,10 @@ ocamldep.cmx : ../driver/pparse.cmx ../parsing/parsetree.cmi \ ../parsing/parser.cmx ../parsing/parse.cmx ../utils/misc.cmx \ ../parsing/longident.cmx ../parsing/location.cmx ../parsing/lexer.cmx \ depend.cmx ../utils/config.cmx ../driver/compenv.cmx ../utils/clflags.cmx -ocamlmklibconfig.cmo : -ocamlmklibconfig.cmx : ocamlmklib.cmo : ocamlmklibconfig.cmo ocamlmklib.cmx : ocamlmklibconfig.cmx +ocamlmklibconfig.cmo : +ocamlmklibconfig.cmx : ocamlmktop.cmo : ../utils/ccomp.cmi ocamlmktop.cmx : ../utils/ccomp.cmx ocamloptp.cmo : ../driver/main_args.cmi diff --git a/tools/Makefile.shared b/tools/Makefile.shared index 1761d3086..7bbbc4651 100644 --- a/tools/Makefile.shared +++ b/tools/Makefile.shared @@ -312,6 +312,11 @@ cmpbyt: $(CMPBYT) clean:: rm -f cmpbyt +ifeq "$(RUNTIMEI)" "true" +install:: + cp ocaml-instr-graph ocaml-instr-report $(INSTALL_BINDIR)/ +endif + # Common stuff .SUFFIXES: diff --git a/tools/ocaml-instr-graph b/tools/ocaml-instr-graph new file mode 100755 index 000000000..1547631ab --- /dev/null +++ b/tools/ocaml-instr-graph @@ -0,0 +1,109 @@ +#!/bin/bash + +######################################################################### +# # +# OCaml # +# # +# Damien Doligez, Jane Street Group, LLC # +# # +# Copyright 2015 Institut National de Recherche en Informatique et # +# en Automatique. All rights reserved. This file is distributed # +# under the terms of the Q Public License version 1.0. # +# # +######################################################################### + +# Use this script on OCAML_INSTR_FILE files + +usage () { + echo 'usage: ocaml-instr-graph file [options]' + echo ' options:' + echo ' -d names plot the data for names (default major,minor,coll,dispatch)' + echo ' -t title set the graph title' + echo ' -m n clip the values to n (default 1G)' + echo ' -rt n set the range for times to 0..n' + echo ' -rn n set the range for counts to 0..n' + echo ' -from t start at time t' + echo ' -to t stop at time t' + echo ' -help display this help message and exit' +} + +datafile= +curves=, +title= +titleset=false +max=1000000000 +ranget= +rangen= +from=0 +to=1e19 + +while [[ $# > 0 ]]; do + case $1 in + -d) curves=$curves$2,; shift 2;; + -t) title=$2; titleset=true; shift 2;; + -m) max=$2; shift 2;; + -rt) ranget="set yrange [0:$2]"; shift 2;; + -rn) rangen="set y2range [0:$2]"; shift 2;; + -from) from=$2; shift 2;; + -to) to=$2; shift 2;; + -help) usage; exit 0;; + *) datafile=$1; shift 1;; + esac +done + +if [[ "$curves" = , ]]; then + curves=,major,minor,coll,dispatch, +fi + +if ! $titleset; then + title=$datafile +fi + +tmpfile=/tmp/ocaml-instr-graph.$$ + +rm -f $tmpfile-* + +awk -v curves="$curves" -v clip=$max -v tmpfile="$tmpfile" -v from=$from \ + -v to=$to ' + function output (filename){ + time = ($2 - starttime) / 1e9; + if (time < from || time >= to) return; + if (index(curves, "," filename ",") != 0){ + gsub (/\//,":",filename); + if (filename ~ /#/){ + point = $3; + }else{ + point = ($3 - $2) / 1000; + } + if (point > clip) point = clip; + printf ("%.6f %.3f\n", time, point) >> tmpfile "-" filename; + } + } + BEGIN {starttime = 9e18;} + $1 != "@@" { next; } + $2 < starttime { starttime = $2 } + { output($4); } +' $datafile + +( echo set title \"$title\" + echo set key left top + echo set ytics nomirror + echo 'set format y "%gus"' + echo "$ranget" + echo "$rangen" + echo set y2tics nomirror + echo 'set format x "%gs"' + printf "plot " + for curve in ${curves//,/ }; do + f=$tmpfile-${curve//\//:} + if [ -f $f ]; then + case $f in + *#) printf "\"%s\" using 1:2 axes x1y2 title '%s', " "$f" "$curve";; + *) printf "\"%s\" using 1:2 title '%s', " "$f" "$curve";; + esac + fi + done + printf "\n" +) | gnuplot -p + +rm -f $tmpfile-* diff --git a/tools/ocaml-instr-report b/tools/ocaml-instr-report new file mode 100755 index 000000000..6e10deaf9 --- /dev/null +++ b/tools/ocaml-instr-report @@ -0,0 +1,159 @@ +#!/bin/awk -f + +######################################################################### +# # +# OCaml # +# # +# Damien Doligez, Jane Street Group, LLC # +# # +# Copyright 2014 Institut National de Recherche en Informatique et # +# en Automatique. All rights reserved. This file is distributed # +# under the terms of the Q Public License version 1.0. # +# # +######################################################################### + +# usage: +# ocaml-instr-report { file ... } +# generate a report from the data files (or stdin if no file is given) + +function short(n, kind, i, r){ + for (i = 0; i < 5; i++){ + if (n < 1000) break; + n /= 1000; + } + r = sprintf ("%f", n); + if (index(r, ".") == 3){ + r = substr(r, 1, 2); + }else{ + r = substr(r, 1, 3); + } + return sprintf("%s%s", r, units[kind,i]); +} + +function add(limit){ + lim[nscales] = limit; + scale["t",nscales] = short(limit, "t"); + scale["n",nscales] = short(limit, "n"); + ++ nscales; +} + +# kind is "t" (for timer) or "n" (for number) +# events are simply a special kind of timer + +BEGIN { + units["t",0] = "ns"; + units["t",1] = "us"; + units["t",2] = "ms"; + units["t",3] = "s"; + units["t",4] = "ks"; + units["t",5] = "Ms"; + + units["n",0] = ""; + units["n",1] = "k"; + units["n",2] = "M"; + units["n",3] = "G"; + units["n",4] = "T"; + units["n",5] = "P"; + + nscales=0; + add(0); + for (mul = 100; mul < 10000000000; mul *= 10){ + add(mul); + add(2.2 * mul); + add(4.7 * mul); + } +} + +function store(value, tag) { + ++ total[tag]; + for (i = 0; i < nscales; i++){ + if (value <= lim[i]){ + ++ bin[tag, lim[i]]; + val[tag, lim[i]] = value; + return; + } + } + ++ bin[tag, "off-scale"]; + val[tag, "off-scale"] = value; +} + +$1 == "@@" && $4 ~ /@/ { total[$4] += $3; } + +$1 == "@@" && $4 ~ /#/ { store($3, $4); } + +$1 == "@@" { store($3 - $2, $4); } + +function display(n, val, kind, i) { + graph_width = 35; + + if (n > 0){ + for (i = 0; i < log (n) / log (2); i++){ + printf("#"); + } + if (n == 1){ + printf(" %-6d", n); + printf ("%-*s", graph_width - 7 - i, + sprintf("(%s)", short(val, kind))); + }else{ + printf(" %-*d", graph_width - 1 - i, n); + } + }else{ + printf("%*s", graph_width, ""); + } +} + +END { + n = asorti(total,tags); + total_alloc = 0; + for (i = 1; i <= n; i++){ + t = tags[i]; + if (t ~ /^alloc/) total_alloc += total[t]; + } + for (i = 1; i <= n; i++){ + t = tags[i]; + if (t ~ /#/){ + kind = "n"; # number + }else if (t ~ /@/){ + kind = "e"; # event + }else{ + kind = "t"; # timer + } + if (kind == "e"){ + printf ("==== %-12s:%9d", t, total[t]); + if (t ~ /^alloc/){ + cumul += total[t] / total_alloc; + printf(" (%6.2f%%)", cumul * 100); + } + printf ("\n"); + continue; + }else{ + printf ("==== %s: %d\n", t, total[t]); + } + num = bin[t,0]; + found = num; + if (num == total[t] && kind == "t"){ + /* nothing */ + }else if (num > 0){ + printf (" 0: "); + display(bin[t,0], val[t, 0], kind); + printf ("%6.2f%%\n", found * 100 / total[t]); + } + for (j = 1; j < nscales; j++){ + if (found == total[t]) break; + num = bin [t, lim[j]]; + found += num; + if (found > 0){ + printf ("%5s..%-5s: ", scale[kind,j-1], scale[kind,j]); + display(num, val[t, lim[j]], kind); + printf ("%6.2f%%\n", found * 100 / total[t]); + } + } + num = bin[t, "off-scale"]; + if (num != 0){ + printf (" off scale : "); + display(bin[t, "off-scale"], val[t, "off-scale"]); + printf ("\n"); + } + printf ("====\n"); + } +} From c9003ac48fb1689eb0710bda885a8c025527aa65 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Wed, 2 Dec 2015 12:18:41 +0100 Subject: [PATCH 02/13] fix huge pages vs renaming of caml_stat_heap_size --- byterun/compact.c | 8 +++-- byterun/major_gc.c | 5 ---- stdlib/.depend | 74 +++++++++++++++++++++++----------------------- tools/.depend | 8 ++--- 4 files changed, 47 insertions(+), 48 deletions(-) diff --git a/byterun/compact.c b/byterun/compact.c index f48d05643..890feb5be 100644 --- a/byterun/compact.c +++ b/byterun/compact.c @@ -437,7 +437,9 @@ void caml_compact_heap (void) target_wsz = caml_clip_heap_chunk_wsz (target_wsz); #ifdef HAS_HUGE_PAGES - if (caml_use_huge_pages && caml_stat_heap_size <= HUGE_PAGE_SIZE) return; + if (caml_use_huge_pages + && Bsize_wsize (caml_stat_heap_wsz) <= HUGE_PAGE_SIZE) + return; #endif if (target_wsz < caml_stat_heap_wsz / 2){ @@ -489,7 +491,9 @@ void caml_compact_heap_maybe (void) if (caml_stat_heap_wsz <= 2 * caml_clip_heap_chunk_wsz (0)) return; #ifdef HAS_HUGE_PAGES - if (caml_use_huge_pages && caml_stat_heap_size <= HUGE_PAGE_SIZE) return; + if (caml_use_huge_pages + && Bsize_wsize (caml_stat_heap_size) <= HUGE_PAGE_SIZE) + return; #endif fw = 3.0 * caml_fl_cur_wsz - 2.0 * caml_fl_wsz_at_phase_change; diff --git a/byterun/major_gc.c b/byterun/major_gc.c index c2f6d78cc..17b38be8e 100644 --- a/byterun/major_gc.c +++ b/byterun/major_gc.c @@ -630,11 +630,6 @@ void caml_major_collection_slice (intnat howmuch) mark_slice (computed_work); CAML_INSTR_TIME (tmr, mark_slice_name[caml_gc_subphase]); caml_gc_message (0x02, "!", 0); - /* - remaining_p = remaining_work / (Wsize_bsize (caml_stat_heap_size) * 250 - / (100 + caml_percent_free) - + caml_incremental_roots_count); - */ }else{ Assert (caml_gc_phase == Phase_sweep); CAML_INSTR_INT ("major/work/sweep#", computed_work); diff --git a/stdlib/.depend b/stdlib/.depend index dd73d7f58..32c4afcd8 100644 --- a/stdlib/.depend +++ b/stdlib/.depend @@ -1,12 +1,12 @@ arg.cmi : -arrayLabels.cmi : array.cmi : +arrayLabels.cmi : buffer.cmi : -bytesLabels.cmi : bytes.cmi : +bytesLabels.cmi : callback.cmi : -camlinternalFormatBasics.cmi : camlinternalFormat.cmi : camlinternalFormatBasics.cmi buffer.cmi +camlinternalFormatBasics.cmi : camlinternalLazy.cmi : camlinternalMod.cmi : obj.cmi camlinternalOO.cmi : obj.cmi @@ -22,8 +22,8 @@ int32.cmi : int64.cmi : lazy.cmi : lexing.cmi : -listLabels.cmi : list.cmi : +listLabels.cmi : map.cmi : marshal.cmi : moreLabels.cmi : set.cmi map.cmi hashtbl.cmi @@ -43,32 +43,32 @@ stack.cmi : stdLabels.cmi : stringLabels.cmi listLabels.cmi bytesLabels.cmi \ arrayLabels.cmi stream.cmi : -stringLabels.cmi : string.cmi : +stringLabels.cmi : sys.cmi : weak.cmi : hashtbl.cmi arg.cmo : sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi \ arg.cmi arg.cmx : sys.cmx string.cmx printf.cmx list.cmx buffer.cmx array.cmx \ arg.cmi -arrayLabels.cmo : array.cmi arrayLabels.cmi -arrayLabels.cmx : array.cmx arrayLabels.cmi array.cmo : array.cmi array.cmx : array.cmi +arrayLabels.cmo : array.cmi arrayLabels.cmi +arrayLabels.cmx : array.cmx arrayLabels.cmi buffer.cmo : sys.cmi string.cmi bytes.cmi buffer.cmi buffer.cmx : sys.cmx string.cmx bytes.cmx buffer.cmi -bytesLabels.cmo : bytes.cmi bytesLabels.cmi -bytesLabels.cmx : bytes.cmx bytesLabels.cmi bytes.cmo : pervasives.cmi list.cmi char.cmi bytes.cmi bytes.cmx : pervasives.cmx list.cmx char.cmx bytes.cmi +bytesLabels.cmo : bytes.cmi bytesLabels.cmi +bytesLabels.cmx : bytes.cmx bytesLabels.cmi callback.cmo : obj.cmi callback.cmi callback.cmx : obj.cmx callback.cmi -camlinternalFormatBasics.cmo : camlinternalFormatBasics.cmi -camlinternalFormatBasics.cmx : camlinternalFormatBasics.cmi camlinternalFormat.cmo : sys.cmi string.cmi char.cmi \ camlinternalFormatBasics.cmi bytes.cmi buffer.cmi camlinternalFormat.cmi camlinternalFormat.cmx : sys.cmx string.cmx char.cmx \ camlinternalFormatBasics.cmx bytes.cmx buffer.cmx camlinternalFormat.cmi +camlinternalFormatBasics.cmo : camlinternalFormatBasics.cmi +camlinternalFormatBasics.cmx : camlinternalFormatBasics.cmi camlinternalLazy.cmo : obj.cmi camlinternalLazy.cmi camlinternalLazy.cmx : obj.cmx camlinternalLazy.cmi camlinternalMod.cmo : obj.cmi camlinternalOO.cmi array.cmi \ @@ -93,8 +93,8 @@ format.cmo : string.cmi pervasives.cmi camlinternalFormatBasics.cmi \ camlinternalFormat.cmi buffer.cmi format.cmi format.cmx : string.cmx pervasives.cmx camlinternalFormatBasics.cmx \ camlinternalFormat.cmx buffer.cmx format.cmi -gc.cmo : sys.cmi printf.cmi gc.cmi -gc.cmx : sys.cmx printf.cmx gc.cmi +gc.cmo : sys.cmi string.cmi printf.cmi gc.cmi +gc.cmx : sys.cmx string.cmx printf.cmx gc.cmi genlex.cmo : string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi bytes.cmi \ genlex.cmi genlex.cmx : string.cmx stream.cmx list.cmx hashtbl.cmx char.cmx bytes.cmx \ @@ -111,10 +111,10 @@ lazy.cmo : obj.cmi camlinternalLazy.cmi lazy.cmi lazy.cmx : obj.cmx camlinternalLazy.cmx lazy.cmi lexing.cmo : sys.cmi string.cmi bytes.cmi array.cmi lexing.cmi lexing.cmx : sys.cmx string.cmx bytes.cmx array.cmx lexing.cmi -listLabels.cmo : list.cmi listLabels.cmi -listLabels.cmx : list.cmx listLabels.cmi list.cmo : list.cmi list.cmx : list.cmi +listLabels.cmo : list.cmi listLabels.cmi +listLabels.cmx : list.cmx listLabels.cmi map.cmo : map.cmi map.cmx : map.cmi marshal.cmo : bytes.cmi marshal.cmi @@ -123,8 +123,8 @@ moreLabels.cmo : set.cmi map.cmi hashtbl.cmi moreLabels.cmi moreLabels.cmx : set.cmx map.cmx hashtbl.cmx moreLabels.cmi nativeint.cmo : sys.cmi pervasives.cmi nativeint.cmi nativeint.cmx : sys.cmx pervasives.cmx nativeint.cmi -obj.cmo : marshal.cmi int32.cmi array.cmi obj.cmi -obj.cmx : marshal.cmx int32.cmx array.cmx obj.cmi +obj.cmo : marshal.cmi int32.cmi obj.cmi +obj.cmx : marshal.cmx int32.cmx obj.cmi oo.cmo : camlinternalOO.cmi oo.cmi oo.cmx : camlinternalOO.cmx oo.cmi parsing.cmo : obj.cmi lexing.cmi array.cmi parsing.cmi @@ -157,18 +157,18 @@ sort.cmo : array.cmi sort.cmi sort.cmx : array.cmx sort.cmi stack.cmo : list.cmi stack.cmi stack.cmx : list.cmx stack.cmi -std_exit.cmo : -std_exit.cmx : stdLabels.cmo : stringLabels.cmi listLabels.cmi bytesLabels.cmi \ arrayLabels.cmi stdLabels.cmi stdLabels.cmx : stringLabels.cmx listLabels.cmx bytesLabels.cmx \ arrayLabels.cmx stdLabels.cmi +std_exit.cmo : +std_exit.cmx : stream.cmo : string.cmi list.cmi lazy.cmi bytes.cmi stream.cmi stream.cmx : string.cmx list.cmx lazy.cmx bytes.cmx stream.cmi -stringLabels.cmo : string.cmi stringLabels.cmi -stringLabels.cmx : string.cmx stringLabels.cmi string.cmo : pervasives.cmi list.cmi bytes.cmi string.cmi string.cmx : pervasives.cmx list.cmx bytes.cmx string.cmi +stringLabels.cmo : string.cmi stringLabels.cmi +stringLabels.cmx : string.cmx stringLabels.cmi sys.cmo : sys.cmi sys.cmx : sys.cmi weak.cmo : sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi @@ -177,24 +177,24 @@ arg.cmo : sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi \ arg.cmi arg.p.cmx : sys.cmx string.cmx printf.cmx list.cmx buffer.cmx array.cmx \ arg.cmi -arrayLabels.cmo : array.cmi arrayLabels.cmi -arrayLabels.p.cmx : array.cmx arrayLabels.cmi array.cmo : array.cmi array.p.cmx : array.cmi +arrayLabels.cmo : array.cmi arrayLabels.cmi +arrayLabels.p.cmx : array.cmx arrayLabels.cmi buffer.cmo : sys.cmi string.cmi bytes.cmi buffer.cmi buffer.p.cmx : sys.cmx string.cmx bytes.cmx buffer.cmi -bytesLabels.cmo : bytes.cmi bytesLabels.cmi -bytesLabels.p.cmx : bytes.cmx bytesLabels.cmi bytes.cmo : pervasives.cmi list.cmi char.cmi bytes.cmi bytes.p.cmx : pervasives.cmx list.cmx char.cmx bytes.cmi +bytesLabels.cmo : bytes.cmi bytesLabels.cmi +bytesLabels.p.cmx : bytes.cmx bytesLabels.cmi callback.cmo : obj.cmi callback.cmi callback.p.cmx : obj.cmx callback.cmi -camlinternalFormatBasics.cmo : camlinternalFormatBasics.cmi -camlinternalFormatBasics.p.cmx : camlinternalFormatBasics.cmi camlinternalFormat.cmo : sys.cmi string.cmi char.cmi \ camlinternalFormatBasics.cmi bytes.cmi buffer.cmi camlinternalFormat.cmi camlinternalFormat.p.cmx : sys.cmx string.cmx char.cmx \ camlinternalFormatBasics.cmx bytes.cmx buffer.cmx camlinternalFormat.cmi +camlinternalFormatBasics.cmo : camlinternalFormatBasics.cmi +camlinternalFormatBasics.p.cmx : camlinternalFormatBasics.cmi camlinternalLazy.cmo : obj.cmi camlinternalLazy.cmi camlinternalLazy.p.cmx : obj.cmx camlinternalLazy.cmi camlinternalMod.cmo : obj.cmi camlinternalOO.cmi array.cmi \ @@ -219,8 +219,8 @@ format.cmo : string.cmi pervasives.cmi camlinternalFormatBasics.cmi \ camlinternalFormat.cmi buffer.cmi format.cmi format.p.cmx : string.cmx pervasives.cmx camlinternalFormatBasics.cmx \ camlinternalFormat.cmx buffer.cmx format.cmi -gc.cmo : sys.cmi printf.cmi gc.cmi -gc.p.cmx : sys.cmx printf.cmx gc.cmi +gc.cmo : sys.cmi string.cmi printf.cmi gc.cmi +gc.p.cmx : sys.cmx string.cmx printf.cmx gc.cmi genlex.cmo : string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi bytes.cmi \ genlex.cmi genlex.p.cmx : string.cmx stream.cmx list.cmx hashtbl.cmx char.cmx bytes.cmx \ @@ -237,10 +237,10 @@ lazy.cmo : obj.cmi camlinternalLazy.cmi lazy.cmi lazy.p.cmx : obj.cmx camlinternalLazy.cmx lazy.cmi lexing.cmo : sys.cmi string.cmi bytes.cmi array.cmi lexing.cmi lexing.p.cmx : sys.cmx string.cmx bytes.cmx array.cmx lexing.cmi -listLabels.cmo : list.cmi listLabels.cmi -listLabels.p.cmx : list.cmx listLabels.cmi list.cmo : list.cmi list.p.cmx : list.cmi +listLabels.cmo : list.cmi listLabels.cmi +listLabels.p.cmx : list.cmx listLabels.cmi map.cmo : map.cmi map.p.cmx : map.cmi marshal.cmo : bytes.cmi marshal.cmi @@ -249,8 +249,8 @@ moreLabels.cmo : set.cmi map.cmi hashtbl.cmi moreLabels.cmi moreLabels.p.cmx : set.cmx map.cmx hashtbl.cmx moreLabels.cmi nativeint.cmo : sys.cmi pervasives.cmi nativeint.cmi nativeint.p.cmx : sys.cmx pervasives.cmx nativeint.cmi -obj.cmo : marshal.cmi int32.cmi array.cmi obj.cmi -obj.p.cmx : marshal.cmx int32.cmx array.cmx obj.cmi +obj.cmo : marshal.cmi int32.cmi obj.cmi +obj.p.cmx : marshal.cmx int32.cmx obj.cmi oo.cmo : camlinternalOO.cmi oo.cmi oo.p.cmx : camlinternalOO.cmx oo.cmi parsing.cmo : obj.cmi lexing.cmi array.cmi parsing.cmi @@ -283,18 +283,18 @@ sort.cmo : array.cmi sort.cmi sort.p.cmx : array.cmx sort.cmi stack.cmo : list.cmi stack.cmi stack.p.cmx : list.cmx stack.cmi -std_exit.cmo : -std_exit.cmx : stdLabels.cmo : stringLabels.cmi listLabels.cmi bytesLabels.cmi \ arrayLabels.cmi stdLabels.cmi stdLabels.p.cmx : stringLabels.cmx listLabels.cmx bytesLabels.cmx \ arrayLabels.cmx stdLabels.cmi +std_exit.cmo : +std_exit.cmx : stream.cmo : string.cmi list.cmi lazy.cmi bytes.cmi stream.cmi stream.p.cmx : string.cmx list.cmx lazy.cmx bytes.cmx stream.cmi -stringLabels.cmo : string.cmi stringLabels.cmi -stringLabels.p.cmx : string.cmx stringLabels.cmi string.cmo : pervasives.cmi list.cmi bytes.cmi string.cmi string.p.cmx : pervasives.cmx list.cmx bytes.cmx string.cmi +stringLabels.cmo : string.cmi stringLabels.cmi +stringLabels.p.cmx : string.cmx stringLabels.cmi sys.cmo : sys.cmi sys.p.cmx : sys.cmi weak.cmo : sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi diff --git a/tools/.depend b/tools/.depend index 626cdc6af..8a06516ed 100644 --- a/tools/.depend +++ b/tools/.depend @@ -19,11 +19,11 @@ cmt2annot.cmx : ../typing/untypeast.cmx ../typing/types.cmx \ cvt_emit.cmo : cvt_emit.cmx : depend.cmo : ../parsing/parsetree.cmi ../utils/misc.cmi \ - ../parsing/longident.cmi ../parsing/location.cmi ../parsing/asttypes.cmi \ - depend.cmi + ../parsing/longident.cmi ../parsing/location.cmi ../utils/clflags.cmi \ + ../parsing/asttypes.cmi depend.cmi depend.cmx : ../parsing/parsetree.cmi ../utils/misc.cmx \ - ../parsing/longident.cmx ../parsing/location.cmx ../parsing/asttypes.cmi \ - depend.cmi + ../parsing/longident.cmx ../parsing/location.cmx ../utils/clflags.cmx \ + ../parsing/asttypes.cmi depend.cmi dumpobj.cmo : ../utils/tbl.cmi opnames.cmo ../bytecomp/opcodes.cmo \ ../parsing/location.cmi ../bytecomp/lambda.cmi ../bytecomp/instruct.cmi \ ../typing/ident.cmi ../utils/config.cmi ../bytecomp/cmo_format.cmi \ From 43d4a60bcb4420613c6f777a90cd263623ac1a90 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Wed, 2 Dec 2015 17:36:03 +0100 Subject: [PATCH 03/13] fix sign error in GC call --- asmcomp/amd64/emit.mlp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp index 15ec7a718..9ba25b859 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -277,7 +277,7 @@ let call_gc_sites = ref ([] : gc_call list) let emit_call_gc gc = def_label gc.gc_lbl; - I.sub (int gc.gc_size) r15; + I.add (int gc.gc_size) r15; emit_call "caml_call_gc"; def_label gc.gc_frame; I.jmp (label gc.gc_return_lbl) From 5c6bd461d552b9ff3a3937df5e2b2ca95b114b70 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Wed, 2 Dec 2015 17:36:47 +0100 Subject: [PATCH 04/13] remove duplicate macro definitions --- byterun/caml/address_class.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/byterun/caml/address_class.h b/byterun/caml/address_class.h index c6ff8896d..16134f04b 100644 --- a/byterun/caml/address_class.h +++ b/byterun/caml/address_class.h @@ -23,11 +23,6 @@ /* Use the following macros to test an address for the different classes it might belong to. */ -#define Is_in_heap(a) (Classify_addr(a) & In_heap) -#define Is_in_heap_or_young(a) (Classify_addr(a) & (In_heap | In_young)) -#define Is_in_value_area(a) \ - (Classify_addr(a) & (In_heap | In_young | In_static_data)) - #define Is_young(val) \ (Assert (Is_block (val)), \ (addr)(val) < (addr)caml_young_end && (addr)(val) > (addr)caml_young_start) From ff8e89124234915e2c9fbc65c081e9f4329ed650 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Wed, 2 Dec 2015 17:40:07 +0100 Subject: [PATCH 05/13] deduplicate definition of `inline` --- byterun/caml/config.h | 9 +++++++++ byterun/extern.c | 5 +---- byterun/intern.c | 5 +---- byterun/memory.c | 5 +---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/byterun/caml/config.h b/byterun/caml/config.h index 9b94917fa..febc72167 100644 --- a/byterun/caml/config.h +++ b/byterun/caml/config.h @@ -112,6 +112,15 @@ typedef uint64_t uintnat; #define ARCH_FLOAT_ENDIANNESS 0x01234567 #endif + +/* We use static inline functions in some cases instead of duplicating + code but the MSVC compiler has a slightly different syntax. */ + +#ifdef _MSC_VER +#define inline _inline +#endif + + /* We use threaded code interpretation if the compiler provides labels as first-class values (GCC 2.x). */ diff --git a/byterun/extern.c b/byterun/extern.c index 8bdaf3090..03c0c2956 100644 --- a/byterun/extern.c +++ b/byterun/extern.c @@ -17,6 +17,7 @@ #include #include "caml/alloc.h" +#include "caml/config.h" #include "caml/custom.h" #include "caml/fail.h" #include "caml/gc.h" @@ -28,10 +29,6 @@ #include "caml/mlvalues.h" #include "caml/reverse.h" -#ifdef _MSC_VER -#define inline _inline -#endif - static uintnat obj_counter; /* Number of objects emitted so far */ static uintnat size_32; /* Size in words of 32-bit block for struct. */ static uintnat size_64; /* Size in words of 64-bit block for struct. */ diff --git a/byterun/intern.c b/byterun/intern.c index e327d4141..58ddcd6e0 100644 --- a/byterun/intern.c +++ b/byterun/intern.c @@ -19,6 +19,7 @@ #include #include "caml/alloc.h" #include "caml/callback.h" +#include "caml/config.h" #include "caml/custom.h" #include "caml/fail.h" #include "caml/gc.h" @@ -30,10 +31,6 @@ #include "caml/misc.h" #include "caml/reverse.h" -#ifdef _MSC_VER -#define inline _inline -#endif - static unsigned char * intern_src; /* Reading pointer in block holding input data. */ diff --git a/byterun/memory.c b/byterun/memory.c index 3a0711868..6dc8defe7 100644 --- a/byterun/memory.c +++ b/byterun/memory.c @@ -14,6 +14,7 @@ #include #include #include "caml/address_class.h" +#include "caml/config.h" #include "caml/fail.h" #include "caml/freelist.h" #include "caml/gc.h" @@ -26,10 +27,6 @@ #include "caml/mlvalues.h" #include "caml/signals.h" -#ifdef _MSC_VER -#define inline _inline -#endif - int caml_huge_fallback_count = 0; /* Number of times that mmapping big pages fails and we fell back to small pages. This counter is available to the program through From 0e486d579596bb3ab2e6411303f162434446774c Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Wed, 2 Dec 2015 17:41:00 +0100 Subject: [PATCH 06/13] transform `Add_to_ref_table` macro into inline function --- byterun/caml/minor_gc.h | 19 ++++++++++--------- byterun/major_gc.c | 4 ++-- byterun/memory.c | 4 ++-- byterun/weak.c | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/byterun/caml/minor_gc.h b/byterun/caml/minor_gc.h index b6feccbf6..04f6f9953 100644 --- a/byterun/caml/minor_gc.h +++ b/byterun/caml/minor_gc.h @@ -16,6 +16,7 @@ #include "address_class.h" +#include "config.h" CAMLextern value *caml_young_start, *caml_young_end; CAMLextern value *caml_young_alloc_start, *caml_young_alloc_end; @@ -36,15 +37,6 @@ struct caml_ref_table { CAMLextern struct caml_ref_table caml_ref_table, caml_weak_ref_table, caml_finalize_table; -#define Add_to_ref_table(tbl, p) \ - do { \ - if ((tbl).ptr >= (tbl).limit){ \ - Assert ((tbl).ptr == (tbl).limit); \ - caml_realloc_ref_table (&(tbl)); \ - } \ - *(tbl).ptr++ = (p); \ - } while(0) - extern void caml_set_minor_heap_size (asize_t); /* size in bytes */ extern void caml_empty_minor_heap (void); CAMLextern void caml_gc_dispatch (void); @@ -61,4 +53,13 @@ extern void caml_oldify_mopup (void); } \ }while(0) +static inline void add_to_ref_table (struct caml_ref_table *tbl, value *p) +{ + if (tbl->ptr >= tbl->limit){ + CAMLassert (tbl->ptr == tbl->limit); + caml_realloc_ref_table (tbl); + } + *tbl->ptr++ = p; +} + #endif /* CAML_MINOR_GC_H */ diff --git a/byterun/major_gc.c b/byterun/major_gc.c index 17b38be8e..42d98de14 100644 --- a/byterun/major_gc.c +++ b/byterun/major_gc.c @@ -224,7 +224,7 @@ static void mark_slice (intnat work) }else{ Field (v, i) = f; if (Is_block (f) && Is_young (f) && !Is_young (child)) - Add_to_ref_table (caml_ref_table, &Field (v, i)); + add_to_ref_table (&caml_ref_table, &Field (v, i)); } }else if (Tag_hd(chd) == Infix_tag) { child -= Infix_offset_val(child); @@ -329,7 +329,7 @@ static void mark_slice (intnat work) }else{ Field (cur, i) = curfield = f; if (Is_block (f) && Is_young (f)) - Add_to_ref_table (caml_weak_ref_table, &Field (cur, i)); + add_to_ref_table (&caml_weak_ref_table, &Field (cur, i)); goto weak_again; } } diff --git a/byterun/memory.c b/byterun/memory.c index 6dc8defe7..54391b7d3 100644 --- a/byterun/memory.c +++ b/byterun/memory.c @@ -585,7 +585,7 @@ CAMLexport CAMLweakdef void caml_initialize (value *fp, value val) CAMLassert(Is_in_heap(fp)); *fp = val; if (Is_block (val) && Is_young (val)) { - Add_to_ref_table (caml_ref_table, fp); + add_to_ref_table (&caml_ref_table, fp); } } @@ -633,7 +633,7 @@ CAMLexport CAMLweakdef void caml_modify (value *fp, value val) } /* Check for condition 1. */ if (Is_block(val) && Is_young(val)) { - Add_to_ref_table (caml_ref_table, fp); + add_to_ref_table (&caml_ref_table, fp); } } } diff --git a/byterun/weak.c b/byterun/weak.c index a6e9446a6..8be7a1810 100644 --- a/byterun/weak.c +++ b/byterun/weak.c @@ -51,7 +51,7 @@ static void do_set (value ar, mlsize_t offset, value v) value old = Field (ar, offset); Field (ar, offset) = v; if (!(Is_block (old) && Is_young (old))){ - Add_to_ref_table (caml_weak_ref_table, &Field (ar, offset)); + add_to_ref_table (&caml_weak_ref_table, &Field (ar, offset)); } }else{ Field (ar, offset) = v; From b7562a79884508cced4b9fc7ff3aa71699af9680 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Thu, 3 Dec 2015 18:09:04 +0100 Subject: [PATCH 07/13] add comments --- byterun/array.c | 2 ++ byterun/caml/gc_ctrl.h | 12 ++++++++++-- byterun/finalise.c | 4 ++-- byterun/gc_ctrl.c | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/byterun/array.c b/byterun/array.c index 5977e66f7..35ced4644 100644 --- a/byterun/array.c +++ b/byterun/array.c @@ -187,6 +187,8 @@ CAMLprim value caml_make_vect(value len, value init) for (i = 0; i < size; i++) Field(res, i) = init; } else if (Is_block(init) && Is_young(init)) { + /* We don't want to create so many major-to-minor references, + so [init] is moved to the major heap by doing a minor GC. */ CAML_INSTR_INT ("force_minor/make_vect@", 1); caml_request_minor_gc (); caml_gc_dispatch (); diff --git a/byterun/caml/gc_ctrl.h b/byterun/caml/gc_ctrl.h index 576182517..93af2b2ed 100644 --- a/byterun/caml/gc_ctrl.h +++ b/byterun/caml/gc_ctrl.h @@ -31,8 +31,16 @@ extern intnat uintnat caml_normalize_heap_increment (uintnat); -void caml_init_gc (uintnat, uintnat, uintnat, - uintnat, uintnat, uintnat); +/* + minor_size: cf. minor_heap_size in gc.mli + major_size: Size in words of the initial major heap + major_incr: cf. major_heap_increment in gc.mli + percent_fr: cf. space_overhead in gc.mli + percent_m : cf. max_overhead in gc.mli + window : cf. window_size in gc.mli +*/ +void caml_init_gc (uintnat minor_size, uintnat major_size, uintnat major_incr, + uintnat percent_fr, uintnat percent_m, uintnat window); #ifdef DEBUG diff --git a/byterun/finalise.c b/byterun/finalise.c index a6a7dc613..4c8c2e17f 100644 --- a/byterun/finalise.c +++ b/byterun/finalise.c @@ -59,7 +59,7 @@ static void alloc_to_do (int size) } } -/* Find white finalisable values, put them in the finalising set, and +/* Find white finalisable values, move them to the finalising set, and darken them. */ void caml_final_update (void) @@ -95,7 +95,7 @@ void caml_final_update (void) young = j; to_do_tl->size = k; for (i = 0; i < k; i++){ - /* Note that item may alredy be dark due to multiple entries in + /* Note that item may already be dark due to multiple entries in the final table. */ caml_darken (to_do_tl->item[i].val, NULL); } diff --git a/byterun/gc_ctrl.c b/byterun/gc_ctrl.c index 837946424..cd61d6111 100644 --- a/byterun/gc_ctrl.c +++ b/byterun/gc_ctrl.c @@ -419,6 +419,7 @@ CAMLprim value caml_gc_set(value v) caml_allocation_policy); } + /* This field was added in 4.03.0. */ if (Wosize_val (v) >= 8){ int old_window = caml_major_window; caml_set_major_window (norm_window (Long_val (Field (v, 7)))); From 99e265459f50d3d821d992202d7dadee1d5cc13b Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Fri, 4 Dec 2015 12:10:53 +0100 Subject: [PATCH 08/13] fix bug in incremental marking of roots --- asmrun/roots.c | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/asmrun/roots.c b/asmrun/roots.c index 09e560a92..729d198d3 100644 --- a/asmrun/roots.c +++ b/asmrun/roots.c @@ -335,7 +335,7 @@ void caml_oldify_local_roots (void) if (caml_scan_roots_hook != NULL) (*caml_scan_roots_hook)(&caml_oldify_one); } -static mlsize_t incr_roots_i, incr_roots_j, roots_count; +static mlsize_t incr_roots_i, incr_roots_j, incr_roots_sz, roots_count; static value *incr_roots_glob; uintnat caml_incremental_roots_count = 0; @@ -346,10 +346,22 @@ uintnat caml_incremental_roots_count = 0; void caml_darken_all_roots_start (void) { caml_do_roots (caml_darken, 0); - incr_roots_i = 0; - incr_roots_glob = caml_globals[incr_roots_i]; - incr_roots_j = 0; roots_count = 0; + for (incr_roots_i = 0; caml_globals[incr_roots_i] != 0; incr_roots_i++) { + for(incr_roots_glob = caml_globals[incr_roots_i]; *incr_roots_glob != 0; + incr_roots_glob++) { + incr_roots_sz = Wosize_val (*incr_roots_glob); + for (incr_roots_j = 0; incr_roots_j < incr_roots_sz; incr_roots_j++){ + goto setup_done; + } + } + } + setup_done: + /* At this point, either the loop finished because there are no roots, + and we have `caml_globals[incr_roots_i] == 0`, or the loop indices are + pointing to the first root. + */ + ; } /* Call [caml_darken] on at most [work] global roots. Return the @@ -358,30 +370,30 @@ void caml_darken_all_roots_start (void) */ intnat caml_darken_all_roots_slice (intnat work) { - mlsize_t j = incr_roots_j; - mlsize_t sz; intnat work_done = 0; CAML_INSTR_SETUP (tmr, ""); - if (incr_roots_glob == NULL) goto finished; - sz = Wosize_val (*incr_roots_glob); + if (caml_globals[incr_roots_i] == 0) goto finished; while (work_done < work){ - while (j >= sz){ + /* The loop indices are pointing to a root. We darken it, then increment + the loop indices. We maintain this invariant, or exit the loop + with `caml_globals[incr_roots_i] == 0`. */ + caml_darken (Field (*incr_roots_glob, incr_roots_j), + &Field (*incr_roots_glob, incr_roots_j)); + ++ work_done; + ++ incr_roots_j; + while (incr_roots_j >= incr_roots_sz){ ++ incr_roots_glob; while (*incr_roots_glob == 0){ ++ incr_roots_i; + if (caml_globals[incr_roots_i] == 0) goto finished; incr_roots_glob = caml_globals[incr_roots_i]; - if (incr_roots_glob == 0) goto finished; } - j = 0; - sz = Wosize_val (*incr_roots_glob); + incr_roots_sz = Wosize_val (*incr_roots_glob); + incr_roots_j = 0; } - caml_darken (Field (*incr_roots_glob, j), &Field (*incr_roots_glob, j)); - ++ work_done; - ++ j; } finished: - incr_roots_j = j; roots_count += work_done; if (work_done < work){ caml_incremental_roots_count = roots_count; From 5b8296c93353f2ffa7a0b54874e07c69f27c718f Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Fri, 4 Dec 2015 14:40:37 +0100 Subject: [PATCH 09/13] Revert the change to the GC calling protocol: the allocation pointer does not need to point to a valid header when the GC is called. On the other hand, the major GC can only start a cycle when the minor heap (allocation arena) is empty. --- asmcomp/amd64/emit.mlp | 3 --- asmcomp/arm/emit.mlp | 8 +------- asmcomp/arm64/emit.mlp | 7 ++----- asmcomp/i386/emit.mlp | 2 +- asmcomp/notes-on-changes-to-gc-interface.txt | 19 ------------------- asmcomp/power/emit.mlp | 16 +++++++--------- asmrun/amd64.S | 4 ---- asmrun/amd64nt.asm | 4 ---- asmrun/arm.S | 14 +++++--------- asmrun/arm64.S | 14 +++++--------- asmrun/i386.S | 7 ++++--- asmrun/i386nt.asm | 7 ++++--- asmrun/power.S | 2 +- asmrun/roots.c | 16 ---------------- asmrun/sparc.S | 5 ++--- byterun/major_gc.c | 8 ++++++-- byterun/minor_gc.c | 2 ++ byterun/roots.c | 16 ---------------- 18 files changed, 40 insertions(+), 114 deletions(-) delete mode 100644 asmcomp/notes-on-changes-to-gc-interface.txt diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp index 9ba25b859..4c012009e 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -269,7 +269,6 @@ let record_frame live dbg = type gc_call = { gc_lbl: label; (* Entry label *) - gc_size: int; (* How much to add back to [young_ptr]*) gc_return_lbl: label; (* Where to branch after GC *) gc_frame: label } (* Label of frame descriptor *) @@ -277,7 +276,6 @@ let call_gc_sites = ref ([] : gc_call list) let emit_call_gc gc = def_label gc.gc_lbl; - I.add (int gc.gc_size) r15; emit_call "caml_call_gc"; def_label gc.gc_frame; I.jmp (label gc.gc_return_lbl) @@ -582,7 +580,6 @@ let emit_instr fallthrough i = I.lea (mem64 NONE 8 R15) (res i 0); call_gc_sites := { gc_lbl = lbl_call_gc; - gc_size = n; gc_return_lbl = lbl_redo; gc_frame = lbl_frame } :: !call_gc_sites end else begin diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp index a7b10e76a..904d800dc 100644 --- a/asmcomp/arm/emit.mlp +++ b/asmcomp/arm/emit.mlp @@ -125,18 +125,13 @@ let record_frame live dbg = type gc_call = { gc_lbl: label; (* Entry label *) - gc_size : int; (* How much to add back to [young_ptr] *) gc_return_lbl: label; (* Where to branch after GC *) gc_frame_lbl: label } (* Label of frame descriptor *) let call_gc_sites = ref ([] : gc_call list) let emit_call_gc gc = - `{emit_label gc.gc_lbl}:`; - ignore (decompose_intconst - (Int32.of_int gc.gc_size) - (fun i -> ` add alloc_ptr, alloc_ptr, #{emit_int32 i}\n`)); - ` {emit_call "caml_call_gc"}\n`; + `{emit_label gc.gc_lbl}: {emit_call "caml_call_gc"}\n`; `{emit_label gc.gc_frame_lbl}: b {emit_label gc.gc_return_lbl}\n` (* Record calls to caml_ml_array_bound_error. @@ -557,7 +552,6 @@ let emit_instr i = ` bcc {emit_label lbl_call_gc}\n`; call_gc_sites := { gc_lbl = lbl_call_gc; - gc_size = i; gc_return_lbl = lbl_redo; gc_frame_lbl = lbl_frame } :: !call_gc_sites; 3 + ninstr diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp index 7f34a2e0f..1b9434442 100644 --- a/asmcomp/arm64/emit.mlp +++ b/asmcomp/arm64/emit.mlp @@ -145,15 +145,13 @@ let record_frame live dbg = type gc_call = { gc_lbl: label; (* Entry label *) - gc_size: int; (* How much to add back to [young_ptr] *) gc_return_lbl: label; (* Where to branch after GC *) gc_frame_lbl: label } (* Label of frame descriptor *) let call_gc_sites = ref ([] : gc_call list) let emit_call_gc gc = - `{emit_label gc.gc_lbl}: add {emit_reg reg_alloc_ptr}, {emit_reg reg_alloc_ptr}, #{emit_int gc.gc_size}\n`; - ` bl {emit_symbol "caml_call_gc"}\n`; + `{emit_label gc.gc_lbl}: bl {emit_symbol "caml_call_gc"}\n`; `{emit_label gc.gc_frame_lbl}: b {emit_label gc.gc_return_lbl}\n` (* Record calls to caml_ml_array_bound_error. @@ -364,7 +362,7 @@ let num_call_gc_and_check_bound_points instr = let max_out_of_line_code_offset instr ~num_call_gc ~num_check_bound = if num_call_gc < 1 && num_check_bound < 1 then 0 else begin - let size_of_call_gc = 3 in + let size_of_call_gc = 2 in let size_of_check_bound = 1 in let size_of_last_thing = (* Call-GC points come before check-bound points. *) @@ -530,7 +528,6 @@ let assembly_code_for_allocation i ~n ~far = end; call_gc_sites := { gc_lbl = lbl_call_gc; - gc_size = n; gc_return_lbl = lbl_redo; gc_frame_lbl = lbl_frame } :: !call_gc_sites end else begin diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp index 4a89fad11..abc550333 100644 --- a/asmcomp/i386/emit.mlp +++ b/asmcomp/i386/emit.mlp @@ -612,11 +612,11 @@ let emit_instr fallthrough i = def_label lbl_redo; I.mov (sym32 "caml_young_ptr") eax; I.sub (int n) eax; + I.mov eax (sym32 "caml_young_ptr"); I.cmp (sym32 "caml_young_limit") eax; let lbl_call_gc = new_label() in let lbl_frame = record_frame_label i.live Debuginfo.none in I.jb (label lbl_call_gc); - I.mov eax (sym32 "caml_young_ptr"); I.lea (mem32 NONE 4 RAX) (reg i.res.(0)); call_gc_sites := { gc_lbl = lbl_call_gc; diff --git a/asmcomp/notes-on-changes-to-gc-interface.txt b/asmcomp/notes-on-changes-to-gc-interface.txt deleted file mode 100644 index d5878cbd9..000000000 --- a/asmcomp/notes-on-changes-to-gc-interface.txt +++ /dev/null @@ -1,19 +0,0 @@ -Note: only the AMD64/unix has had a significant amount of testing. - - -sparc: save the requested size in %g2, [caml_call_gc] uses it to - recover the old value of [caml_young_ptr]. - -i386: do not write back [caml_young_ptr] in the "gc" branch, only in - the "allocation success" branch. - -power: same as i386: do not adjust the allocation register in the GC branch - -ARM: adjust the pointer back to its initial value before calling - [caml_call_gc]. - -ARM64: same as ARM - -AMD64_nt: same as ARM - -AMD64: same as ARM diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp index dc9c92248..fe1e1f306 100644 --- a/asmcomp/power/emit.mlp +++ b/asmcomp/power/emit.mlp @@ -712,24 +712,22 @@ let emit_instr i = emit_load_store storeinstr addr i.arg 1 i.arg.(0) | Lop(Ialloc n) -> if !call_gc_label = 0 then call_gc_label := new_label(); - ` addi 11, 31, {emit_int(-n)}\n`; - ` {emit_string cmplg} 11, 30\n`; - ` addi {emit_reg i.res.(0)}, 11, {emit_int size_addr}\n`; + ` addi 31, 31, {emit_int(-n)}\n`; + ` {emit_string cmplg} 31, 30\n`; + ` addi {emit_reg i.res.(0)}, 31, {emit_int size_addr}\n`; ` bltl {emit_label !call_gc_label}\n`; (* Exactly 4 instructions after the beginning of the alloc sequence *) - record_frame i.live Debuginfo.none; - ` mr 31, 11\n` + record_frame i.live Debuginfo.none | Lop(Ispecific(Ialloc_far n)) -> if !call_gc_label = 0 then call_gc_label := new_label(); let lbl = new_label() in - ` addi 11, 31, {emit_int(-n)}\n`; - ` {emit_string cmplg} 11, 30\n`; + ` addi 31, 31, {emit_int(-n)}\n`; + ` {emit_string cmplg} 31, 30\n`; ` bge {emit_label lbl}\n`; ` bl {emit_label !call_gc_label}\n`; (* Exactly 4 instructions after the beginning of the alloc sequence *) record_frame i.live Debuginfo.none; - `{emit_label lbl}: addi {emit_reg i.res.(0)}, 11, {emit_int size_addr}\n`; - ` mr 31, 11\n` + `{emit_label lbl}: addi {emit_reg i.res.(0)}, 31, {emit_int size_addr}\n` | Lop(Iintop Isub) -> (* subfc has swapped arguments *) ` subfc {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n` | Lop(Iintop Imod) -> diff --git a/asmrun/amd64.S b/asmrun/amd64.S index 962d72c03..be38848ec 100644 --- a/asmrun/amd64.S +++ b/asmrun/amd64.S @@ -372,7 +372,6 @@ LBL(caml_alloc1): jb LBL(100) ret LBL(100): - addq $16, %r15 RECORD_STACK_FRAME(0) ENTER_FUNCTION /* subq $8, %rsp; CFI_ADJUST (8); */ @@ -390,7 +389,6 @@ LBL(caml_alloc2): jb LBL(101) ret LBL(101): - addq $24, %r15 RECORD_STACK_FRAME(0) ENTER_FUNCTION /* subq $8, %rsp; CFI_ADJUST (8); */ @@ -408,7 +406,6 @@ LBL(caml_alloc3): jb LBL(102) ret LBL(102): - addq $32, %r15 RECORD_STACK_FRAME(0) ENTER_FUNCTION /* subq $8, %rsp; CFI_ADJUST (8) */ @@ -428,7 +425,6 @@ LBL(caml_allocN): addq $8, %rsp; CFI_ADJUST (-8) /* drop desired size */ ret LBL(103): - addq (%rsp), %r15 RECORD_STACK_FRAME(8) #ifdef WITH_FRAME_POINTERS /* Do we need 16-byte alignment here ? */ diff --git a/asmrun/amd64nt.asm b/asmrun/amd64nt.asm index cf943caed..4883ba977 100644 --- a/asmrun/amd64nt.asm +++ b/asmrun/amd64nt.asm @@ -131,7 +131,6 @@ caml_alloc1: jb L100 ret L100: - add r15, 16 mov rax, [rsp + 0] mov caml_last_return_address, rax lea rax, [rsp + 8] @@ -149,7 +148,6 @@ caml_alloc2: jb L101 ret L101: - add r15, 24 mov rax, [rsp + 0] mov caml_last_return_address, rax lea rax, [rsp + 8] @@ -167,7 +165,6 @@ caml_alloc3: jb L102 ret L102: - add r15, 32 mov rax, [rsp + 0] mov caml_last_return_address, rax lea rax, [rsp + 8] @@ -185,7 +182,6 @@ caml_allocN: jb L103 ret L103: - add r15, rax push rax ; save desired size mov rax, [rsp + 8] mov caml_last_return_address, rax diff --git a/asmrun/arm.S b/asmrun/arm.S index 7a95bf740..e3e3c4cb2 100644 --- a/asmrun/arm.S +++ b/asmrun/arm.S @@ -127,7 +127,7 @@ caml_call_gc: /* Store pointer to saved integer registers in caml_gc_regs */ ldr r12, =caml_gc_regs str sp, [r12] - /* Save current allocation pointer (the GC needs it) */ + /* Save current allocation pointer for debugging purposes */ ldr alloc_limit, =caml_young_ptr str alloc_ptr, [alloc_limit] /* Save trap pointer in case an exception is raised during GC */ @@ -162,8 +162,7 @@ caml_alloc1: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: add alloc_ptr, alloc_ptr, 8 - /* Record return address */ +1: /* Record return address */ ldr r7, =caml_last_return_address str lr, [r7] /* Call GC (preserves r7) */ @@ -186,8 +185,7 @@ caml_alloc2: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: add alloc_ptr, alloc_ptr, 12 - /* Record return address */ +1: /* Record return address */ ldr r7, =caml_last_return_address str lr, [r7] /* Call GC (preserves r7) */ @@ -211,8 +209,7 @@ caml_alloc3: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: add alloc_ptr, alloc_ptr, 16 - /* Record return address */ +1: /* Record return address */ ldr r7, =caml_last_return_address str lr, [r7] /* Call GC (preserves r7) */ @@ -235,8 +232,7 @@ caml_allocN: cmp alloc_ptr, alloc_limit bcc 1f bx lr -1: add alloc_ptr, alloc_ptr, r7 - /* Record return address */ +1: /* Record return address */ ldr r12, =caml_last_return_address str lr, [r12] /* Call GC (preserves r7) */ diff --git a/asmrun/arm64.S b/asmrun/arm64.S index 780abe353..7969eb629 100644 --- a/asmrun/arm64.S +++ b/asmrun/arm64.S @@ -123,7 +123,7 @@ caml_call_gc: /* Store pointer to saved integer registers in caml_gc_regs */ add TMP, sp, #16 STOREGLOBAL(TMP, caml_gc_regs) - /* Save current allocation pointer (the GC needs it) */ + /* Save current allocation pointer for debugging purposes */ STOREGLOBAL(ALLOC_PTR, caml_young_ptr) /* Save trap pointer in case an exception is raised during GC */ STOREGLOBAL(TRAP_PTR, caml_exception_pointer) @@ -173,8 +173,7 @@ caml_alloc1: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: add ALLOC_PTR, ALLOC_PTR, #16 - stp x29, x30, [sp, -16]! +2: stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. This is the address immediately above the pair of words (x29 and x30) we just @@ -207,8 +206,7 @@ caml_alloc2: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: add ALLOC_PTR, ALLOC_PTR, #24 - stp x29, x30, [sp, -16]! +2: stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. See comment above. */ @@ -237,8 +235,7 @@ caml_alloc3: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: add ALLOC_PTR, ALLOC_PTR, #32 - stp x29, x30, [sp, -16]! +2: stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. See comment above. */ @@ -267,8 +264,7 @@ caml_allocN: cmp ALLOC_PTR, ALLOC_LIMIT b.lo 2f ret -2: add ALLOC_PTR, ALLOC_PTR, ARG - stp x29, x30, [sp, -16]! +2: stp x29, x30, [sp, -16]! CFI_ADJUST(16) /* Record the lowest address of the caller's stack frame. See comment above. */ diff --git a/asmrun/i386.S b/asmrun/i386.S index 442ee7174..2fdc6f8e7 100644 --- a/asmrun/i386.S +++ b/asmrun/i386.S @@ -171,9 +171,9 @@ FUNCTION(caml_alloc1) PROFILE_CAML movl G(caml_young_ptr), %eax subl $8, %eax + movl %eax, G(caml_young_ptr) cmpl G(caml_young_limit), %eax jb LBL(100) - movl %eax, G(caml_young_ptr) ret LBL(100): movl 0(%esp), %eax @@ -191,9 +191,9 @@ FUNCTION(caml_alloc2) PROFILE_CAML movl G(caml_young_ptr), %eax subl $12, %eax + movl %eax, G(caml_young_ptr) cmpl G(caml_young_limit), %eax jb LBL(101) - movl %eax, G(caml_young_ptr) ret LBL(101): movl 0(%esp), %eax @@ -211,9 +211,9 @@ FUNCTION(caml_alloc3) PROFILE_CAML movl G(caml_young_ptr), %eax subl $16, %eax + movl %eax, G(caml_young_ptr) cmpl G(caml_young_limit), %eax jb LBL(102) - movl %eax, G(caml_young_ptr) ret LBL(102): movl 0(%esp), %eax @@ -239,6 +239,7 @@ LBL(103): subl G(caml_young_ptr), %eax /* eax = - size */ negl %eax /* eax = size */ pushl %eax; CFI_ADJUST(4) /* save desired size */ + subl %eax, G(caml_young_ptr) /* must update young_ptr */ movl 4(%esp), %eax movl %eax, G(caml_last_return_address) leal 8(%esp), %eax diff --git a/asmrun/i386nt.asm b/asmrun/i386nt.asm index c3961a092..61ec34162 100644 --- a/asmrun/i386nt.asm +++ b/asmrun/i386nt.asm @@ -72,9 +72,9 @@ L105: push ebp _caml_alloc1: mov eax, _caml_young_ptr sub eax, 8 + mov _caml_young_ptr, eax cmp eax, _caml_young_limit jb L100 - mov _caml_young_ptr, eax ret L100: mov eax, [esp] mov _caml_last_return_address, eax @@ -87,9 +87,9 @@ L100: mov eax, [esp] _caml_alloc2: mov eax, _caml_young_ptr sub eax, 12 + mov _caml_young_ptr, eax cmp eax, _caml_young_limit jb L101 - mov _caml_young_ptr, eax ret L101: mov eax, [esp] mov _caml_last_return_address, eax @@ -102,9 +102,9 @@ L101: mov eax, [esp] _caml_alloc3: mov eax, _caml_young_ptr sub eax, 16 + mov _caml_young_ptr, eax cmp eax, _caml_young_limit jb L102 - mov _caml_young_ptr, eax ret L102: mov eax, [esp] mov _caml_last_return_address, eax @@ -124,6 +124,7 @@ _caml_allocN: L103: sub eax, _caml_young_ptr ; eax = - size neg eax ; eax = size push eax ; save desired size + sub _caml_young_ptr, eax ; must update young_ptr mov eax, [esp+4] mov _caml_last_return_address, eax lea eax, [esp+8] diff --git a/asmrun/power.S b/asmrun/power.S index b45f3059e..e5de431ad 100644 --- a/asmrun/power.S +++ b/asmrun/power.S @@ -179,7 +179,7 @@ FUNCTION(caml_call_gc) /* Record pointer to register array */ addi 0, 1, 8*32 + PARAM_SAVE_AREA + RESERVED_STACK Storeglobal(0, caml_gc_regs, 11) - /* Save current allocation pointer (needed by the GC) */ + /* Save current allocation pointer for debugging purposes */ Storeglobal(31, caml_young_ptr, 11) /* Save exception pointer (if e.g. a sighandler raises) */ Storeglobal(29, caml_exception_pointer, 11) diff --git a/asmrun/roots.c b/asmrun/roots.c index 729d198d3..b11a30e48 100644 --- a/asmrun/roots.c +++ b/asmrun/roots.c @@ -437,22 +437,6 @@ void caml_do_roots (scanning_action f, int do_globals) /* Finalised values */ caml_final_do_strong_roots (f); CAML_INSTR_TIME (tmr, "major_roots/finalised"); - /* Objects in the minor heap are roots for the major GC. */ - { - value *hp; - asize_t sz, i; - for (hp = caml_young_ptr; - hp < caml_young_alloc_end; - hp += Whsize_wosize (sz)){ - sz = Wosize_hp (hp); - if (Tag_hp (hp) < No_scan_tag){ - for (i = 0; i < sz; i++){ - f(Field(Val_hp(hp), i), &Field(Val_hp(hp), i)); - } - } - } - } - CAML_INSTR_TIME (tmr, "major_roots/minor_heap"); /* Hook */ if (caml_scan_roots_hook != NULL) (*caml_scan_roots_hook)(f); CAML_INSTR_TIME (tmr, "major_roots/hook"); diff --git a/asmrun/sparc.S b/asmrun/sparc.S index cfb6f8e68..7f24b4b42 100644 --- a/asmrun/sparc.S +++ b/asmrun/sparc.S @@ -52,12 +52,11 @@ caml_allocN: retl nop -/* Required size in %g2, Alloc_ptr is decremented by required size. */ +/* Required size in %g2 */ caml_call_gc: - add Alloc_ptr, %g2, Alloc_ptr /* Save exception pointer if GC raises */ Store(Exn_ptr, caml_exception_pointer) - /* Save current allocation pointer (the GC needs it) */ + /* Save current allocation pointer for debugging purposes */ Store(Alloc_ptr, caml_young_ptr) /* Record lowest stack address */ Store(%sp, caml_bottom_of_stack) diff --git a/byterun/major_gc.c b/byterun/major_gc.c index 42d98de14..5d039e443 100644 --- a/byterun/major_gc.c +++ b/byterun/major_gc.c @@ -606,8 +606,12 @@ void caml_major_collection_slice (intnat howmuch) (intnat) (p * 1000000)); if (caml_gc_phase == Phase_idle){ - start_cycle (); - CAML_INSTR_TIME (tmr, "major/roots"); + if (caml_young_ptr == caml_young_alloc_end){ + /* We can only start a major GC cycle if the minor allocation arena + is empty, otherwise we'd have to treat it as a set of roots. */ + start_cycle (); + CAML_INSTR_TIME (tmr, "major/roots"); + } p = 0; goto finished; } diff --git a/byterun/minor_gc.c b/byterun/minor_gc.c index 0ffafefc4..950ec216c 100644 --- a/byterun/minor_gc.c +++ b/byterun/minor_gc.c @@ -380,6 +380,7 @@ CAMLexport void caml_gc_dispatch (void) caml_young_trigger = caml_young_alloc_mid; caml_young_limit = caml_young_trigger; caml_empty_minor_heap (); + /* The minor heap is empty, we can start a major collection. */ if (caml_gc_phase == Phase_idle) caml_major_collection_slice (-1); CAML_INSTR_TIME (tmr, "dispatch/minor"); @@ -393,6 +394,7 @@ CAMLexport void caml_gc_dispatch (void) caml_young_trigger = caml_young_alloc_mid; caml_young_limit = caml_young_trigger; caml_empty_minor_heap (); + /* The minor heap is empty, we can start a major collection. */ if (caml_gc_phase == Phase_idle) caml_major_collection_slice (-1); CAML_INSTR_TIME (tmr, "dispatch/finalizers_minor"); } diff --git a/byterun/roots.c b/byterun/roots.c index 85bbf5172..21aedc66b 100644 --- a/byterun/roots.c +++ b/byterun/roots.c @@ -89,22 +89,6 @@ void caml_do_roots (scanning_action f, int do_globals) /* Finalised values */ caml_final_do_strong_roots (f); CAML_INSTR_TIME (tmr, "major_roots/finalised"); - /* Objects in the minor heap are roots for the major GC. */ - { - value *hp; - asize_t sz, i; - for (hp = caml_young_ptr; - hp < caml_young_alloc_end; - hp += Whsize_wosize (sz)){ - sz = Wosize_hp (hp); - if (Tag_hp (hp) < No_scan_tag){ - for (i = 0; i < sz; i++){ - f(Field(Val_hp(hp), i), &Field(Val_hp(hp), i)); - } - } - } - } - CAML_INSTR_TIME (tmr, "major_roots/minor_heap"); /* Hook */ if (caml_scan_roots_hook != NULL) (*caml_scan_roots_hook)(f); CAML_INSTR_TIME (tmr, "major_roots/hook"); From bfc06f52f89b240871267cbd88275f12f1425f40 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Fri, 4 Dec 2015 14:42:33 +0100 Subject: [PATCH 10/13] ignore generated files for the instrumented runtime --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 14ef73620..5f3ef3ac8 100644 --- a/.gitignore +++ b/.gitignore @@ -197,8 +197,8 @@ /stdlib/camlheader /stdlib/target_camlheader -/stdlib/camlheaderd -/stdlib/target_camlheaderd +/stdlib/camlheader[di] +/stdlib/target_camlheader[di] /stdlib/camlheader_ur /stdlib/labelled-* /stdlib/caml From 40d78a80d681157c825c4b680e79901a3dbc820a Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Thu, 17 Dec 2015 14:54:32 +0100 Subject: [PATCH 11/13] fix wrong variable name caml_stat_heap_size --- byterun/compact.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/byterun/compact.c b/byterun/compact.c index 890feb5be..07ffabb31 100644 --- a/byterun/compact.c +++ b/byterun/compact.c @@ -492,7 +492,7 @@ void caml_compact_heap_maybe (void) #ifdef HAS_HUGE_PAGES if (caml_use_huge_pages - && Bsize_wsize (caml_stat_heap_size) <= HUGE_PAGE_SIZE) + && Bsize_wsize (caml_stat_heap_wsz) <= HUGE_PAGE_SIZE) return; #endif From ebe0f9e34738fb8a6f52d1ff1aee02e111f74d53 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Thu, 17 Dec 2015 14:54:51 +0100 Subject: [PATCH 12/13] simplify incremental root scanning --- asmrun/roots.c | 77 ++++++++++++++++++++-------------------------- byterun/major_gc.c | 6 ++-- byterun/roots.c | 2 +- 3 files changed, 36 insertions(+), 49 deletions(-) diff --git a/asmrun/roots.c b/asmrun/roots.c index b11a30e48..29cc6e872 100644 --- a/asmrun/roots.c +++ b/asmrun/roots.c @@ -335,8 +335,6 @@ void caml_oldify_local_roots (void) if (caml_scan_roots_hook != NULL) (*caml_scan_roots_hook)(&caml_oldify_one); } -static mlsize_t incr_roots_i, incr_roots_j, incr_roots_sz, roots_count; -static value *incr_roots_glob; uintnat caml_incremental_roots_count = 0; /* Call [caml_darken] on all roots, incrementally: @@ -346,60 +344,51 @@ uintnat caml_incremental_roots_count = 0; void caml_darken_all_roots_start (void) { caml_do_roots (caml_darken, 0); - roots_count = 0; - for (incr_roots_i = 0; caml_globals[incr_roots_i] != 0; incr_roots_i++) { - for(incr_roots_glob = caml_globals[incr_roots_i]; *incr_roots_glob != 0; - incr_roots_glob++) { - incr_roots_sz = Wosize_val (*incr_roots_glob); - for (incr_roots_j = 0; incr_roots_j < incr_roots_sz; incr_roots_j++){ - goto setup_done; - } - } - } - setup_done: - /* At this point, either the loop finished because there are no roots, - and we have `caml_globals[incr_roots_i] == 0`, or the loop indices are - pointing to the first root. - */ - ; } /* Call [caml_darken] on at most [work] global roots. Return the - number of roots darkened; if this is less than [work], then the - work is done and there are no more roots to darken. + amount of work not done, if any. If this is strictly positive, + the darkening is done. */ intnat caml_darken_all_roots_slice (intnat work) { - intnat work_done = 0; + static int i, j; + static value *glob; + static int do_resume = 0; + static mlsize_t roots_count = 0; + intnat remaining_work = work; CAML_INSTR_SETUP (tmr, ""); - if (caml_globals[incr_roots_i] == 0) goto finished; - while (work_done < work){ - /* The loop indices are pointing to a root. We darken it, then increment - the loop indices. We maintain this invariant, or exit the loop - with `caml_globals[incr_roots_i] == 0`. */ - caml_darken (Field (*incr_roots_glob, incr_roots_j), - &Field (*incr_roots_glob, incr_roots_j)); - ++ work_done; - ++ incr_roots_j; - while (incr_roots_j >= incr_roots_sz){ - ++ incr_roots_glob; - while (*incr_roots_glob == 0){ - ++ incr_roots_i; - if (caml_globals[incr_roots_i] == 0) goto finished; - incr_roots_glob = caml_globals[incr_roots_i]; + /* If the loop was started in a previous call, resume it. */ + if (do_resume) goto resume; + + /* This is the same loop as in [caml_do_roots], but we make it + suspend itself when [work] reaches 0. */ + for (i = 0; caml_globals[i] != 0; i++) { + for(glob = caml_globals[i]; *glob != 0; glob++) { + for (j = 0; j < Wosize_val(*glob); j++){ + caml_darken (Field (*glob, j), &Field (*glob, j)); + -- remaining_work; + if (remaining_work == 0){ + roots_count += work; + do_resume = 1; + goto suspend; + } + resume: ; } - incr_roots_sz = Wosize_val (*incr_roots_glob); - incr_roots_j = 0; } } - finished: - roots_count += work_done; - if (work_done < work){ - caml_incremental_roots_count = roots_count; - } + + /* The loop finished normally, so all roots are now darkened. */ + caml_incremental_roots_count = roots_count + work - remaining_work; + /* Prepare for the next run. */ + do_resume = 0; + roots_count = 0; + + suspend: + /* Do this in both cases. */ CAML_INSTR_TIME (tmr, "major/mark/global_roots_slice"); - return work_done; + return remaining_work; } void caml_do_roots (scanning_action f, int do_globals) diff --git a/byterun/major_gc.c b/byterun/major_gc.c index 5d039e443..241102d27 100644 --- a/byterun/major_gc.c +++ b/byterun/major_gc.c @@ -289,14 +289,12 @@ static void mark_slice (intnat work) }else{ switch (caml_gc_subphase){ case Subphase_roots: { - intnat work_done; gray_vals_cur = gray_vals_ptr; - work_done = caml_darken_all_roots_slice (work); + work = caml_darken_all_roots_slice (work); gray_vals_ptr = gray_vals_cur; - if (work_done < work){ + if (work > 0){ caml_gc_subphase = Subphase_main; } - work -= work_done; } break; case Subphase_main: { diff --git a/byterun/roots.c b/byterun/roots.c index 21aedc66b..bae771b84 100644 --- a/byterun/roots.c +++ b/byterun/roots.c @@ -69,7 +69,7 @@ uintnat caml_incremental_roots_count = 1; intnat caml_darken_all_roots_slice (intnat work) { - return 0; + return work; } /* Note, in byte-code there is only one global root, so [do_globals] is From 7e0f3bdd073ecbb42320bf675b9aea0677ca3b4f Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Thu, 17 Dec 2015 16:34:32 +0100 Subject: [PATCH 13/13] bootstrap for new primitive --- boot/ocamlc | Bin 1918738 -> 1929571 bytes boot/ocamldep | Bin 589098 -> 597317 bytes boot/ocamllex | Bin 263308 -> 263446 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/boot/ocamlc b/boot/ocamlc index 60b4364878adec644716a55b01b368d224e6bb29..cea77dd5037a8a91db67e01f6f66b889a7375c73 100755 GIT binary patch delta 227838 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 Y%Aq~w9H7LN!^Ea|#*7&&Cl(j~ALT@eEC2ui delta 222269 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 Z-v;wp^s$f{8@#$tnm&E{qKT6x{U7_Kgq;8Y diff --git a/boot/ocamldep b/boot/ocamldep index b422042c2e1e59a2cb6f54978113e8e44567dd77..8f1236bd4a12f2e7514c24ef4b13688c2b851344 100755 GIT binary patch delta 84843 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 BRO$c# delta 80003 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

_uTK4e(90JR)aGPOdKPdDU;L{l6zR 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 diff --git a/boot/ocamllex b/boot/ocamllex index a3d4d0b6588b6f54e817dd9bff36f3f4ea9993e7..bbf9dc98e6fd496e359298f95133830100699499 100755 GIT binary patch delta 8694 zcma)B3tW{|ws-CCkVgeM#{(YlfJkUa;3%1bDZ&v`Q4q*?J`jx%#RmfU9_5;;sS~)< zEsk~|e338c*AojGOEj%4t1?- zbW)W;!X`_*q|zaIvCAfFH3nt_0s+$jugPV$^$xd zM%KpI)Rkw2NnRTPnb>=`4!+Sk=#Yz6ngaO*a{#<0!%RR8)c&tVok4@a(5j$xIx5cw z&AZF`k=8Ztv7Q;6OSj}(!3%v1NvSdyq?FWcc$9|IP6RoV4gjzcywiAW0`T^LXH;ek z+2woPUiRY^d;xsyI=TD#EY9x|A=ql}PiLdN@i1CkD^d9-lI>meI5 zmjN9Jhyd_xFW&P3yw?NxBM;z_UR<6HRl%&Nyw)B*`CMn7Y^^fMhIympj?uny^E|VR$?r{Z7__L`GnSa!;8S6q%}ea$R4v`1@sOo2qoa0dG!2t2>2`U2X+FHzz-p+@?OdgZ>QwAkFx{)a9D=d>c!zuV>ZKY6PyEL@`jKVkGE0hg3*TXv*Ob}7 zZF1(i0Hd!z%IbA1C|)-1h(J5#1uo|sW!VdT(O>_Y?h6HDAwd}HK zYhR<)RW>dQQ&&0(bBB0r${PnN=Mc@)7wYW`KtEqu6ORK7N8t{Cc{X9yb=xBSMx)c~ zWNymZYP)RMW*E^n&yHQdmtC#NKzPg8e!$q;D#Le1$R5hVjH)2&p76ak_t!gPv<|80Vx30GO206AQzpDpNYiBPD|Vj%?AcM# zWLU+OS4`6b83kc7fFlKqwG;ZhZEKshZ=1G%o3^D*yK|eipWEr`OOz%HD*Dn`cV)#( zMCmg2)kuW1%0wG^@(CZ$Vai@jY_;PIb}(D3EL0(_Rd#f?1lZ)}O=iku-w@`*adWDq z;SSlu4{k5UEK956TjxG?cdlv-g`4QH2Uo_p9pm^e(U-D(k51!d=H8LPm$42jIt5jKWg0A;|^15NHZPfRBHWfkB45P5CzG&yHafSftxBbw@QpBV{Xl1nzOK)@VimNSR? z0-HZ{6HLGmtw~xE1MY1CB40T^aVEVYV~cI>-y}{Wn(pr9bddC|&Y)~Lz1l&~$Ys@z z(8XY^ZP>^L?!9#5aOuJ*S2lurp=_>p$Z6GPx8=3*6uP8!nn2Azj@KMfS(VFW$w3Eg zmb+1UmRKdvA9RGS$5`8~76A8dRp_=Jno4v=&Ohv+_vOaJj?m8@Am=T;@GiqaSC0EssL)ln65@qn~Q;l@13s&I^Wmq+8lgdoeY-&wUIPi+szlJq# zbdN##sXH1ay|FfwFE!8T0q_Cvy&VRK1EkB!H*7{C%Hmq&_2!4*s+vN`<}N+y|atHa$8SaCb}$J zPTFD4CC6>T`p@kmJV~(B>O6|csXANp*cX|gSp<#p& zqMr0r^TQyubX6Hf4ocTgpo*sps(CUw)b&a99bM4Tj`K&|YYy3AA}S#d=enS8$s_+E z5YO(t6ag`*`hD~g(9Hc5El{tjruJN~J4i>l9&m(iu{2|A=r3FczfSHz)Mwu(q|LYV zf)5D^*DZxwSEtU>b+n!TMT7NgAJZQMwk>ObT&^_IOziFaZ~A{;WY8ycju-d)jDCkj z)Wy#suT&L!fz_iIU!bGBWUq^?2)sv<)teV-8hV;ygiSu z-)IS{8-JrLkCbgH{~I!+UHlEpOZi+iDiAnS%~iSr_RE?H4n|de0HuD>Oe@iz@^@N+ zBOt1%tAB^KvF|^iMbxp^=$s$8^SMK71=StfC|LaJm=LQ`4bZqUj(%m9W>U8`kxDmJ zib){%R4q1kKqfH_n_e`Dc~;I2G=TTXRH~-<2$#@E-SiRNp71{3`htW5n;kLTA2nYi z?^sytSkQfAYV1Rz8?Q6hQ|m80B%UTpQcdlJEwm1E@&WwPV%NMHz!AZ4mC9-sNOP3a zEC%DetIRkNO;+D`5Du^%+)?n=D9eCCH+K}Jv`d9{5@Tq&s_!JC>3yS;FaJJ7)pQaT z{c0!ixDTdo!6t?(tm3e$*f;L8`!v|qHKciRHjYXyW9d{ z9)O)=7QjSmxlIhit|u@Is!wfVHmX4Z!XYp?F`(^WZGh8GF=y`8; zLLkIZr{)KWm$1n9fjDfcs>gQ-HLa_N_qGpo#hhE}Y*!J6s@YTd*+rPap4WG`vNzN& zMtCRgup1LkfD{uidaCce6CXI&FM{q(+z{m5Jq%8&DMU z=>xTg_l4M!^n||RTQg1(8*kX-gm}T%cU!!e&4RfZFP^{>0|r6ko=~R$W{^lVfv>=! zP&+Q&P!R!2d2-+*>YbqiuL)H-U)VgEqiP;1*d03)4I=eyqUa9J)+LImeuyDWsUprG z^p%-2;aRH4qK2o5AhyyOX<|8cKA$Go&Bu;4Of7A!up5zlAvD8g&!K`%G*vAdD_kH9 zP8S~bW~bknF4mi+O!v2C9mD!J4hk7x2C6Mm`ubl=D7Ss=Ngv7g*y0jMb^| zg}6$u%FGouPekPBSggTU>;B%0^eXV)0C*N72V!1B03P1XEW}M9hi)wpk|O$2jP%VH50&YI<6aEw5DAI^-qy_K#PCio`;ySJg#gbzn&= z6@NWrJuqVR2)R|r_L;g0lRcsAv8gkbe~mXo`BgFtj6jzQ7>O3syc!!VH51brKWGfwVt7u zY!VmDG*MoV!;g*i2PVRzjzBYD=YvHa_aGay<9qOr=QnVKdWY*&Msfa3Dd` z`@9Ni1=pdMHGb!ZAAaBzoGr`a46>^XcfrY_>fuKwRq=#oRuxrZ7dA=QWBAqSo@&(| zL;|EEd&C7?rxSbOD?!t|PpAhNDcdjXQM@H@D&_(%qK zZTi^YZUStwAOvrj18|@C-gOXxG~<8>=*82$xd4-T13Z5qQIBW#6Er;Q7Z>o!j4dHx$*h>P99}z_yk&b{MRRtb}S>9C3jv933 zN0CSwRvDqbK8pMiX=M$jB4@9GrITIXQj6tb?Wm*i6+_^aoUZ(i3H#lQkqwA5#&;o9 zukZ63RNvOI)Ax<(GmeR^KBQF3+c=O?;m5hsGmi^o{KgB=rs7Y+nYh%Hli)L6EjuZ) z;Ns4o6fW8Gbb!9OPV~?a6c4}anNo5FT*fO@VfuGx#GHq4sO*nKq!F<@sj|Pr?NodO z_i{_seuR)@R1Rf1D|T2ffk*x}@iBO08@QyubyncX;nFuY!jn;{N;xMaN9s%GJc;g2 z)OU~nSnCll-FHNfsj+RaXfEG3rpA8KnlPj8?iCeh6ioZa`)Ku7KM`|H(3{_RI5L+$ z;k*%+^(mhtzd)9C@q*aT-`vYa+Ev9`GOImbiZ6rHu@3*ZW=94;_5+(R-hzJ?bw0+H zvSpP`U;34ZVc*~Q7NYB^uf-cc^x|*WB$!F6pXZ7upakF%*!U9=D*nF~_|kKqgPhAvtu#)56yx0vb|pv~?= zztRgH;U!!up|_T9d~Ubt6}`2d%+#4EZDABM#ZHuiDhJnO0QWKQ2N-6S+cWg(k7~!s z*w9~Q5{77zU?69R7TpO9l#SGEDK4zU zQPvymy}0+0;l=%VM}QZ%Jb+vIpNakEQHaPhREN=8bO)wpej{Y&0pxw7wH_ELzzC|{ zqqVj7u(UDSk|6KG`IthmEbnHjVWk$Le>XVq=0)x22KQ<_~hJf&GYZ5>J~AEzC~b@hDPnK?dzO#Fc7Vq>Te7 z`hY^MKi7H1T6@mh3zloihFNr!*#S7=a-8sjYFgfE+J+IS+T}>Sdar<1;`NjjS{$Fc zRp;C-2dIOTLfwd8}XTfIhLYs8!HD?bqsdl{Qj$qcwrns`T4hjA%DQ zt-KBQkfL_n)@DJ%w{B~Rs~eJPl6sHG%gY**BPACITzEX`RA>Th}WBfxTV7C1?C<3UFA7UVjq-C9hq zN$Q!JS6Jj+YE10;Y+806Qy%7t5oy_rK(;e!STcA>%U)bKCp+KSZoFrcsIl2adC%qK zEhuufTWyf1&zkFOHz^5gK9XKsw5YfU3(YXrjq>2L@(R(lEy=0E?r34!u;k&&c}L5K zn>ca@l1SG-xTB?zWnIIt-|KV6ubTS15nXcwCx3h_!jx!w)E+k6Io{c>-P2pfO-UOD dJ6Fk1C67aXn+wBfpA0R>4jMFQa=+Nve*%~zHpc(} delta 8589 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 hPS%(bObA)g{QrVVFx>zE