diff options
author | Luc Maranget <luc.maranget@inria.fr> | 2012-08-09 12:54:45 +0000 |
---|---|---|
committer | Luc Maranget <luc.maranget@inria.fr> | 2012-08-09 12:54:45 +0000 |
commit | 6f6d58433da8a9c810e7dc5d3d17ff0f7739a19c (patch) | |
tree | 7e84a1c03bf69db4efabe938c993663628f722cf | |
parent | 66c4ae32109b6d0ef1acdd73ecb753e167750641 (diff) | |
download | ocaml-6f6d58433da8a9c810e7dc5d3d17ff0f7739a19c.tar.gz |
Merge jo312 11009 -> 11115 [last commit in jo312]
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/jocamltrunk@12845 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
228 files changed, 2422 insertions, 1141 deletions
@@ -343,13 +343,13 @@ bytecomp/translobj.cmi: bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi bytecomp/typeopt.cmi: typing/types.cmi typing/typedtree.cmi typing/path.cmi \ bytecomp/lambda.cmi typing/env.cmi bytecomp/bytegen.cmo: typing/types.cmi bytecomp/switch.cmi typing/subst.cmi \ - typing/stypes.cmi typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi \ + typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi \ bytecomp/instruct.cmi typing/ident.cmi utils/config.cmi \ - parsing/asttypes.cmi typing/annot.cmi bytecomp/bytegen.cmi + parsing/asttypes.cmi bytecomp/bytegen.cmi bytecomp/bytegen.cmx: typing/types.cmx bytecomp/switch.cmx typing/subst.cmx \ - typing/stypes.cmx typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx \ + typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx \ bytecomp/instruct.cmx typing/ident.cmx utils/config.cmx \ - parsing/asttypes.cmi typing/annot.cmi bytecomp/bytegen.cmi + parsing/asttypes.cmi bytecomp/bytegen.cmi bytecomp/bytelibrarian.cmo: utils/misc.cmi utils/config.cmi \ bytecomp/cmo_format.cmi utils/clflags.cmi bytecomp/bytelink.cmi \ bytecomp/bytelibrarian.cmi @@ -432,10 +432,12 @@ bytecomp/printlambda.cmx: typing/types.cmx typing/primitive.cmx \ parsing/asttypes.cmi bytecomp/printlambda.cmi bytecomp/runtimedef.cmo: bytecomp/runtimedef.cmi bytecomp/runtimedef.cmx: bytecomp/runtimedef.cmi -bytecomp/simplif.cmo: bytecomp/lambda.cmi typing/ident.cmi utils/clflags.cmi \ - parsing/asttypes.cmi bytecomp/simplif.cmi -bytecomp/simplif.cmx: bytecomp/lambda.cmx typing/ident.cmx utils/clflags.cmx \ - parsing/asttypes.cmi bytecomp/simplif.cmi +bytecomp/simplif.cmo: typing/stypes.cmi bytecomp/lambda.cmi typing/ident.cmi \ + utils/clflags.cmi parsing/asttypes.cmi typing/annot.cmi \ + bytecomp/simplif.cmi +bytecomp/simplif.cmx: typing/stypes.cmx bytecomp/lambda.cmx typing/ident.cmx \ + utils/clflags.cmx parsing/asttypes.cmi typing/annot.cmi \ + bytecomp/simplif.cmi bytecomp/switch.cmo: bytecomp/switch.cmi bytecomp/switch.cmx: bytecomp/switch.cmi bytecomp/symtable.cmo: utils/tbl.cmi bytecomp/runtimedef.cmi \ @@ -641,9 +643,9 @@ asmcomp/codegen.cmx: asmcomp/split.cmx asmcomp/spill.cmx asmcomp/reload.cmx \ asmcomp/coloring.cmo: asmcomp/reg.cmi asmcomp/proc.cmi asmcomp/coloring.cmi asmcomp/coloring.cmx: asmcomp/reg.cmx asmcomp/proc.cmx asmcomp/coloring.cmi asmcomp/comballoc.cmo: asmcomp/reg.cmi asmcomp/mach.cmi utils/config.cmi \ - asmcomp/comballoc.cmi + asmcomp/arch.cmo asmcomp/comballoc.cmi asmcomp/comballoc.cmx: asmcomp/reg.cmx asmcomp/mach.cmx utils/config.cmx \ - asmcomp/comballoc.cmi + asmcomp/arch.cmx asmcomp/comballoc.cmi asmcomp/compilenv.cmo: utils/misc.cmi bytecomp/lambda.cmi typing/ident.cmi \ typing/env.cmi utils/config.cmi asmcomp/cmx_format.cmi \ asmcomp/clambda.cmi asmcomp/compilenv.cmi @@ -724,12 +726,14 @@ asmcomp/schedgen.cmx: asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \ asmcomp/schedgen.cmi asmcomp/scheduling.cmo: asmcomp/schedgen.cmi asmcomp/scheduling.cmi asmcomp/scheduling.cmx: asmcomp/schedgen.cmx asmcomp/scheduling.cmi -asmcomp/selectgen.cmo: utils/tbl.cmi asmcomp/reg.cmi asmcomp/proc.cmi \ - utils/misc.cmi asmcomp/mach.cmi typing/ident.cmi asmcomp/debuginfo.cmi \ - asmcomp/cmm.cmi asmcomp/arch.cmo asmcomp/selectgen.cmi -asmcomp/selectgen.cmx: utils/tbl.cmx asmcomp/reg.cmx asmcomp/proc.cmx \ - utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx asmcomp/debuginfo.cmx \ - asmcomp/cmm.cmx asmcomp/arch.cmx asmcomp/selectgen.cmi +asmcomp/selectgen.cmo: utils/tbl.cmi bytecomp/simplif.cmi asmcomp/reg.cmi \ + asmcomp/proc.cmi utils/misc.cmi asmcomp/mach.cmi typing/ident.cmi \ + asmcomp/debuginfo.cmi asmcomp/cmm.cmi asmcomp/arch.cmo \ + asmcomp/selectgen.cmi +asmcomp/selectgen.cmx: utils/tbl.cmx bytecomp/simplif.cmx asmcomp/reg.cmx \ + asmcomp/proc.cmx utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx \ + asmcomp/debuginfo.cmx asmcomp/cmm.cmx asmcomp/arch.cmx \ + asmcomp/selectgen.cmi asmcomp/selection.cmo: asmcomp/selectgen.cmi asmcomp/reg.cmi asmcomp/proc.cmi \ utils/misc.cmi asmcomp/mach.cmi asmcomp/debuginfo.cmi asmcomp/cmm.cmi \ utils/clflags.cmi asmcomp/arch.cmo asmcomp/selection.cmi @@ -1,7 +1,99 @@ -Objective Caml 3.13.0: +Objective Caml 3.12.1: ---------------------- -- Warning 28 is now enabled by default. +Bug fixes: +- PR#4345, PR#4767: problems with camlp4 printing of float values +- PR#4380: ocamlbuild should not use tput on windows +- PR#4487, PR#5164: multiple 'module type of' are incompatible +- PR#4552: ocamlbuild does not create symlinks when using '.itarget' file +- PR#4673, PR#5144: camlp4 fails on object copy syntax +- PR#4702: system threads: cleanup tick thread at exit +- PR#4732: camlp4 rejects polymorphic variants using keywords from macros +- PR#4778: Win32/MSVC port: rare syntax error in generated MASM assembly file +- PR#4794, PR#4959: call annotations not generated by ocamlopt +- PR#4820: revised syntax pretty printer crashes with 'Stack_overflow' +- PR#4928: wrong printing of classes and class types by camlp4 +- PR#4939: camlp4 rejects patterns of the '?x:_' form +- PR#4967: ocamlbuild passes wrong switches to ocamldep through menhir +- PR#4972: mkcamlp4 does not include 'dynlink.cma' +- PR#5039: ocamlbuild should use '-linkpkg' only when linking programs +- PR#5066: ocamldoc: add -charset option used in html generator +- PR#5069: fcntl() in caml_sys_open may block, do it within blocking section +- PR#5071, PR#5129, PR#5134: inconsistencies between camlp4 and camlp4* binaries +- PR#5080, PR#5104: regression in type constructor handling by camlp4 +- PR#5090: bad interaction between toplevel and camlp4 +- PR#5095: ocamlbuild ignores some tags when building bytecode objects +- PR#5100: ocamlbuild always rebuilds a 'cmxs' file +- PR#5103: build and install objinfo when building with ocamlbuild +- PR#5109: crash when a parser calls a lexer that calls another parser +- PR#5110: invalid module name when using optional argument +- PR#5115: bytecode executables produced by msvc64 port crash on 32-bit versions +- PR#5117: bigarray: wrong function name without HAS_MMAP; missing include +- PR#5118: Camlp4o and integer literals +- PR#5122: camlp4 rejects lowercase identifiers for module types +- PR#5123: shift_right_big_int returns a wrong zero +- PR#5124: substitution inside a signature leads to odd printing +- PR#5128: typo in 'Camlp4ListComprehension' syntax extension +- PR#5136: obsolete function used in emacs mode +- PR#5145: ocamldoc: missing html escapes +- PR#5146: problem with spaces in multi-line string constants +- PR#5149: (partial) various documentation problems +- PR#5156: rare compiler crash with objects +- PR#5165: ocamlbuild does not pass '-thread' option to ocamlfind +- PR#5167: camlp4r loops when printing package type +- PR#5172: camlp4 support for 'module type of' construct +- PR#5175: in bigarray accesses, make sure bigarray expr is evaluated only once +- PR#5177: Gc.compact implies Gc.full_major +- PR#5182: use bytecode version of ocamldoc to generate man pages +- PR#5184: under Windows, alignment issue with bigarrays mapped from files +- PR#5188: double-free corruption in bytecode system threads +- PR#5192: mismatch between words and bytes in interpreting max_young_wosize +- PR#5202: error in documentation of atan2 +- PR#5209: natdynlink incorrectly detected on BSD systems +- PR#5213: ocamlbuild should pass '-rectypes' to ocamldoc when needed +- PR#5217: ocamlfind plugin should add '-linkpkg' for toplevel +- PR#5228: document the exceptions raised by functions in 'Filename' +- PR#5229: typo in build script ('TAG_LINE' vs 'TAGLINE') +- PR#5230: error in documentation of Scanf.Scanning.open_in +- PR#5234: option -shared reverses order of -cclib options +- PR#5237: incorrect .size directives generated for x86-32 and x86-64 +- PR#5244: String.compare uses polymorphic compare_val (regression of PR#4194) +- PR#5248: regression introduced while fixing PR#5118 +- PR#5252: typo in docs +- PR#5258: win32unix: unix fd leak under windows +- PR#5269: (tentative fix) Wrong ext_ref entries in .annot files +- PR#5272: caml.el doesn't recognize downto as a keyword +- PR#5276: issue with ocamlc -pack and recursively-packed modules +- PR#5280: alignment constraints incorrectly autodetected on MIPS 32 +- PR#5281: typo in error message +- PR#5308: unused variables not detected in "include (struct .. end)" +- camlp4 revised syntax printing bug in the toplevel (reported on caml-list) +- configure: do not define _WIN32 under cygwin +- Hardened generic comparison in the case where two custom blocks + are compared and have different sets of custom operations. +- Hardened comparison between bigarrays in the case where the two + bigarrays have different kinds. +- Fixed wrong autodetection of expm1() and log1p(). +- don't add .exe suffix when installing the ocamlmktop shell script +- ocamldoc: minor fixes related to the display of ocamldoc options +- fixed bug with huge values in OCAMLRUNPARAM +- mismatch between declaration and definition of caml_major_collection_slice + +Feature wishes: +- PR#4992: added '-ml-synonym' and '-mli-synonym' options to ocamldep +- PR#5065: added '-ocamldoc' option to ocamlbuild +- PR#5139: added possibility to add options to ocamlbuild +- PR#5158: added access to current camlp4 parsers and printers +- PR#5180: improved instruction selection for float operations on amd64 +- stdlib: added a 'usage_string' function to Arg +- allow with constraints to add a type equation to a datatype definition +- ocamldoc: allow to merge '@before' tags like other ones +- ocamlbuild: allow dependency on file "_oasis" + +Other changes: +- Changed default minor heap size from 32k to 256k words. +- Added new operation 'compare_ext' to custom blocks, called when + comparing a custom block value with an unboxed integer. Objective Caml 3.12.0: diff --git a/Changes_JoCaml b/Changes_JoCaml index c0cd8815b7..2ef2d4587d 100644 --- a/Changes_JoCaml +++ b/Changes_JoCaml @@ -1,7 +1,10 @@ +JoCaml 3.12.1 +------------- +- Follow ocaml release. - JoinPool bug: nagain was decremented twice! JoCaml 3.12.0 - +------------- - Corrected bug in typing : arguments of join-patterns must get unified, channel per channel, before compiling algebraic patterns in join-patterns. Reason: the compilation assumes @@ -6,8 +6,9 @@ INRIA" in the following directories and their sub-directories: and "the Compiler" refers to all files marked "Copyright INRIA" in the following directories and their sub-directories: - asmcomp, boot, bytecomp, debugger, driver, lex, ocamldoc, parsing, - tools, toplevel, typing, utils, yacc + asmcomp, boot, build, bytecomp, debugger, driver, lex, man, + ocamlbuild, ocamldoc, parsing, testsuite, tools, toplevel, typing, + utils, yacc The Compiler is distributed under the terms of the Q Public License version 1.0 with a change to choice of law (included below). @@ -273,7 +273,6 @@ base.opt: checkstack runtime core ocaml opt-core ocamlc.opt otherlibraries \ ocamlbuild.byte camlp4out $(DEBUGGER) ocamldoc ocamlopt.opt \ otherlibrariesopt - # Installation install: if test -d $(BINDIR); then : ; else $(MKDIR) $(BINDIR); fi diff --git a/README_OCAML b/README_OCAML index e82420df26..5933521d4f 100644 --- a/README_OCAML +++ b/README_OCAML @@ -21,7 +21,7 @@ native-code compiler currently runs on the following platforms: Tier 1 (actively used and maintained by the core Caml team): - AMD64 (Opteron) Linux + AMD64 (Opteron) Linux, MacOS X, MS Windows IA32 (Pentium) Linux, FreeBSD, MacOS X, MS Windows PowerPC MacOS X @@ -84,7 +84,7 @@ All files marked "Copyright INRIA" in this distribution are copyright INSTALLATION: -See the file INSTALL for installation instructions on Unix, Linux and +See the file INSTALL for installation instructions on Unix, Linux and MacOS X machines. For MS Windows, see README.win32. DOCUMENTATION: @@ -1,4 +1,4 @@ -3.13.0+dev3 (2011-03-07) +3.99.0+dev (2012-08-09) # 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 40f95a2855..a33a0fa9cd 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -338,9 +338,12 @@ let emit_instr fallthrough i = | Lop(Imove | Ispill | Ireload) -> let src = i.arg.(0) and dst = i.res.(0) in if src.loc <> dst.loc then begin - if src.typ = Float then - ` movsd {emit_reg src}, {emit_reg dst}\n` - else + match src.typ, src.loc, dst.loc with + Float, Reg _, Reg _ -> + ` movapd {emit_reg src}, {emit_reg dst}\n` + | Float, _, _ -> + ` movsd {emit_reg src}, {emit_reg dst}\n` + | _ -> ` movq {emit_reg src}, {emit_reg dst}\n` end | Lop(Iconst_int n) -> @@ -359,7 +362,7 @@ let emit_instr fallthrough i = | _ -> let lbl = new_label() in float_constants := (lbl, s) :: !float_constants; - ` movlpd {emit_label lbl}(%rip), {emit_reg i.res.(0)}\n` + ` movsd {emit_label lbl}(%rip), {emit_reg i.res.(0)}\n` end | Lop(Iconst_symbol s) -> ` {load_symbol_addr s}, {emit_reg i.res.(0)}\n` @@ -412,7 +415,7 @@ let emit_instr fallthrough i = | Single -> ` cvtss2sd {emit_addressing addr i.arg 0}, {emit_reg dest}\n` | Double | Double_u -> - ` movlpd {emit_addressing addr i.arg 0}, {emit_reg dest}\n` + ` movsd {emit_addressing addr i.arg 0}, {emit_reg dest}\n` end | Lop(Istore(chunk, addr)) -> begin match chunk with @@ -428,7 +431,7 @@ let emit_instr fallthrough i = ` cvtsd2ss {emit_reg i.arg.(0)}, %xmm15\n`; ` movss %xmm15, {emit_addressing addr i.arg 1}\n` | Double | Double_u -> - ` movlpd {emit_reg i.arg.(0)}, {emit_addressing addr i.arg 1}\n` + ` movsd {emit_reg i.arg.(0)}, {emit_addressing addr i.arg 1}\n` end | Lop(Ialloc n) -> if !fastcode_flag then begin diff --git a/asmcomp/amd64/emit_nt.mlp b/asmcomp/amd64/emit_nt.mlp index 3374f4d36b..724d6ee016 100644 --- a/asmcomp/amd64/emit_nt.mlp +++ b/asmcomp/amd64/emit_nt.mlp @@ -332,10 +332,13 @@ let emit_instr fallthrough i = | Lop(Imove | Ispill | Ireload) -> let src = i.arg.(0) and dst = i.res.(0) in if src.loc <> dst.loc then begin - if src.typ = Float then - ` movsd {emit_reg dst}, {emit_reg src}\n` - else - ` mov {emit_reg dst}, {emit_reg src}\n` + match src.typ, src.loc, dst.loc with + Float, Reg _, Reg _ -> + ` movapd {emit_reg dst}, {emit_reg src}\n` + | Float, _, _ -> + ` movsd {emit_reg dst}, {emit_reg src}\n` + | _ -> + ` mov {emit_reg dst}, {emit_reg src}\n` end | Lop(Iconst_int n) -> if n = 0n then begin @@ -357,7 +360,7 @@ let emit_instr fallthrough i = | _ -> let lbl = new_label() in float_constants := (lbl, s) :: !float_constants; - ` movlpd {emit_reg i.res.(0)}, {emit_label lbl}\n` + ` movsd {emit_reg i.res.(0)}, {emit_label lbl}\n` end | Lop(Iconst_symbol s) -> add_used_symbol s; @@ -418,7 +421,7 @@ let emit_instr fallthrough i = | Single -> ` cvtss2sd {emit_reg dest}, REAL4 PTR {emit_addressing addr i.arg 0}\n` | Double | Double_u -> - ` movlpd {emit_reg dest}, REAL8 PTR {emit_addressing addr i.arg 0}\n` + ` movsd {emit_reg dest}, REAL8 PTR {emit_addressing addr i.arg 0}\n` end | Lop(Istore(chunk, addr)) -> begin match chunk with @@ -434,7 +437,7 @@ let emit_instr fallthrough i = ` cvtsd2ss xmm15, {emit_reg i.arg.(0)}\n`; ` movss REAL4 PTR {emit_addressing addr i.arg 1}, xmm15\n` | Double | Double_u -> - ` movlpd REAL8 PTR {emit_addressing addr i.arg 1}, {emit_reg i.arg.(0)}\n` + ` movsd REAL8 PTR {emit_addressing addr i.arg 1}, {emit_reg i.arg.(0)}\n` end | Lop(Ialloc n) -> if !fastcode_flag then begin diff --git a/asmcomp/asmlink.ml b/asmcomp/asmlink.ml index 5f0b72fed2..d78880369f 100644 --- a/asmcomp/asmlink.ml +++ b/asmcomp/asmlink.ml @@ -262,7 +262,7 @@ let link_shared ppf objfiles output_name = Clflags.ccobjs := !Clflags.ccobjs @ !lib_ccobjs; Clflags.ccopts := !lib_ccopts @ !Clflags.ccopts; let objfiles = List.rev (List.map object_file_name objfiles) @ - !Clflags.ccobjs in + (List.rev !Clflags.ccobjs) in let startup = if !Clflags.keep_startup_file diff --git a/asmcomp/closure.ml b/asmcomp/closure.ml index aaf3ee7d52..d003fcf8cf 100644 --- a/asmcomp/closure.ml +++ b/asmcomp/closure.ml @@ -516,7 +516,7 @@ let rec close fenv cenv = function | ((ufunct, _), uargs) -> (Ugeneric_apply(ufunct, uargs, Debuginfo.none), Value_unknown) end - | Lsend(kind, met, obj, args) -> + | Lsend(kind, met, obj, args, _) -> let (umet, _) = close fenv cenv met in let (uobj, _) = close fenv cenv obj in (Usend(kind, umet, uobj, close_list fenv cenv args, Debuginfo.none), diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml index bf99b7c543..a39237c804 100644 --- a/asmcomp/cmmgen.ml +++ b/asmcomp/cmmgen.ml @@ -580,32 +580,34 @@ let bigarray_word_kind = function | Pbigarray_complex64 -> Double let bigarray_get unsafe elt_kind layout b args dbg = - match elt_kind with - Pbigarray_complex32 | Pbigarray_complex64 -> - let kind = bigarray_word_kind elt_kind in - let sz = bigarray_elt_size elt_kind / 2 in - bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr -> - box_complex - (Cop(Cload kind, [addr])) - (Cop(Cload kind, [Cop(Cadda, [addr; Cconst_int sz])]))) - | _ -> - Cop(Cload (bigarray_word_kind elt_kind), - [bigarray_indexing unsafe elt_kind layout b args dbg]) + bind "ba" b (fun b -> + match elt_kind with + Pbigarray_complex32 | Pbigarray_complex64 -> + let kind = bigarray_word_kind elt_kind in + let sz = bigarray_elt_size elt_kind / 2 in + bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr -> + box_complex + (Cop(Cload kind, [addr])) + (Cop(Cload kind, [Cop(Cadda, [addr; Cconst_int sz])]))) + | _ -> + Cop(Cload (bigarray_word_kind elt_kind), + [bigarray_indexing unsafe elt_kind layout b args dbg])) let bigarray_set unsafe elt_kind layout b args newval dbg = - match elt_kind with - Pbigarray_complex32 | Pbigarray_complex64 -> - let kind = bigarray_word_kind elt_kind in - let sz = bigarray_elt_size elt_kind / 2 in - bind "newval" newval (fun newv -> - bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr -> - Csequence( - Cop(Cstore kind, [addr; complex_re newv]), - Cop(Cstore kind, - [Cop(Cadda, [addr; Cconst_int sz]); complex_im newv])))) - | _ -> - Cop(Cstore (bigarray_word_kind elt_kind), - [bigarray_indexing unsafe elt_kind layout b args dbg; newval]) + bind "ba" b (fun b -> + match elt_kind with + Pbigarray_complex32 | Pbigarray_complex64 -> + let kind = bigarray_word_kind elt_kind in + let sz = bigarray_elt_size elt_kind / 2 in + bind "newval" newval (fun newv -> + bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr -> + Csequence( + Cop(Cstore kind, [addr; complex_re newv]), + Cop(Cstore kind, + [Cop(Cadda, [addr; Cconst_int sz]); complex_im newv])))) + | _ -> + Cop(Cstore (bigarray_word_kind elt_kind), + [bigarray_indexing unsafe elt_kind layout b args dbg; newval])) (* Simplification of some primitives into C calls *) diff --git a/asmcomp/comballoc.ml b/asmcomp/comballoc.ml index 5a862b1729..13dbcaffe2 100644 --- a/asmcomp/comballoc.ml +++ b/asmcomp/comballoc.ml @@ -38,7 +38,7 @@ let rec combine i allocstate = combine i.next (Pending_alloc(i.res.(0), sz)) in (instr_cons (Iop(Ialloc newsz)) i.arg i.res newnext, 0) | Pending_alloc(reg, ofs) -> - if ofs + sz < Config.max_young_wosize then begin + if ofs + sz < Config.max_young_wosize * Arch.size_addr then begin let (newnext, newsz) = combine i.next (Pending_alloc(reg, ofs + sz)) in (instr_cons (Iop(Iintop_imm(Iadd, ofs))) [| reg |] i.res newnext, diff --git a/asmcomp/i386/emit_nt.mlp b/asmcomp/i386/emit_nt.mlp index da1606e449..7091b3df8f 100644 --- a/asmcomp/i386/emit_nt.mlp +++ b/asmcomp/i386/emit_nt.mlp @@ -813,7 +813,7 @@ let emit_item = function add_def_symbol s ; `{emit_symbol s} LABEL DWORD\n` | Cdefine_label lbl -> - `{emit_label (100000 + lbl)} ` + `{emit_label (100000 + lbl)} LABEL DWORD\n` | Cint8 n -> ` BYTE {emit_int n}\n` | Cint16 n -> diff --git a/asmcomp/selectgen.ml b/asmcomp/selectgen.ml index a8979235e9..50f949a77f 100644 --- a/asmcomp/selectgen.ml +++ b/asmcomp/selectgen.ml @@ -824,3 +824,17 @@ method emit_fundecl f = fun_fast = f.Cmm.fun_fast } end + +(* Tail call criterion (estimated). Assumes: +- all arguments are of type "int" (always the case for Caml function calls) +- one extra argument representing the closure environment (conservative). +*) + +let is_tail_call nargs = + assert (Reg.dummy.typ = Int); + let args = Array.make (nargs + 1) Reg.dummy in + let (loc_arg, stack_ofs) = Proc.loc_arguments args in + stack_ofs = 0 + +let _ = + Simplif.is_tail_native_heuristic := is_tail_call diff --git a/asmrun/.depend b/asmrun/.depend index ab5bde8560..d51ba10315 100644 --- a/asmrun/.depend +++ b/asmrun/.depend @@ -4,21 +4,42 @@ alloc.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \ ../byterun/memory.h +alloc.p.o: alloc.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/stacks.h ../byterun/memory.h array.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h +array.p.o: array.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h backtrace.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h +backtrace.p.o: backtrace.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h callback.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/mlvalues.h +callback.p.o: callback.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/mlvalues.h compact.o: compact.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \ @@ -27,19 +48,40 @@ compact.o: compact.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/weak.h +compact.p.o: compact.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/weak.h compare.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h +compare.p.o: compare.p.c ../byterun/custom.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h custom.o: custom.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h +custom.p.o: custom.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h debugger.o: debugger.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h +debugger.p.o: debugger.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h dynlink.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \ @@ -54,30 +96,62 @@ extern.o: extern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/reverse.h +extern.p.o: extern.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/reverse.h fail.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \ ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h +fail.p.o: fail.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h ../byterun/gc.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/printexc.h ../byterun/signals.h stack.h ../byterun/roots.h \ + ../byterun/memory.h finalise.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/signals.h +finalise.p.o: finalise.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \ + ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/signals.h floats.o: floats.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h +floats.p.o: floats.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \ + ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h freelist.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h +freelist.p.o: freelist.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h gc_ctrl.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \ @@ -86,17 +160,36 @@ gc_ctrl.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h stack.h +gc_ctrl.p.o: gc_ctrl.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \ + ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h stack.h globroots.o: globroots.c ../byterun/memory.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \ ../byterun/globroots.h ../byterun/roots.h +globroots.p.o: globroots.p.c ../byterun/memory.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \ + ../byterun/globroots.h ../byterun/roots.h hash.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h +hash.p.o: hash.p.c ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ + ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h intern.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ @@ -104,12 +197,25 @@ intern.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h +intern.p.o: intern.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h ints.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \ ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h +ints.p.o: ints.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h io.o: io.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \ @@ -117,14 +223,29 @@ io.o: io.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \ ../byterun/sys.h +io.p.o: io.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \ + ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \ + ../byterun/sys.h lexing.o: lexing.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h +lexing.p.o: lexing.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h main.o: main.c ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/sys.h +main.p.o: main.p.c ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/sys.h major_gc.o: major_gc.c ../byterun/compact.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \ @@ -134,12 +255,27 @@ major_gc.o: major_gc.c ../byterun/compact.h ../byterun/config.h \ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/weak.h +major_gc.p.o: major_gc.p.c ../byterun/compact.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ + ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/weak.h md5.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \ ../byterun/reverse.h +md5.p.o: md5.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \ + ../byterun/reverse.h memory.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ @@ -147,6 +283,13 @@ memory.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/signals.h +memory.p.o: memory.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/signals.h meta.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \ @@ -164,17 +307,37 @@ minor_gc.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \ ../byterun/weak.h +minor_gc.p.o: minor_gc.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \ + ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \ + ../byterun/weak.h misc.o: misc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h +misc.p.o: misc.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h natdynlink.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \ natdynlink.h ../byterun/osdeps.h ../byterun/fail.h +natdynlink.p.o: natdynlink.p.c ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \ + natdynlink.h ../byterun/osdeps.h ../byterun/fail.h obj.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \ @@ -182,16 +345,33 @@ obj.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \ ../byterun/prims.h +obj.p.o: obj.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \ + ../byterun/prims.h parsing.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/alloc.h +parsing.p.o: parsing.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/alloc.h printexc.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \ ../byterun/printexc.h +printexc.p.o: printexc.p.c ../byterun/backtrace.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \ + ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \ + ../byterun/printexc.h roots.o: roots.c ../byterun/finalise.h ../byterun/roots.h \ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \ @@ -199,6 +379,13 @@ roots.o: roots.c ../byterun/finalise.h ../byterun/roots.h \ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h stack.h ../byterun/roots.h +roots.p.o: roots.p.c ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h stack.h ../byterun/roots.h signals.o: signals.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \ @@ -207,12 +394,26 @@ signals.o: signals.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \ ../byterun/sys.h +signals.p.o: signals.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \ + ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \ + ../byterun/sys.h signals_asm.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \ signals_osdep.h stack.h +signals_asm.p.o: signals_asm.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \ + signals_osdep.h stack.h startup.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \ @@ -221,9 +422,20 @@ startup.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \ ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h +startup.p.o: startup.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \ + ../byterun/fail.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \ + ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h str.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h +str.p.o: str.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h sys.o: sys.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \ @@ -231,41 +443,83 @@ sys.o: sys.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h +sys.p.o: sys.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \ + ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \ + ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h terminfo.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \ ../byterun/io.h ../byterun/mlvalues.h +terminfo.p.o: terminfo.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \ + ../byterun/io.h ../byterun/mlvalues.h unix.o: unix.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/osdeps.h +unix.p.o: unix.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \ + ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/osdeps.h weak.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h +weak.p.o: weak.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h alloc.d.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \ ../byterun/memory.h +alloc.p.d.o: alloc.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/stacks.h ../byterun/memory.h array.d.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h +array.p.d.o: array.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h backtrace.d.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h +backtrace.p.d.o: backtrace.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h callback.d.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/mlvalues.h +callback.p.d.o: callback.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/mlvalues.h compact.d.o: compact.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \ @@ -274,19 +528,40 @@ compact.d.o: compact.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/weak.h +compact.p.d.o: compact.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/weak.h compare.d.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h +compare.p.d.o: compare.p.c ../byterun/custom.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h custom.d.o: custom.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h +custom.p.d.o: custom.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h debugger.d.o: debugger.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h +debugger.p.d.o: debugger.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h dynlink.d.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \ @@ -301,30 +576,62 @@ extern.d.o: extern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/reverse.h +extern.p.d.o: extern.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/reverse.h fail.d.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \ ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h +fail.p.d.o: fail.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h ../byterun/gc.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/printexc.h ../byterun/signals.h stack.h ../byterun/roots.h \ + ../byterun/memory.h finalise.d.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/signals.h +finalise.p.d.o: finalise.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \ + ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/signals.h floats.d.o: floats.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h +floats.p.d.o: floats.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \ + ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h freelist.d.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h +freelist.p.d.o: freelist.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h gc_ctrl.d.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \ @@ -333,17 +640,36 @@ gc_ctrl.d.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h stack.h +gc_ctrl.p.d.o: gc_ctrl.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \ + ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h stack.h globroots.d.o: globroots.c ../byterun/memory.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \ ../byterun/globroots.h ../byterun/roots.h +globroots.p.d.o: globroots.p.c ../byterun/memory.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \ + ../byterun/globroots.h ../byterun/roots.h hash.d.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h +hash.p.d.o: hash.p.c ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ + ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h intern.d.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ @@ -351,12 +677,25 @@ intern.d.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h +intern.p.d.o: intern.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h ints.d.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \ ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h +ints.p.d.o: ints.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h io.d.o: io.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \ @@ -364,14 +703,29 @@ io.d.o: io.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \ ../byterun/sys.h +io.p.d.o: io.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \ + ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \ + ../byterun/sys.h lexing.d.o: lexing.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h +lexing.p.d.o: lexing.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h main.d.o: main.c ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/sys.h +main.p.d.o: main.p.c ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/sys.h major_gc.d.o: major_gc.c ../byterun/compact.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \ @@ -381,12 +735,27 @@ major_gc.d.o: major_gc.c ../byterun/compact.h ../byterun/config.h \ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/weak.h +major_gc.p.d.o: major_gc.p.c ../byterun/compact.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ + ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/weak.h md5.d.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \ ../byterun/reverse.h +md5.p.d.o: md5.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \ + ../byterun/reverse.h memory.d.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ @@ -394,6 +763,13 @@ memory.d.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/signals.h +memory.p.d.o: memory.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/signals.h meta.d.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \ @@ -411,17 +787,37 @@ minor_gc.d.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \ ../byterun/weak.h +minor_gc.p.d.o: minor_gc.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \ + ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \ + ../byterun/weak.h misc.d.o: misc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h +misc.p.d.o: misc.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h natdynlink.d.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \ natdynlink.h ../byterun/osdeps.h ../byterun/fail.h +natdynlink.p.d.o: natdynlink.p.c ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \ + natdynlink.h ../byterun/osdeps.h ../byterun/fail.h obj.d.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \ @@ -429,16 +825,33 @@ obj.d.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \ ../byterun/prims.h +obj.p.d.o: obj.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \ + ../byterun/prims.h parsing.d.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/alloc.h +parsing.p.d.o: parsing.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/alloc.h printexc.d.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \ ../byterun/printexc.h +printexc.p.d.o: printexc.p.c ../byterun/backtrace.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \ + ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \ + ../byterun/printexc.h roots.d.o: roots.c ../byterun/finalise.h ../byterun/roots.h \ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \ @@ -446,6 +859,13 @@ roots.d.o: roots.c ../byterun/finalise.h ../byterun/roots.h \ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h stack.h ../byterun/roots.h +roots.p.d.o: roots.p.c ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h stack.h ../byterun/roots.h signals.d.o: signals.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \ @@ -454,12 +874,26 @@ signals.d.o: signals.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \ ../byterun/sys.h +signals.p.d.o: signals.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \ + ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \ + ../byterun/sys.h signals_asm.d.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \ signals_osdep.h stack.h +signals_asm.p.d.o: signals_asm.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \ + signals_osdep.h stack.h startup.d.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \ @@ -468,9 +902,20 @@ startup.d.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \ ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h +startup.p.d.o: startup.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \ + ../byterun/fail.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \ + ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h str.d.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h +str.p.d.o: str.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h sys.d.o: sys.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \ @@ -478,41 +923,83 @@ sys.d.o: sys.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h +sys.p.d.o: sys.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \ + ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \ + ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h terminfo.d.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \ ../byterun/io.h ../byterun/mlvalues.h +terminfo.p.d.o: terminfo.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \ + ../byterun/io.h ../byterun/mlvalues.h unix.d.o: unix.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/osdeps.h +unix.p.d.o: unix.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \ + ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/osdeps.h weak.d.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h +weak.p.d.o: weak.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h alloc.p.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \ ../byterun/memory.h +alloc.p.p.o: alloc.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/stacks.h ../byterun/memory.h array.p.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h +array.p.p.o: array.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h backtrace.p.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h +backtrace.p.p.o: backtrace.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h callback.p.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/mlvalues.h +callback.p.p.o: callback.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/mlvalues.h compact.p.o: compact.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \ @@ -521,19 +1008,40 @@ compact.p.o: compact.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/weak.h +compact.p.p.o: compact.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/weak.h compare.p.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h +compare.p.p.o: compare.p.c ../byterun/custom.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h custom.p.o: custom.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h +custom.p.p.o: custom.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h debugger.p.o: debugger.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h +debugger.p.p.o: debugger.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h dynlink.p.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \ @@ -548,30 +1056,62 @@ extern.p.o: extern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/reverse.h +extern.p.p.o: extern.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/reverse.h fail.p.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \ ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h +fail.p.p.o: fail.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h ../byterun/gc.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/printexc.h ../byterun/signals.h stack.h ../byterun/roots.h \ + ../byterun/memory.h finalise.p.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/signals.h +finalise.p.p.o: finalise.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \ + ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/signals.h floats.p.o: floats.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h +floats.p.p.o: floats.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \ + ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h freelist.p.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h +freelist.p.p.o: freelist.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h gc_ctrl.p.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \ @@ -580,17 +1120,36 @@ gc_ctrl.p.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h stack.h +gc_ctrl.p.p.o: gc_ctrl.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \ + ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h stack.h globroots.p.o: globroots.c ../byterun/memory.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \ ../byterun/globroots.h ../byterun/roots.h +globroots.p.p.o: globroots.p.c ../byterun/memory.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \ + ../byterun/globroots.h ../byterun/roots.h hash.p.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h +hash.p.p.o: hash.p.c ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ + ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h intern.p.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ @@ -598,12 +1157,25 @@ intern.p.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h +intern.p.p.o: intern.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h ints.p.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \ ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h +ints.p.p.o: ints.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \ + ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h io.p.o: io.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \ @@ -611,14 +1183,29 @@ io.p.o: io.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \ ../byterun/sys.h +io.p.p.o: io.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \ + ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \ + ../byterun/sys.h lexing.p.o: lexing.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h +lexing.p.p.o: lexing.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h main.p.o: main.c ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/sys.h +main.p.p.o: main.p.c ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/sys.h major_gc.p.o: major_gc.c ../byterun/compact.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \ @@ -628,12 +1215,27 @@ major_gc.p.o: major_gc.c ../byterun/compact.h ../byterun/config.h \ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/weak.h +major_gc.p.p.o: major_gc.p.c ../byterun/compact.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ + ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/weak.h md5.p.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \ ../byterun/reverse.h +md5.p.p.o: md5.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \ + ../byterun/reverse.h memory.p.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ @@ -641,6 +1243,13 @@ memory.p.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/signals.h +memory.p.p.o: memory.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/signals.h meta.p.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \ @@ -658,17 +1267,37 @@ minor_gc.p.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \ ../byterun/weak.h +minor_gc.p.p.o: minor_gc.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \ + ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \ + ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \ + ../byterun/weak.h misc.p.o: misc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h +misc.p.p.o: misc.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h natdynlink.p.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \ natdynlink.h ../byterun/osdeps.h ../byterun/fail.h +natdynlink.p.p.o: natdynlink.p.c ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \ + natdynlink.h ../byterun/osdeps.h ../byterun/fail.h obj.p.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \ @@ -676,16 +1305,33 @@ obj.p.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \ ../byterun/prims.h +obj.p.p.o: obj.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \ + ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \ + ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \ + ../byterun/prims.h parsing.p.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/minor_gc.h ../byterun/alloc.h +parsing.p.p.o: parsing.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \ + ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/alloc.h printexc.p.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \ ../byterun/printexc.h +printexc.p.p.o: printexc.p.c ../byterun/backtrace.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \ + ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \ + ../byterun/printexc.h roots.p.o: roots.c ../byterun/finalise.h ../byterun/roots.h \ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \ @@ -693,6 +1339,13 @@ roots.p.o: roots.c ../byterun/finalise.h ../byterun/roots.h \ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ ../byterun/mlvalues.h stack.h ../byterun/roots.h +roots.p.p.o: roots.p.c ../byterun/finalise.h ../byterun/roots.h \ + ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \ + ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \ + ../byterun/mlvalues.h stack.h ../byterun/roots.h signals.p.o: signals.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \ @@ -701,12 +1354,26 @@ signals.p.o: signals.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \ ../byterun/sys.h +signals.p.p.o: signals.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \ + ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \ + ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \ + ../byterun/sys.h signals_asm.p.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \ signals_osdep.h stack.h +signals_asm.p.p.o: signals_asm.p.c ../byterun/fail.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \ + signals_osdep.h stack.h startup.p.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \ @@ -715,9 +1382,20 @@ startup.p.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \ ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h +startup.p.p.o: startup.p.c ../byterun/callback.h ../byterun/mlvalues.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \ + ../byterun/fail.h ../byterun/freelist.h ../byterun/gc.h \ + ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \ + ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h str.p.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h +str.p.p.o: str.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ + ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ + ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h sys.p.o: sys.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \ @@ -725,17 +1403,38 @@ sys.p.o: sys.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h +sys.p.p.o: sys.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \ + ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \ + ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \ + ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h terminfo.p.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \ ../byterun/io.h ../byterun/mlvalues.h +terminfo.p.p.o: terminfo.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \ + ../byterun/io.h ../byterun/mlvalues.h unix.p.o: unix.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ ../byterun/misc.h ../byterun/osdeps.h +unix.p.p.o: unix.p.c ../byterun/config.h ../byterun/../config/m.h \ + ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \ + ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/misc.h ../byterun/osdeps.h weak.p.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \ ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/minor_gc.h ../byterun/mlvalues.h +weak.p.p.o: weak.p.c ../byterun/alloc.h ../byterun/misc.h \ + ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/major_gc.h \ + ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \ + ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h diff --git a/asmrun/amd64.S b/asmrun/amd64.S index 97de518399..645c2e616d 100644 --- a/asmrun/amd64.S +++ b/asmrun/amd64.S @@ -147,44 +147,44 @@ FUNCTION(G(caml_call_gc)) STORE_VAR(%r14, caml_exception_pointer) /* Save floating-point registers */ subq $(16*8), %rsp - movlpd %xmm0, 0*8(%rsp) - movlpd %xmm1, 1*8(%rsp) - movlpd %xmm2, 2*8(%rsp) - movlpd %xmm3, 3*8(%rsp) - movlpd %xmm4, 4*8(%rsp) - movlpd %xmm5, 5*8(%rsp) - movlpd %xmm6, 6*8(%rsp) - movlpd %xmm7, 7*8(%rsp) - movlpd %xmm8, 8*8(%rsp) - movlpd %xmm9, 9*8(%rsp) - movlpd %xmm10, 10*8(%rsp) - movlpd %xmm11, 11*8(%rsp) - movlpd %xmm12, 12*8(%rsp) - movlpd %xmm13, 13*8(%rsp) - movlpd %xmm14, 14*8(%rsp) - movlpd %xmm15, 15*8(%rsp) + movsd %xmm0, 0*8(%rsp) + movsd %xmm1, 1*8(%rsp) + movsd %xmm2, 2*8(%rsp) + movsd %xmm3, 3*8(%rsp) + movsd %xmm4, 4*8(%rsp) + movsd %xmm5, 5*8(%rsp) + movsd %xmm6, 6*8(%rsp) + movsd %xmm7, 7*8(%rsp) + movsd %xmm8, 8*8(%rsp) + movsd %xmm9, 9*8(%rsp) + movsd %xmm10, 10*8(%rsp) + movsd %xmm11, 11*8(%rsp) + movsd %xmm12, 12*8(%rsp) + movsd %xmm13, 13*8(%rsp) + movsd %xmm14, 14*8(%rsp) + movsd %xmm15, 15*8(%rsp) /* Call the garbage collector */ call GCALL(caml_garbage_collection) /* Restore caml_young_ptr, caml_exception_pointer */ LOAD_VAR(caml_young_ptr, %r15) LOAD_VAR(caml_exception_pointer, %r14) /* Restore all regs used by the code generator */ - movlpd 0*8(%rsp), %xmm0 - movlpd 1*8(%rsp), %xmm1 - movlpd 2*8(%rsp), %xmm2 - movlpd 3*8(%rsp), %xmm3 - movlpd 4*8(%rsp), %xmm4 - movlpd 5*8(%rsp), %xmm5 - movlpd 6*8(%rsp), %xmm6 - movlpd 7*8(%rsp), %xmm7 - movlpd 8*8(%rsp), %xmm8 - movlpd 9*8(%rsp), %xmm9 - movlpd 10*8(%rsp), %xmm10 - movlpd 11*8(%rsp), %xmm11 - movlpd 12*8(%rsp), %xmm12 - movlpd 13*8(%rsp), %xmm13 - movlpd 14*8(%rsp), %xmm14 - movlpd 15*8(%rsp), %xmm15 + movsd 0*8(%rsp), %xmm0 + movsd 1*8(%rsp), %xmm1 + movsd 2*8(%rsp), %xmm2 + movsd 3*8(%rsp), %xmm3 + movsd 4*8(%rsp), %xmm4 + movsd 5*8(%rsp), %xmm5 + movsd 6*8(%rsp), %xmm6 + movsd 7*8(%rsp), %xmm7 + movsd 8*8(%rsp), %xmm8 + movsd 9*8(%rsp), %xmm9 + movsd 10*8(%rsp), %xmm10 + movsd 11*8(%rsp), %xmm11 + movsd 12*8(%rsp), %xmm12 + movsd 13*8(%rsp), %xmm13 + movsd 14*8(%rsp), %xmm14 + movsd 15*8(%rsp), %xmm15 addq $(16*8), %rsp popq %rax popq %rbx diff --git a/asmrun/amd64nt.asm b/asmrun/amd64nt.asm index c1d97e05b1..4c31bc8731 100644 --- a/asmrun/amd64nt.asm +++ b/asmrun/amd64nt.asm @@ -67,43 +67,43 @@ L105: mov caml_gc_regs, rsp ; Save floating-point registers sub rsp, 16*8 - movlpd QWORD PTR [rsp + 0*8], xmm0 - movlpd QWORD PTR [rsp + 1*8], xmm1 - movlpd QWORD PTR [rsp + 2*8], xmm2 - movlpd QWORD PTR [rsp + 3*8], xmm3 - movlpd QWORD PTR [rsp + 4*8], xmm4 - movlpd QWORD PTR [rsp + 5*8], xmm5 - movlpd QWORD PTR [rsp + 6*8], xmm6 - movlpd QWORD PTR [rsp + 7*8], xmm7 - movlpd QWORD PTR [rsp + 8*8], xmm8 - movlpd QWORD PTR [rsp + 9*8], xmm9 - movlpd QWORD PTR [rsp + 10*8], xmm10 - movlpd QWORD PTR [rsp + 11*8], xmm11 - movlpd QWORD PTR [rsp + 12*8], xmm12 - movlpd QWORD PTR [rsp + 13*8], xmm13 - movlpd QWORD PTR [rsp + 14*8], xmm14 - movlpd QWORD PTR [rsp + 15*8], xmm15 + movsd QWORD PTR [rsp + 0*8], xmm0 + movsd QWORD PTR [rsp + 1*8], xmm1 + movsd QWORD PTR [rsp + 2*8], xmm2 + movsd QWORD PTR [rsp + 3*8], xmm3 + movsd QWORD PTR [rsp + 4*8], xmm4 + movsd QWORD PTR [rsp + 5*8], xmm5 + movsd QWORD PTR [rsp + 6*8], xmm6 + movsd QWORD PTR [rsp + 7*8], xmm7 + movsd QWORD PTR [rsp + 8*8], xmm8 + movsd QWORD PTR [rsp + 9*8], xmm9 + movsd QWORD PTR [rsp + 10*8], xmm10 + movsd QWORD PTR [rsp + 11*8], xmm11 + movsd QWORD PTR [rsp + 12*8], xmm12 + movsd QWORD PTR [rsp + 13*8], xmm13 + movsd QWORD PTR [rsp + 14*8], xmm14 + movsd QWORD PTR [rsp + 15*8], xmm15 ; Call the garbage collector sub rsp, 32 ; PR#5008: bottom 32 bytes are reserved for callee call caml_garbage_collection add rsp, 32 ; PR#5008 ; Restore all regs used by the code generator - movlpd xmm0, QWORD PTR [rsp + 0*8] - movlpd xmm1, QWORD PTR [rsp + 1*8] - movlpd xmm2, QWORD PTR [rsp + 2*8] - movlpd xmm3, QWORD PTR [rsp + 3*8] - movlpd xmm4, QWORD PTR [rsp + 4*8] - movlpd xmm5, QWORD PTR [rsp + 5*8] - movlpd xmm6, QWORD PTR [rsp + 6*8] - movlpd xmm7, QWORD PTR [rsp + 7*8] - movlpd xmm8, QWORD PTR [rsp + 8*8] - movlpd xmm9, QWORD PTR [rsp + 9*8] - movlpd xmm10, QWORD PTR [rsp + 10*8] - movlpd xmm11, QWORD PTR [rsp + 11*8] - movlpd xmm12, QWORD PTR [rsp + 12*8] - movlpd xmm13, QWORD PTR [rsp + 13*8] - movlpd xmm14, QWORD PTR [rsp + 14*8] - movlpd xmm15, QWORD PTR [rsp + 15*8] + movsd xmm0, QWORD PTR [rsp + 0*8] + movsd xmm1, QWORD PTR [rsp + 1*8] + movsd xmm2, QWORD PTR [rsp + 2*8] + movsd xmm3, QWORD PTR [rsp + 3*8] + movsd xmm4, QWORD PTR [rsp + 4*8] + movsd xmm5, QWORD PTR [rsp + 5*8] + movsd xmm6, QWORD PTR [rsp + 6*8] + movsd xmm7, QWORD PTR [rsp + 7*8] + movsd xmm8, QWORD PTR [rsp + 8*8] + movsd xmm9, QWORD PTR [rsp + 9*8] + movsd xmm10, QWORD PTR [rsp + 10*8] + movsd xmm11, QWORD PTR [rsp + 11*8] + movsd xmm12, QWORD PTR [rsp + 12*8] + movsd xmm13, QWORD PTR [rsp + 13*8] + movsd xmm14, QWORD PTR [rsp + 14*8] + movsd xmm15, QWORD PTR [rsp + 15*8] add rsp, 16*8 pop rax pop rbx diff --git a/boot/ocamlc b/boot/ocamlc Binary files differindex 182ac395e6..60b3f4f754 100755 --- a/boot/ocamlc +++ b/boot/ocamlc diff --git a/boot/ocamldep b/boot/ocamldep Binary files differindex a4add20b5f..1e3597d47f 100755 --- a/boot/ocamldep +++ b/boot/ocamldep diff --git a/boot/ocamllex b/boot/ocamllex Binary files differindex 151c06019e..3f2607705d 100755 --- a/boot/ocamllex +++ b/boot/ocamllex diff --git a/build/boot.sh b/build/boot.sh index 7329d20b76..3de6006abf 100755 --- a/build/boot.sh +++ b/build/boot.sh @@ -2,7 +2,7 @@ # $Id$ cd `dirname $0`/.. set -ex -TAGLINE='true: -use_stdlib' +TAG_LINE='true: -use_stdlib' ./boot/ocamlrun boot/myocamlbuild.boot \ -tag-line "$TAG_LINE" \ boot/stdlib.cma boot/std_exit.cmo diff --git a/build/camlp4-bootstrap-recipe.txt b/build/camlp4-bootstrap-recipe.txt index 9f1417a2fa..264d63551e 100644 --- a/build/camlp4-bootstrap-recipe.txt +++ b/build/camlp4-bootstrap-recipe.txt @@ -95,7 +95,8 @@ Then "Generate Camlp4Ast.ml" and build. We get a single warning in Camlp4/Struct/Camlp4Ast2OCamlAst.ml but - don't fix it now. + don't fix it now. Notice that you may need to disable '-warn-error' + in order to be able to successfully compile, despite of the warning. Then I hacked the camlp4/boot/camlp4boot.ml to generate: Ast.ExOpI(_loc, i, e) diff --git a/build/camlp4-byte-only.sh b/build/camlp4-byte-only.sh index ab98ef50ff..39b346172d 100755 --- a/build/camlp4-byte-only.sh +++ b/build/camlp4-byte-only.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### diff --git a/build/camlp4-native-only.sh b/build/camlp4-native-only.sh index d9bdbd1db5..629684b7b2 100755 --- a/build/camlp4-native-only.sh +++ b/build/camlp4-native-only.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### diff --git a/build/fastworld.sh b/build/fastworld.sh index 10ffa812f8..8263908057 100755 --- a/build/fastworld.sh +++ b/build/fastworld.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### @@ -45,3 +44,7 @@ cp _build/myocamlbuild boot/myocamlbuild.native $OCAMLC_NATIVE $TOPLEVEL $OTHERLIBS_BYTE $OTHERLIBS_NATIVE $OCAMLLEX_BYTE \ $OCAMLLEX_NATIVE $TOOLS_BYTE $TOOLS_NATIVE $DEBUGGER \ $OCAMLDOC_BYTE $OCAMLDOC_NATIVE $OCAMLBUILD_BYTE $CAMLP4_BYTE $CAMLP4_NATIVE + +cd tools +make objinfo_helper +cd .. diff --git a/build/install.sh b/build/install.sh index 1a60a87ecc..264d598312 100755 --- a/build/install.sh +++ b/build/install.sh @@ -264,6 +264,8 @@ installbin lex/ocamllex.opt$EXE $BINDIR/ocamllex.opt$EXE installbin tools/ocamldep.native$EXE $BINDIR/ocamldep.opt$EXE echo "Installing some tools..." +installbin tools/objinfo.byte$EXE $BINDIR/ocamlobjinfo$EXE +installbin ../tools/objinfo_helper$EXE $LIBDIR/objinfo_helper$EXE installbin tools/ocamlcp.byte$EXE $BINDIR/ocamlcp$EXE installbin tools/ocamldep.byte$EXE $BINDIR/ocamldep$EXE installbin tools/ocamlmklib.byte$EXE $BINDIR/ocamlmklib$EXE diff --git a/build/ocamlbuild-byte-only.sh b/build/ocamlbuild-byte-only.sh index 17f7b87a86..2f226d422c 100755 --- a/build/ocamlbuild-byte-only.sh +++ b/build/ocamlbuild-byte-only.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### diff --git a/build/ocamlbuild-native-only.sh b/build/ocamlbuild-native-only.sh index ce96412745..c61f6a1ab9 100755 --- a/build/ocamlbuild-native-only.sh +++ b/build/ocamlbuild-native-only.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### diff --git a/build/ocamlbuildlib-native-only.sh b/build/ocamlbuildlib-native-only.sh index a7a570a924..52bfb8fe24 100755 --- a/build/ocamlbuildlib-native-only.sh +++ b/build/ocamlbuildlib-native-only.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### diff --git a/build/otherlibs-targets.sh b/build/otherlibs-targets.sh index 301b75f191..e3d9fedf27 100644 --- a/build/otherlibs-targets.sh +++ b/build/otherlibs-targets.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### diff --git a/build/targets.sh b/build/targets.sh index 146015a637..66406aab04 100644 --- a/build/targets.sh +++ b/build/targets.sh @@ -30,7 +30,8 @@ OCAMLBUILD_BYTE="ocamlbuild/ocamlbuildlib.cma \ ocamlbuild/ocamlbuild.byte$EXE \ ocamlbuild/ocamlbuildlight.byte$EXE" TOPLEVEL=ocaml$EXE -TOOLS_BYTE="tools/ocamldep.byte$EXE tools/profiling.cmo \ +TOOLS_BYTE="tools/objinfo.byte$EXE \ + tools/ocamldep.byte$EXE tools/profiling.cmo \ tools/ocamlprof.byte$EXE tools/ocamlcp.byte$EXE \ tools/ocamlmktop.byte$EXE tools/ocamlmklib$EXE \ tools/scrapelabels.byte tools/addlabels.byte \ diff --git a/build/world.sh b/build/world.sh index 0b9a4b2891..534bce5459 100755 --- a/build/world.sh +++ b/build/world.sh @@ -8,8 +8,7 @@ # # # Copyright 2008 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. # +# under the terms of the Q Public License version 1.0. # # # ######################################################################### diff --git a/bytecomp/bytegen.ml b/bytecomp/bytegen.ml index 09c254d4f3..b6c8f6fae8 100644 --- a/bytecomp/bytegen.ml +++ b/bytecomp/bytegen.ml @@ -413,12 +413,10 @@ let rec comp_expr env exp sz cont = | Lapply(func, args, loc) -> let nargs = List.length args in if is_tailcall cont then begin - Stypes.record (Stypes.An_call (loc, Annot.Tail)); comp_args env args sz (Kpush :: comp_expr env func (sz + nargs) (Kappterm(nargs, sz + nargs) :: discard_dead_code cont)) end else begin - Stypes.record (Stypes.An_call (loc, Annot.Stack)); if nargs < 4 then comp_args env args sz (Kpush :: comp_expr env func (sz + nargs) (Kapply nargs :: cont)) @@ -430,7 +428,7 @@ let rec comp_expr env exp sz cont = (Kapply nargs :: cont1)) end end - | Lsend(kind, met, obj, args) -> + | Lsend(kind, met, obj, args, _) -> let args = if kind = Cached then List.tl args else args in let nargs = List.length args + 1 in let getmethod, args' = @@ -746,9 +744,9 @@ let rec comp_expr env exp sz cont = | Lev_after ty -> let info = match lam with - Lapply(_, args, _) -> Event_return (List.length args) - | Lsend(_, _, _, args) -> Event_return (List.length args + 1) - | _ -> Event_other + Lapply(_, args, _) -> Event_return (List.length args) + | Lsend(_, _, _, args, _) -> Event_return (List.length args + 1) + | _ -> Event_other in let ev = event (Event_after ty) info in let cont1 = add_event ev cont in diff --git a/bytecomp/bytelink.ml b/bytecomp/bytelink.ml index 3165777dd9..ad1a3cc708 100644 --- a/bytecomp/bytelink.ml +++ b/bytecomp/bytelink.ml @@ -407,15 +407,15 @@ let link_bytecode_as_c tolink outfile = begin try (* The bytecode *) output_string outchan "\ -#ifdef __cplusplus\n\ -extern \"C\" {\n\ -#endif\n\ -#include <caml/mlvalues.h>\n\ -CAMLextern void caml_startup_code(\n\ - code_t code, asize_t code_size,\n\ - char *data, asize_t data_size,\n\ - char *section_table, asize_t section_table_size,\n\ - char **argv);\n"; +#ifdef __cplusplus\ +\nextern \"C\" {\ +\n#endif\ +\n#include <caml/mlvalues.h>\ +\nCAMLextern void caml_startup_code(\ +\n code_t code, asize_t code_size,\ +\n char *data, asize_t data_size,\ +\n char *section_table, asize_t section_table_size,\ +\n char **argv);\n"; output_string outchan "static int caml_code[] = {\n"; Symtable.init(); Consistbl.clear crc_interfaces; @@ -444,17 +444,17 @@ CAMLextern void caml_startup_code(\n\ (* The table of primitives *) Symtable.output_primitive_table outchan; (* The entry point *) - output_string outchan "\n\ -void caml_startup(char ** argv)\n\ -{\n\ - caml_startup_code(caml_code, sizeof(caml_code),\n\ - caml_data, sizeof(caml_data),\n\ - caml_sections, sizeof(caml_sections),\n\ - argv);\n\ -}\n\ -#ifdef __cplusplus\n\ -}\n\ -#endif\n"; + output_string outchan "\ +\nvoid caml_startup(char ** argv)\ +\n{\ +\n caml_startup_code(caml_code, sizeof(caml_code),\ +\n caml_data, sizeof(caml_data),\ +\n caml_sections, sizeof(caml_sections),\ +\n argv);\ +\n}\ +\n#ifdef __cplusplus\ +\n}\ +\n#endif\n"; close_out outchan with x -> close_out outchan; diff --git a/bytecomp/bytepackager.ml b/bytecomp/bytepackager.ml index 6649aa3d51..e2b6ff54bb 100644 --- a/bytecomp/bytepackager.ml +++ b/bytecomp/bytepackager.ml @@ -39,7 +39,7 @@ let force_link = ref false SETGLOBAL relocations that correspond to one of the units being consolidated. *) -let rename_relocation objfile mapping defined base (rel, ofs) = +let rename_relocation packagename objfile mapping defined base (rel, ofs) = let rel' = match rel with Reloc_getglobal id -> @@ -49,7 +49,14 @@ let rename_relocation objfile mapping defined base (rel, ofs) = then Reloc_getglobal id' else raise(Error(Forward_reference(objfile, id))) with Not_found -> - rel + (* PR#5276: unique-ize dotted global names, which appear + if one of the units being consolidated is itself a packed + module. *) + let name = Ident.name id in + if String.contains name '.' then + Reloc_getglobal (Ident.create_persistent (packagename ^ "." ^ name)) + else + rel end | Reloc_setglobal id -> begin try @@ -58,7 +65,12 @@ let rename_relocation objfile mapping defined base (rel, ofs) = then raise(Error(Multiple_definition(objfile, id))) else Reloc_setglobal id' with Not_found -> - rel + (* PR#5276, as above *) + let name = Ident.name id in + if String.contains name '.' then + Reloc_setglobal (Ident.create_persistent (packagename ^ "." ^ name)) + else + rel end | _ -> rel in @@ -112,12 +124,12 @@ let read_member_info file = Accumulate relocs, debug info, etc. Return size of bytecode. *) -let rename_append_bytecode oc mapping defined ofs prefix subst objfile compunit = +let rename_append_bytecode packagename oc mapping defined ofs prefix subst objfile compunit = let ic = open_in_bin objfile in try Bytelink.check_consistency objfile compunit; List.iter - (rename_relocation objfile mapping defined ofs) + (rename_relocation packagename objfile mapping defined ofs) compunit.cu_reloc; primitives := compunit.cu_primitives @ !primitives; if compunit.cu_force_link then force_link := true; @@ -136,20 +148,20 @@ let rename_append_bytecode oc mapping defined ofs prefix subst objfile compunit (* Same, for a list of .cmo and .cmi files. Return total size of bytecode. *) -let rec rename_append_bytecode_list oc mapping defined ofs prefix subst = function +let rec rename_append_bytecode_list packagename oc mapping defined ofs prefix subst = function [] -> ofs | m :: rem -> match m.pm_kind with | PM_intf -> - rename_append_bytecode_list oc mapping defined ofs prefix subst rem + rename_append_bytecode_list packagename oc mapping defined ofs prefix subst rem | PM_impl compunit -> let size = - rename_append_bytecode oc mapping defined ofs prefix subst + rename_append_bytecode packagename oc mapping defined ofs prefix subst m.pm_file compunit in let id = Ident.create_persistent m.pm_name in let root = Path.Pident (Ident.create_persistent prefix) in - rename_append_bytecode_list + rename_append_bytecode_list packagename oc mapping (id :: defined) (ofs + size) prefix (Subst.add_module id (Path.Pdot (root, Ident.name id, Path.nopos)) subst) rem @@ -191,7 +203,7 @@ let package_object_files files targetfile targetname coercion = let pos_depl = pos_out oc in output_binary_int oc 0; let pos_code = pos_out oc in - let ofs = rename_append_bytecode_list oc mapping [] 0 targetname Subst.identity members in + let ofs = rename_append_bytecode_list targetname oc mapping [] 0 targetname Subst.identity members in build_global_target oc targetname members mapping ofs coercion; let pos_debug = pos_out oc in if !Clflags.debug && !events <> [] then diff --git a/bytecomp/lambda.ml b/bytecomp/lambda.ml index d299883b24..09e48967b0 100644 --- a/bytecomp/lambda.ml +++ b/bytecomp/lambda.ml @@ -140,7 +140,7 @@ type lambda = | Lwhile of lambda * lambda | Lfor of Ident.t * lambda * lambda * direction_flag * lambda | Lassign of Ident.t * lambda - | Lsend of meth_kind * lambda * lambda * lambda list + | Lsend of meth_kind * lambda * lambda * lambda list * Location.t | Levent of lambda * lambda_event | Lifused of Ident.t * lambda @@ -202,7 +202,7 @@ let rec same l1 l2 = same b1 b2 && df1 = df2 && same c1 c2 | Lassign(id1, a1), Lassign(id2, a2) -> Ident.same id1 id2 && same a1 a2 - | Lsend(k1, a1, b1, cl1), Lsend(k2, a2, b2, cl2) -> + | Lsend(k1, a1, b1, cl1, _), Lsend(k2, a2, b2, cl2, _) -> k1 = k2 && same a1 a2 && same b1 b2 && samelist same cl1 cl2 | Levent(a1, ev1), Levent(a2, ev2) -> same a1 a2 && ev1.lev_loc = ev2.lev_loc @@ -278,7 +278,7 @@ let rec iter f = function f e1; f e2; f e3 | Lassign(id, e) -> f e - | Lsend (k, met, obj, args) -> + | Lsend (k, met, obj, args, _) -> List.iter f (met::obj::args) | Levent (lam, evt) -> f lam @@ -321,7 +321,7 @@ let free_variables l = free_ids (function Lvar id -> [id] | _ -> []) l let free_methods l = - free_ids (function Lsend(Self, Lvar meth, obj, _) -> [meth] | _ -> []) l + free_ids (function Lsend(Self, Lvar meth, obj, _, _) -> [meth] | _ -> []) l (* Check if an action has a "when" guard *) let raise_count = ref 0 @@ -399,8 +399,8 @@ let subst_lambda s lam = | Lwhile(e1, e2) -> Lwhile(subst e1, subst e2) | Lfor(v, e1, e2, dir, e3) -> Lfor(v, subst e1, subst e2, dir, subst e3) | Lassign(id, e) -> Lassign(id, subst e) - | Lsend (k, met, obj, args) -> - Lsend (k, subst met, subst obj, List.map subst args) + | Lsend (k, met, obj, args, loc) -> + Lsend (k, subst met, subst obj, List.map subst args, loc) | Levent (lam, evt) -> Levent (subst lam, evt) | Lifused (v, e) -> Lifused (v, subst e) and subst_decl (id, exp) = (id, subst exp) diff --git a/bytecomp/lambda.mli b/bytecomp/lambda.mli index bdafb9984b..60ca4b8b58 100644 --- a/bytecomp/lambda.mli +++ b/bytecomp/lambda.mli @@ -149,7 +149,7 @@ type lambda = | Lwhile of lambda * lambda | Lfor of Ident.t * lambda * lambda * direction_flag * lambda | Lassign of Ident.t * lambda - | Lsend of meth_kind * lambda * lambda * lambda list + | Lsend of meth_kind * lambda * lambda * lambda list * Location.t | Levent of lambda * lambda_event | Lifused of Ident.t * lambda diff --git a/bytecomp/printlambda.ml b/bytecomp/printlambda.ml index 0d6e19148d..9bfa099e15 100644 --- a/bytecomp/printlambda.ml +++ b/bytecomp/printlambda.ml @@ -285,7 +285,7 @@ let rec lam ppf = function lam hi lam body | Lassign(id, expr) -> fprintf ppf "@[<2>(assign@ %a@ %a)@]" Ident.print id lam expr - | Lsend (k, met, obj, largs) -> + | Lsend (k, met, obj, largs, _) -> let args ppf largs = List.iter (fun l -> fprintf ppf "@ %a" lam l) largs in let kind = diff --git a/bytecomp/simplif.ml b/bytecomp/simplif.ml index 6081d5bd4a..cd942ca2d5 100644 --- a/bytecomp/simplif.ml +++ b/bytecomp/simplif.ml @@ -75,9 +75,9 @@ let rec eliminate_ref id = function dir, eliminate_ref id e3) | Lassign(v, e) -> Lassign(v, eliminate_ref id e) - | Lsend(k, m, o, el) -> + | Lsend(k, m, o, el, loc) -> Lsend(k, eliminate_ref id m, eliminate_ref id o, - List.map (eliminate_ref id) el) + List.map (eliminate_ref id) el, loc) | Levent(l, ev) -> Levent(eliminate_ref id l, ev) | Lifused(v, e) -> @@ -144,7 +144,7 @@ let simplify_exits lam = (* Lalias-bound variables are never assigned, so don't increase v's refcount *) count l - | Lsend(k, m, o, ll) -> List.iter count (m::o::ll) + | Lsend(k, m, o, ll, _) -> List.iter count (m::o::ll) | Levent(l, _) -> count l | Lifused(v, l) -> count l @@ -250,7 +250,7 @@ let simplify_exits lam = | Lfor(v, l1, l2, dir, l3) -> Lfor(v, simplif l1, simplif l2, dir, simplif l3) | Lassign(v, l) -> Lassign(v, simplif l) - | Lsend(k, m, o, ll) -> Lsend(k, simplif m, simplif o, List.map simplif ll) + | Lsend(k, m, o, ll, loc) -> Lsend(k, simplif m, simplif o, List.map simplif ll, loc) | Levent(l, ev) -> Levent(simplif l, ev) | Lifused(v, l) -> Lifused (v,simplif l) in @@ -313,7 +313,7 @@ let simplify_lets lam = (* Lalias-bound variables are never assigned, so don't increase v's refcount *) count l - | Lsend(_, m, o, ll) -> List.iter count (m::o::ll) + | Lsend(_, m, o, ll, _) -> List.iter count (m::o::ll) | Levent(l, _) -> count l | Lifused(v, l) -> if count_var v > 0 then count l @@ -402,11 +402,93 @@ let simplify_lets lam = | Lfor(v, l1, l2, dir, l3) -> Lfor(v, simplif l1, simplif l2, dir, simplif l3) | Lassign(v, l) -> Lassign(v, simplif l) - | Lsend(k, m, o, ll) -> Lsend(k, simplif m, simplif o, List.map simplif ll) + | Lsend(k, m, o, ll, loc) -> Lsend(k, simplif m, simplif o, List.map simplif ll, loc) | Levent(l, ev) -> Levent(simplif l, ev) | Lifused(v, l) -> if count_var v > 0 then simplif l else lambda_unit in simplif lam -let simplify_lambda lam = simplify_lets (simplify_exits lam) +(* Tail call info in annotation files *) + +let is_tail_native_heuristic : (int -> bool) ref = + ref (fun n -> true) + +let rec emit_tail_infos is_tail lambda = + let call_kind args = + if is_tail + && ((not !Clflags.native_code) + || (!is_tail_native_heuristic (List.length args))) + then Annot.Tail + else Annot.Stack in + match lambda with + | Lvar _ -> () + | Lconst _ -> () + | Lapply (func, l, loc) -> + list_emit_tail_infos false l; + Stypes.record (Stypes.An_call (loc, call_kind l)) + | Lfunction (_, _, lam) -> + emit_tail_infos true lam + | Llet (_, _, lam, body) -> + emit_tail_infos false lam; + emit_tail_infos is_tail body + | Lletrec (bindings, body) -> + List.iter (fun (_, lam) -> emit_tail_infos false lam) bindings; + emit_tail_infos is_tail body + | Lprim (Pidentity, [arg]) -> + emit_tail_infos is_tail arg + | Lprim (Psequand, [arg1; arg2]) + | Lprim (Psequor, [arg1; arg2]) -> + emit_tail_infos false arg1; + emit_tail_infos is_tail arg2 + | Lprim (_, l) -> + list_emit_tail_infos false l + | Lswitch (lam, sw) -> + emit_tail_infos false lam; + list_emit_tail_infos_fun snd is_tail sw.sw_consts; + list_emit_tail_infos_fun snd is_tail sw.sw_blocks + | Lstaticraise (_, l) -> + list_emit_tail_infos false l + | Lstaticcatch (body, _, handler) -> + emit_tail_infos is_tail body; + emit_tail_infos is_tail handler + | Ltrywith (body, _, handler) -> + emit_tail_infos false body; + emit_tail_infos is_tail handler + | Lifthenelse (cond, ifso, ifno) -> + emit_tail_infos false cond; + emit_tail_infos is_tail ifso; + emit_tail_infos is_tail ifno + | Lsequence (lam1, lam2) -> + emit_tail_infos false lam1; + emit_tail_infos is_tail lam2 + | Lwhile (cond, body) -> + emit_tail_infos false cond; + emit_tail_infos false body + | Lfor (_, low, high, _, body) -> + emit_tail_infos false low; + emit_tail_infos false high; + emit_tail_infos false body + | Lassign (_, lam) -> + emit_tail_infos false lam + | Lsend (_, meth, obj, args, loc) -> + emit_tail_infos false meth; + emit_tail_infos false obj; + list_emit_tail_infos false args; + Stypes.record (Stypes.An_call (loc, call_kind (obj :: args))) + | Levent (lam, _) -> + emit_tail_infos is_tail lam + | Lifused (_, lam) -> + emit_tail_infos is_tail lam +and list_emit_tail_infos_fun f is_tail = + List.iter (fun x -> emit_tail_infos is_tail (f x)) +and list_emit_tail_infos is_tail = + List.iter (emit_tail_infos is_tail) + +(* The entry point: + simplification + emission of tailcall annotations, if needed. *) + +let simplify_lambda lam = + let res = simplify_lets (simplify_exits lam) in + if !Clflags.annotations then emit_tail_infos true res; + res diff --git a/bytecomp/simplif.mli b/bytecomp/simplif.mli index 5e5217ff18..2d9b352bb6 100644 --- a/bytecomp/simplif.mli +++ b/bytecomp/simplif.mli @@ -12,8 +12,15 @@ (* $Id$ *) -(* Elimination of useless Llet(Alias) bindings *) +(* Elimination of useless Llet(Alias) bindings. + Transformation of let-bound references into variables. + Simplification over staticraise/staticcatch constructs. + Generation of tail-call annotations if -annot is set. *) open Lambda val simplify_lambda: lambda -> lambda + +(* To be filled by asmcomp/selectgen.ml *) +val is_tail_native_heuristic: (int -> bool) ref + (* # arguments -> can tailcall *) diff --git a/bytecomp/translclass.ml b/bytecomp/translclass.ml index 98c1e0878f..b64c9c47db 100644 --- a/bytecomp/translclass.ml +++ b/bytecomp/translclass.ml @@ -497,7 +497,7 @@ let rec builtin_meths self env env2 body = "var", [Lvar n] | Lprim(Pfield n, [Lvar e]) when Ident.same e env -> "env", [Lvar env2; Lconst(Const_pointer n)] - | Lsend(Self, met, Lvar s, []) when List.mem s self -> + | Lsend(Self, met, Lvar s, [], _) when List.mem s self -> "meth", [met] | _ -> raise Not_found in @@ -512,15 +512,15 @@ let rec builtin_meths self env env2 body = | Lapply(f, [p; arg], _) when const_path f && const_path p -> let s, args = conv arg in ("app_const_"^s, f :: p :: args) - | Lsend(Self, Lvar n, Lvar s, [arg]) when List.mem s self -> + | Lsend(Self, Lvar n, Lvar s, [arg], _) when List.mem s self -> let s, args = conv arg in ("meth_app_"^s, Lvar n :: args) - | Lsend(Self, met, Lvar s, []) when List.mem s self -> + | Lsend(Self, met, Lvar s, [], _) when List.mem s self -> ("get_meth", [met]) - | Lsend(Public, met, arg, []) -> + | Lsend(Public, met, arg, [], _) -> let s, args = conv arg in ("send_"^s, met :: args) - | Lsend(Cached, met, arg, [_;_]) -> + | Lsend(Cached, met, arg, [_;_], _) -> let s, args = conv arg in ("send_"^s, met :: args) | Lfunction (Curried, [x], body) -> diff --git a/bytecomp/translcore.ml b/bytecomp/translcore.ml index 4abd9d1243..2569b30313 100644 --- a/bytecomp/translcore.ml +++ b/bytecomp/translcore.ml @@ -604,12 +604,12 @@ and transl_exp0 e = if public_send || p.prim_name = "%sendself" then let kind = if public_send then Public else Self in let obj = Ident.create "obj" and meth = Ident.create "meth" in - Lfunction(Curried, [obj; meth], Lsend(kind, Lvar meth, Lvar obj, [])) + Lfunction(Curried, [obj; meth], Lsend(kind, Lvar meth, Lvar obj, [], e.exp_loc)) else if p.prim_name = "%sendcache" then let obj = Ident.create "obj" and meth = Ident.create "meth" in let cache = Ident.create "cache" and pos = Ident.create "pos" in Lfunction(Curried, [obj; meth; cache; pos], - Lsend(Cached, Lvar meth, Lvar obj, [Lvar cache; Lvar pos])) + Lsend(Cached, Lvar meth, Lvar obj, [Lvar cache; Lvar pos], e.exp_loc)) else transl_primitive p | Texp_ident(path, {val_kind = Val_anc _}) -> @@ -669,10 +669,10 @@ and transl_exp0 e = if public_send || p.prim_name = "%sendself" then let kind = if public_send then Public else Self in let obj = List.hd argl in - wrap (Lsend (kind, List.nth argl 1, obj, [])) + wrap (Lsend (kind, List.nth argl 1, obj, [], e.exp_loc)) else if p.prim_name = "%sendcache" then match argl with [obj; meth; cache; pos] -> - wrap (Lsend(Cached, meth, obj, [cache; pos])) + wrap (Lsend(Cached, meth, obj, [cache; pos], e.exp_loc)) | _ -> assert false else begin let prim = transl_prim p args in @@ -798,11 +798,11 @@ and transl_exp0 e = let obj = transl_exp expr in let lam = match met with - Tmeth_val id -> Lsend (Self, Lvar id, obj, []) + Tmeth_val id -> Lsend (Self, Lvar id, obj, [], e.exp_loc) | Tmeth_name nm -> let (tag, cache) = Translobj.meth obj nm in let kind = if cache = [] then Public else Cached in - Lsend (kind, tag, obj, cache) + Lsend (kind, tag, obj, cache, e.exp_loc) in event_after e lam | Texp_new (cl, _) -> @@ -1206,10 +1206,10 @@ and transl_tupled_cases patl_expr_list = and transl_apply lam sargs loc = let lapply funct args = match funct with - Lsend(k, lmet, lobj, largs) -> - Lsend(k, lmet, lobj, largs @ args) - | Levent(Lsend(k, lmet, lobj, largs), _) -> - Lsend(k, lmet, lobj, largs @ args) + Lsend(k, lmet, lobj, largs, loc) -> + Lsend(k, lmet, lobj, largs @ args, loc) + | Levent(Lsend(k, lmet, lobj, largs, loc), _) -> + Lsend(k, lmet, lobj, largs @ args, loc) | Lapply(lexp, largs, _) -> Lapply(lexp, largs @ args, loc) | lexp -> diff --git a/byterun/compare.c b/byterun/compare.c index 35a7f66ce9..751630757b 100644 --- a/byterun/compare.c +++ b/byterun/compare.c @@ -104,18 +104,44 @@ static intnat compare_val(value v1, value v2, int total) if (Is_long(v2)) return Long_val(v1) - Long_val(v2); /* Subtraction above cannot overflow and cannot result in UNORDERED */ - if (Is_in_value_area(v2) && - Tag_val(v2) == Forward_tag) { - v2 = Forward_val(v2); - continue; + if (Is_in_value_area(v2)) { + switch (Tag_val(v2)) { + case Forward_tag: + v2 = Forward_val(v2); + continue; + case Custom_tag: { + int res; + int (*compare)(value v1, value v2) = Custom_ops_val(v2)->compare_ext; + if (compare == NULL) break; /* for backward compatibility */ + caml_compare_unordered = 0; + res = compare(v1, v2); + if (caml_compare_unordered && !total) return UNORDERED; + if (res != 0) return res; + goto next_item; + } + default: /*fallthrough*/; + } } return LESS; /* v1 long < v2 block */ } if (Is_long(v2)) { - if (Is_in_value_area(v1) && - Tag_val(v1) == Forward_tag) { - v1 = Forward_val(v1); - continue; + if (Is_in_value_area(v1)) { + switch (Tag_val(v1)) { + case Forward_tag: + v1 = Forward_val(v1); + continue; + case Custom_tag: { + int res; + int (*compare)(value v1, value v2) = Custom_ops_val(v1)->compare_ext; + if (compare == NULL) break; /* for backward compatibility */ + caml_compare_unordered = 0; + res = compare(v1, v2); + if (caml_compare_unordered && !total) return UNORDERED; + if (res != 0) return res; + goto next_item; + } + default: /*fallthrough*/; + } } return GREATER; /* v1 block > v2 long */ } @@ -134,17 +160,14 @@ static intnat compare_val(value v1, value v2, int total) if (t1 != t2) return (intnat)t1 - (intnat)t2; switch(t1) { case String_tag: { - mlsize_t len1, len2, len; - unsigned char * p1, * p2; + mlsize_t len1, len2; + int res; if (v1 == v2) break; len1 = caml_string_length(v1); len2 = caml_string_length(v2); - for (len = (len1 <= len2 ? len1 : len2), - p1 = (unsigned char *) String_val(v1), - p2 = (unsigned char *) String_val(v2); - len > 0; - len--, p1++, p2++) - if (*p1 != *p2) return (intnat)*p1 - (intnat)*p2; + res = memcmp(String_val(v1), String_val(v2), len1 <= len2 ? len1 : len2); + if (res < 0) return LESS; + if (res > 0) return GREATER; if (len1 != len2) return len1 - len2; break; } @@ -198,12 +221,18 @@ static intnat compare_val(value v1, value v2, int total) case Custom_tag: { int res; int (*compare)(value v1, value v2) = Custom_ops_val(v1)->compare; + /* Hardening against comparisons between different types */ + if (compare != Custom_ops_val(v2)->compare) { + return strcmp(Custom_ops_val(v1)->identifier, + Custom_ops_val(v2)->identifier) < 0 + ? LESS : GREATER; + } if (compare == NULL) { compare_free_stack(); caml_invalid_argument("equal: abstract value"); } caml_compare_unordered = 0; - res = Custom_ops_val(v1)->compare(v1, v2); + res = compare(v1, v2); if (caml_compare_unordered && !total) return UNORDERED; if (res != 0) return res; break; diff --git a/byterun/custom.h b/byterun/custom.h index a706857ae0..51fabed9da 100644 --- a/byterun/custom.h +++ b/byterun/custom.h @@ -31,6 +31,7 @@ struct custom_operations { /*out*/ uintnat * wsize_32 /*size in bytes*/, /*out*/ uintnat * wsize_64 /*size in bytes*/); uintnat (*deserialize)(void * dst); + int (*compare_ext)(value v1, value v2); }; #define custom_finalize_default NULL @@ -38,6 +39,7 @@ struct custom_operations { #define custom_hash_default NULL #define custom_serialize_default NULL #define custom_deserialize_default NULL +#define custom_compare_ext_default NULL #define Custom_ops_val(v) (*((struct custom_operations **) (v))) diff --git a/byterun/fail.c b/byterun/fail.c index b1a08c6110..aceb253b9d 100644 --- a/byterun/fail.c +++ b/byterun/fail.c @@ -15,6 +15,8 @@ /* Raising exceptions from C. */ +#include <stdio.h> +#include <stdlib.h> #include "alloc.h" #include "fail.h" #include "io.h" @@ -85,13 +87,24 @@ CAMLexport void caml_raise_with_string(value tag, char const *msg) CAMLnoreturn; } +/* PR#5115: Failure and Invalid_argument can be triggered by + input_value while reading the initial value of [caml_global_data]. */ + CAMLexport void caml_failwith (char const *msg) { + if (caml_global_data == 0) { + fprintf(stderr, "Fatal error: exception Failure(\"%s\")\n", msg); + exit(2); + } caml_raise_with_string(Field(caml_global_data, FAILURE_EXN), msg); } CAMLexport void caml_invalid_argument (char const *msg) { + if (caml_global_data == 0) { + fprintf(stderr, "Fatal error: exception Invalid_argument(\"%s\")\n", msg); + exit(2); + } caml_raise_with_string(Field(caml_global_data, INVALID_EXN), msg); } diff --git a/byterun/gc_ctrl.c b/byterun/gc_ctrl.c index 0fe2215155..9a2e0b08ca 100644 --- a/byterun/gc_ctrl.c +++ b/byterun/gc_ctrl.c @@ -467,8 +467,11 @@ CAMLprim value caml_gc_major_slice (value v) CAMLprim value caml_gc_compaction(value v) { Assert (v == Val_unit); + caml_gc_message (0x10, "Heap compaction requested\n", 0); caml_empty_minor_heap (); caml_finish_major_cycle (); + caml_final_do_calls (); + caml_empty_minor_heap (); caml_finish_major_cycle (); caml_compact_heap (); caml_final_do_calls (); @@ -481,7 +484,9 @@ void caml_init_gc (uintnat minor_size, uintnat major_size, { uintnat major_heap_size = Bsize_wsize (norm_heapincr (major_size)); - caml_page_table_initialize(Bsize_wsize(minor_size) + major_heap_size); + if (caml_page_table_initialize(Bsize_wsize(minor_size) + major_heap_size)){ + caml_fatal_error ("OCaml runtime error: cannot initialize page table\n"); + } caml_set_minor_heap_size (Bsize_wsize (norm_minsize (minor_size))); caml_major_heap_increment = Bsize_wsize (norm_heapincr (major_incr)); caml_percent_free = norm_pfree (percent_fr); diff --git a/byterun/ints.c b/byterun/ints.c index 9fdaa1802b..51a9a3b3b0 100644 --- a/byterun/ints.c +++ b/byterun/ints.c @@ -614,7 +614,7 @@ static void nativeint_serialize(value v, uintnat * wsize_32, { intnat l = Nativeint_val(v); #ifdef ARCH_SIXTYFOUR - if (l <= 0x7FFFFFFFL && l >= -0x80000000L) { + if (l >= -((intnat)1 << 31) && l < ((intnat)1 << 31)) { caml_serialize_int_1(1); caml_serialize_int_4((int32) l); } else { diff --git a/byterun/major_gc.h b/byterun/major_gc.h index 5e48e3431f..12f8806705 100644 --- a/byterun/major_gc.h +++ b/byterun/major_gc.h @@ -54,7 +54,7 @@ extern char *caml_gc_sweep_hp; void caml_init_major_heap (asize_t); /* size in bytes */ asize_t caml_round_heap_chunk_size (asize_t); /* size in bytes */ void caml_darken (value, value *); -intnat caml_major_collection_slice (long); +intnat caml_major_collection_slice (intnat); void major_collection (void); void caml_finish_major_cycle (void); diff --git a/byterun/stacks.c b/byterun/stacks.c index f2de29f09c..ed06f95346 100644 --- a/byterun/stacks.c +++ b/byterun/stacks.c @@ -28,7 +28,7 @@ CAMLexport value * caml_stack_threshold; CAMLexport value * caml_extern_sp; CAMLexport value * caml_trapsp; CAMLexport value * caml_trap_barrier; -value caml_global_data; +value caml_global_data = 0; uintnat caml_max_stack_size; /* also used in gc_ctrl.c */ diff --git a/byterun/startup.c b/byterun/startup.c index b69c04f220..20e61e7d2f 100644 --- a/byterun/startup.c +++ b/byterun/startup.c @@ -288,7 +288,7 @@ static int parse_command_line(char **argv) static void scanmult (char *opt, uintnat *var) { char mult = ' '; - int val; + unsigned int val; sscanf (opt, "=%u%c", &val, &mult); sscanf (opt, "=0x%x%c", &val, &mult); switch (mult) { diff --git a/byterun/sys.c b/byterun/sys.c index bbc0e605f4..9928910f73 100644 --- a/byterun/sys.c +++ b/byterun/sys.c @@ -138,12 +138,14 @@ CAMLprim value caml_sys_open(value path, value vflags, value vperm) /* open on a named FIFO can block (PR#1533) */ caml_enter_blocking_section(); fd = open(p, flags, perm); + /* fcntl on a fd can block (PR#5069)*/ +#if defined(F_SETFD) && defined(FD_CLOEXEC) + if (fd != -1) + fcntl(fd, F_SETFD, FD_CLOEXEC); +#endif caml_leave_blocking_section(); caml_stat_free(p); if (fd == -1) caml_sys_error(path); -#if defined(F_SETFD) && defined(FD_CLOEXEC) - fcntl(fd, F_SETFD, FD_CLOEXEC); -#endif CAMLreturn(Val_long(fd)); } diff --git a/config/auto-aux/expm1.c b/config/auto-aux/expm1.c new file mode 100644 index 0000000000..ec315871f8 --- /dev/null +++ b/config/auto-aux/expm1.c @@ -0,0 +1,26 @@ +/***********************************************************************/ +/* */ +/* Objective Caml */ +/* */ +/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */ +/* */ +/* Copyright 2011 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. */ +/* */ +/***********************************************************************/ + +/* $Id: longlong.c 4833 2002-05-25 08:33:26Z xleroy $ */ + +#include <math.h> + +volatile double x; + +int main(int argc, char **argv) +{ + x = 3.1415; + x = expm1(x); + x = log1p(x); + return 0; +} @@ -468,11 +468,12 @@ esac # Determine alignment constraints case "$host" in - sparc*-*-*|hppa*-*-*|arm*-*-*) + sparc*-*-*|hppa*-*-*|arm*-*-*|mips*-*-*) # On Sparc V9 with certain versions of gcc, determination of double # alignment is not reliable (PR#1521), hence force it. # Same goes for hppa. # PR#5088 suggests same problem on ARM. + # PR#5280 reports same problem on MIPS. # But there's a knack (PR#2572): # if we're in 64-bit mode (sizeof(long) == 8), # we must not doubleword-align floats... @@ -500,8 +501,8 @@ esac if $int64_native; then case "$host" in - # PR#5088: autodetection is unreliable on ARM - sparc*-*-*|hppa*-*-*|arm*-*-*) + # PR#5088: autodetection is unreliable on ARM. PR#5280: also on MIPS. + sparc*-*-*|hppa*-*-*|arm*-*-*|mips*-*-*) if test $2 = 8; then echo "64-bit integers can be word-aligned." echo "#undef ARCH_ALIGN_INT64" >> m.h @@ -1573,6 +1574,10 @@ if test $has_tk = true; then fi fi +case "$host" in + *-*-cygwin*) tk_libs="$tk_libs -lws2_32";; +esac + if test $has_tk = true; then if sh ./hasgot $tk_libs $tk_x11_libs $tkauxlibs Tk_SetGrid; then echo "Tcl/Tk libraries found." diff --git a/emacs/Makefile b/emacs/Makefile index 41863cd457..8418297d71 100644 --- a/emacs/Makefile +++ b/emacs/Makefile @@ -72,5 +72,9 @@ ocamltags: ocamltags.in install-ocamltags: ocamltags cp ocamltags $(SCRIPTDIR)/ocamltags +# This is for testing purposes +compile-only: + $(EMACS) --batch --eval '$(COMPILECMD)' + clean: - rm -f ocamltags *~ #*# + rm -f ocamltags *~ #*# *.elc diff --git a/emacs/caml-emacs.el b/emacs/caml-emacs.el index d034ff304a..d0a2c86ee0 100644 --- a/emacs/caml-emacs.el +++ b/emacs/caml-emacs.el @@ -39,5 +39,8 @@ (or (member 'drag modifiers) (member 'click modifiers))))) +(if (fboundp 'string-to-number) + (defalias 'caml-string-to-int 'string-to-number) + (defalias 'caml-string-to-int 'string-to-int)) (provide 'caml-emacs) diff --git a/emacs/caml-font.el b/emacs/caml-font.el index 34ca3dd50f..d3b132d532 100644 --- a/emacs/caml-font.el +++ b/emacs/caml-font.el @@ -59,7 +59,7 @@ . font-lock-builtin-face) ;control (,(concat "[|#&]\\|->\\|" - (regexp-opt '("do" "done" "dowto" "else" "for" "if" "ignore" + (regexp-opt '("do" "done" "downto" "else" "for" "if" "ignore" "lazy" "match" "new" "reply" "spawn" "then" "to" "try" "when" "while" "with") diff --git a/emacs/caml-types.el b/emacs/caml-types.el index 05b1a2c0a6..3c7433a813 100644 --- a/emacs/caml-types.el +++ b/emacs/caml-types.el @@ -264,13 +264,13 @@ See `caml-types-location-re' for annotation file format. ((string-match def-re kind) (let ((var-name (match-string 1 kind)) (l-file (file-name-nondirectory (match-string 2 kind))) - (l-line (string-to-int (match-string 4 kind))) - (l-bol (string-to-int (match-string 5 kind))) - (l-cnum (string-to-int (match-string 6 kind))) + (l-line (caml-string-to-int (match-string 4 kind))) + (l-bol (caml-string-to-int (match-string 5 kind))) + (l-cnum (caml-string-to-int (match-string 6 kind))) (r-file (file-name-nondirectory (match-string 7 kind))) - (r-line (string-to-int (match-string 9 kind))) - (r-bol (string-to-int (match-string 10 kind))) - (r-cnum (string-to-int (match-string 11 kind)))) + (r-line (caml-string-to-int (match-string 9 kind))) + (r-bol (caml-string-to-int (match-string 10 kind))) + (r-cnum (caml-string-to-int (match-string 11 kind)))) (let* ((lpos (vector l-file l-line l-bol l-cnum)) (rpos (vector r-file r-line r-bol r-cnum)) (left (caml-types-get-pos target-buf lpos)) @@ -280,9 +280,9 @@ See `caml-types-location-re' for annotation file format. ((string-match def-end-re kind) (let ((var-name (match-string 1 kind)) (l-file (file-name-nondirectory (match-string 2 kind))) - (l-line (string-to-int (match-string 4 kind))) - (l-bol (string-to-int (match-string 5 kind))) - (l-cnum (string-to-int (match-string 6 kind)))) + (l-line (caml-string-to-int (match-string 4 kind))) + (l-bol (caml-string-to-int (match-string 5 kind))) + (l-cnum (caml-string-to-int (match-string 6 kind)))) (let* ((lpos (vector l-file l-line l-bol l-cnum)) (left (caml-types-get-pos target-buf lpos)) (right (buffer-size target-buf))) @@ -291,13 +291,13 @@ See `caml-types-location-re' for annotation file format. ((string-match internal-re kind) (let ((var-name (match-string 1 kind)) (l-file (file-name-nondirectory (match-string 2 kind))) - (l-line (string-to-int (match-string 4 kind))) - (l-bol (string-to-int (match-string 5 kind))) - (l-cnum (string-to-int (match-string 6 kind))) + (l-line (caml-string-to-int (match-string 4 kind))) + (l-bol (caml-string-to-int (match-string 5 kind))) + (l-cnum (caml-string-to-int (match-string 6 kind))) (r-file (file-name-nondirectory (match-string 7 kind))) - (r-line (string-to-int (match-string 9 kind))) - (r-bol (string-to-int (match-string 10 kind))) - (r-cnum (string-to-int (match-string 11 kind)))) + (r-line (caml-string-to-int (match-string 9 kind))) + (r-bol (caml-string-to-int (match-string 10 kind))) + (r-cnum (caml-string-to-int (match-string 11 kind)))) (let* ((lpos (vector l-file l-line l-bol l-cnum)) (rpos (vector r-file r-line r-bol r-cnum)) (left (caml-types-get-pos target-buf lpos)) @@ -345,11 +345,12 @@ See `caml-types-location-re' for annotation file format. (message "done")) ))) +(defun caml-types-parent-dir (d) (file-name-directory (directory-file-name d))) + (defun caml-types-locate-type-file (target-path) (let ((sibling (concat (file-name-sans-extension target-path) ".annot"))) (if (file-exists-p sibling) sibling - (defun parent-dir (d) (file-name-directory (directory-file-name d))) (let ((project-dir (file-name-directory sibling)) type-path) (while (not (file-exists-p @@ -357,10 +358,10 @@ See `caml-types-location-re' for annotation file format. (expand-file-name (file-relative-name sibling project-dir) (expand-file-name "_build" project-dir))))) - (if (equal project-dir (parent-dir project-dir)) + (if (equal project-dir (caml-types-parent-dir project-dir)) (error (concat "No annotation file. " "You should compile with option \"-annot\"."))) - (setq project-dir (parent-dir project-dir))) + (setq project-dir (caml-types-parent-dir project-dir))) type-path)))) (defun caml-types-date< (date1 date2) @@ -400,13 +401,13 @@ See `caml-types-location-re' for annotation file format. (annotation ())) (while (re-search-forward caml-types-location-re () t) (let ((l-file (file-name-nondirectory (match-string 1))) - (l-line (string-to-int (match-string 3))) - (l-bol (string-to-int (match-string 4))) - (l-cnum (string-to-int (match-string 5))) + (l-line (caml-string-to-int (match-string 3))) + (l-bol (caml-string-to-int (match-string 4))) + (l-cnum (caml-string-to-int (match-string 5))) (r-file (file-name-nondirectory (match-string 6))) - (r-line (string-to-int (match-string 8))) - (r-bol (string-to-int (match-string 9))) - (r-cnum (string-to-int (match-string 10)))) + (r-line (caml-string-to-int (match-string 8))) + (r-bol (caml-string-to-int (match-string 9))) + (r-cnum (caml-string-to-int (match-string 10)))) (unless (caml-types-not-in-file l-file r-file target-file) (setq annotation ()) (while (next-annotation) diff --git a/emacs/caml-xemacs.el b/emacs/caml-xemacs.el index fe141c5ce2..45d670c7ab 100644 --- a/emacs/caml-xemacs.el +++ b/emacs/caml-xemacs.el @@ -50,4 +50,8 @@ (and (button-release-event-p event) (equal (event-button original) (event-button event)))) +(if (fboundp 'string-to-number) + (defalias 'caml-string-to-int 'string-to-number) + (defalias 'caml-string-to-int 'string-to-int)) + (provide 'caml-xemacs) diff --git a/emacs/caml.el b/emacs/caml.el index e116898beb..ceb4b1f80a 100644 --- a/emacs/caml.el +++ b/emacs/caml.el @@ -815,8 +815,9 @@ from an error message produced by camlc.") (defvar caml-error-overlay nil) (defvar caml-next-error-skip-warnings-flag nil) -(defun caml-string-to-int (x) - (if (fboundp 'string-to-number) (string-to-number x) (string-to-int x))) +(if (fboundp 'string-to-number) + (defalias 'caml-string-to-int 'string-to-number) + (defalias 'caml-string-to-int 'string-to-int)) ;;itz 04-21-96 somebody didn't get the documentation for next-error ;;right. When the optional argument is a number n, it should move @@ -1168,7 +1169,7 @@ Used to distinguish it from toplevel let construct.") (concat "\\<\\(and" (if caml-is-jocaml "\\|or" "") - "\\|do\\(ne\\)?\\|e\\(lse\\|nd\\)\\|in\\|t\\(hen\\|o\\)" + "\\<\\(and\\|do\\(ne\\|wnto\\)?\\|e\\(lse\\|nd\\)\\|in\\|t\\(hen\\|o\\)" "\\|with\\)\\>\\|[^[|]|") "Regexp used in caml mode for skipping back over nested blocks.") @@ -1184,6 +1185,7 @@ Used to distinguish it from toplevel let construct.") ("else" . caml-find-else-match) ("then" . caml-find-then-match) ("to" . caml-find-done-match) + ("downto" . caml-find-done-match) ("do" . caml-find-done-match) ("and" . caml-find-and-match)))) (if caml-is-jocaml (cons '("or" . caml-find-and-match) aux) aux)) @@ -1611,7 +1613,7 @@ Does not preserve point." (defconst caml-leading-kwops-regexp (concat - "\\<\\(and\\|do\\(ne\\)?\\|e\\(lse\\|nd\\)\\|in" + "\\<\\(and\\|do\\(ne\\|wnto\\)?\\|e\\(lse\\|nd\\)\\|in" (if caml-is-jocaml "\\|or" "") "\\|t\\(hen\\|o\\)\\|with\\)\\>\\|[]|})]") @@ -1628,6 +1630,7 @@ Does not preserve point." ("in" caml-in-extra-indent 2) ("then" caml-then-extra-indent 3) ("to" caml-to-extra-indent 0) + ("downto" caml-to-extra-indent 0) ("with" caml-with-extra-indent 2) ("|" caml-|-extra-indent 2) ("]" caml-rb-extra-indent 0) diff --git a/emacs/camldebug.el b/emacs/camldebug.el index d5ba599cc7..57a98701b5 100644 --- a/emacs/camldebug.el +++ b/emacs/camldebug.el @@ -302,8 +302,8 @@ buffer, then try to obtain the time from context around point." ((save-excursion (beginning-of-line 1) (looking-at "^Time : \\([0-9]+\\) - pc : [0-9]+ ")) - (string-to-int (match-string 1))) - ((string-to-int (camldebug-format-command "%e")))))) + (caml-string-to-int (match-string 1))) + ((caml-string-to-int (camldebug-format-command "%e")))))) (camldebug-call "goto" nil time))) (t (let ((module (camldebug-module-name (buffer-file-name))) @@ -325,7 +325,7 @@ buffer, then try to obtain the time from context around point." " - module " module "$") nil t) (match-string 1))))) - (if address (camldebug-call "goto" nil (string-to-int address)) + (if address (camldebug-call "goto" nil (caml-string-to-int address)) (error "No time at %s at %s" module camldebug-goto-position)))))) @@ -383,12 +383,12 @@ around point." (arg (cond ((eobp) (save-excursion (re-search-backward bpline nil t)) - (string-to-int (match-string 1))) + (caml-string-to-int (match-string 1))) ((save-excursion (beginning-of-line 1) (looking-at bpline)) - (string-to-int (match-string 1))) - ((string-to-int (camldebug-format-command "%e")))))) + (caml-string-to-int (match-string 1))) + ((caml-string-to-int (camldebug-format-command "%e")))))) (camldebug-call "delete" nil arg))) (t (let ((camldebug-delete-file @@ -409,7 +409,7 @@ around point." camldebug-delete-file camldebug-delete-position) (camldebug-call "delete" nil - (string-to-int camldebug-delete-output))))))))) + (caml-string-to-int camldebug-delete-output))))))))) (defun camldebug-complete-filter (string) (setq camldebug-filter-accumulator @@ -529,9 +529,9 @@ the camldebug commands `cd DIR' and `directory'." (let ((isbefore (string= "before" (match-string 5 camldebug-filter-accumulator))) - (startpos (string-to-int + (startpos (caml-string-to-int (match-string 3 camldebug-filter-accumulator))) - (endpos (string-to-int + (endpos (caml-string-to-int (match-string 4 camldebug-filter-accumulator)))) (list (match-string 2 camldebug-filter-accumulator) (if isbefore startpos endpos) @@ -704,7 +704,7 @@ Obeying it means displaying in another window the specified file and line." (move-overlay camldebug-overlay-under spos (- epos 1) buffer)) (save-excursion (set-buffer buffer) - (goto-char pos) + (goto-char spos) (beginning-of-line) (move-marker camldebug-event-marker (point)) (setq overlay-arrow-position camldebug-event-marker)))) diff --git a/emacs/inf-caml.el b/emacs/inf-caml.el index ba2eb0390b..f3e4c48d1b 100644 --- a/emacs/inf-caml.el +++ b/emacs/inf-caml.el @@ -163,7 +163,7 @@ Input and output via buffer `*inferior-caml*'." (setq count (+ count 1))) (if (equal (buffer-name (current-buffer)) inferior-caml-buffer-name) - (end-of-buffer)) + (goto-char (point-max))) (while (> count 0) (previous-multiframe-window) @@ -201,7 +201,7 @@ Input and output via buffer `*inferior-caml*'." (re-search-backward (concat comint-prompt-regexp "[ \t]*Characters[ \t]+\\([0-9]+\\)-[0-9]+:$")) - (string-to-int (match-string 1)))))) + (caml-string-to-int (match-string 1)))))) (goto-char loc))) @@ -265,8 +265,8 @@ should lies." (cond ((re-search-forward " *Characters \\([01-9][01-9]*\\)-\\([1-9][01-9]*\\):\n[^W]" (point-max) t) - (setq beg (string-to-int (caml-match-string 1))) - (setq end (string-to-int (caml-match-string 2))) + (setq beg (caml-string-to-int (caml-match-string 1))) + (setq end (caml-string-to-int (caml-match-string 2))) (switch-to-buffer buf) (goto-char orig) (forward-byte end) @@ -330,7 +330,7 @@ should lies." (beep) (if wait (read-event) (caml-sit-for 60))) (delete-overlay caml-error-overlay))))) -;; wait some amount for ouput, that is, until inferior-caml-output is set +;; wait some amount for output, that is, until inferior-caml-output is set ;; to true. Hence, interleaves sitting for shorts delays and checking the ;; flag. Give up after some time. Typing into the source buffer will cancel ;; waiting, i.e. may report 'No result yet' diff --git a/lex/output.ml b/lex/output.ml index 620f67f65a..5ca403b52d 100644 --- a/lex/output.ml +++ b/lex/output.ml @@ -74,8 +74,8 @@ let output_tables oc tbl = let output_entry sourcefile ic oc oci e = let init_num, init_moves = e.auto_initial_state in - fprintf oc "%s %alexbuf =\n\ - %a%a __ocaml_lex_%s_rec %alexbuf %d\n" + fprintf oc "%s %alexbuf =\ +\n %a%a __ocaml_lex_%s_rec %alexbuf %d\n" e.auto_name output_args e.auto_args (fun oc x -> diff --git a/lex/outputbis.ml b/lex/outputbis.ml index 266c0acbd4..6d5e77c30d 100644 --- a/lex/outputbis.ml +++ b/lex/outputbis.ml @@ -20,31 +20,31 @@ open Lexgen open Common let output_auto_defs oc = - fprintf oc "let __ocaml_lex_init_lexbuf lexbuf mem_size =\n\ - let pos = lexbuf.Lexing.lex_curr_pos in\n\ - lexbuf.Lexing.lex_mem <- Array.create mem_size (-1) ;\n\ - lexbuf.Lexing.lex_start_pos <- pos ;\n\ - lexbuf.Lexing.lex_last_pos <- pos ;\n\ - lexbuf.Lexing.lex_last_action <- -1\n\ -\n\ + fprintf oc "let __ocaml_lex_init_lexbuf lexbuf mem_size =\ +\n let pos = lexbuf.Lexing.lex_curr_pos in\ +\n lexbuf.Lexing.lex_mem <- Array.create mem_size (-1) ;\ +\n lexbuf.Lexing.lex_start_pos <- pos ;\ +\n lexbuf.Lexing.lex_last_pos <- pos ;\ +\n lexbuf.Lexing.lex_last_action <- -1\ +\n\n\ " ; output_string oc - "let rec __ocaml_lex_next_char lexbuf =\n\ - if lexbuf.Lexing.lex_curr_pos >= lexbuf.Lexing.lex_buffer_len then begin\n\ - if lexbuf.Lexing.lex_eof_reached then\n\ - 256\n\ - else begin\n\ - lexbuf.Lexing.refill_buff lexbuf ;\n\ - __ocaml_lex_next_char lexbuf\n\ - end\n\ - end else begin\n\ - let i = lexbuf.Lexing.lex_curr_pos in\n\ - let c = lexbuf.Lexing.lex_buffer.[i] in\n\ - lexbuf.Lexing.lex_curr_pos <- i+1 ;\n\ - Char.code c\n\ - end\n\ -\n\ + "let rec __ocaml_lex_next_char lexbuf =\ +\n if lexbuf.Lexing.lex_curr_pos >= lexbuf.Lexing.lex_buffer_len then begin\ +\n if lexbuf.Lexing.lex_eof_reached then\ +\n 256\ +\n else begin\ +\n lexbuf.Lexing.refill_buff lexbuf ;\ +\n __ocaml_lex_next_char lexbuf\ +\n end\ +\n end else begin\ +\n let i = lexbuf.Lexing.lex_curr_pos in\ +\n let c = lexbuf.Lexing.lex_buffer.[i] in\ +\n lexbuf.Lexing.lex_curr_pos <- i+1 ;\ +\n Char.code c\ +\n end\ +\n\n\ " @@ -155,13 +155,13 @@ let output_automata oc auto = let output_entry sourcefile ic oc tr e = let init_num, init_moves = e.auto_initial_state in - fprintf oc "%s %alexbuf =\n\ - __ocaml_lex_init_lexbuf lexbuf %d; %a\n\ - let __ocaml_lex_result = __ocaml_lex_state%d lexbuf in\n\ - lexbuf.Lexing.lex_start_p <- lexbuf.Lexing.lex_curr_p;\n\ - lexbuf.Lexing.lex_curr_p <- {lexbuf.Lexing.lex_curr_p with\n\ - Lexing.pos_cnum = lexbuf.Lexing.lex_abs_pos + lexbuf.Lexing.lex_curr_pos};\n\ - match __ocaml_lex_result with\n" + fprintf oc "%s %alexbuf =\ +\n __ocaml_lex_init_lexbuf lexbuf %d; %a\ +\n let __ocaml_lex_result = __ocaml_lex_state%d lexbuf in\ +\n lexbuf.Lexing.lex_start_p <- lexbuf.Lexing.lex_curr_p;\ +\n lexbuf.Lexing.lex_curr_p <- {lexbuf.Lexing.lex_curr_p with\ +\n Lexing.pos_cnum = lexbuf.Lexing.lex_abs_pos + lexbuf.Lexing.lex_curr_pos};\ +\n match __ocaml_lex_result with\n" e.auto_name output_args e.auto_args e.auto_mem_size (output_memory_actions " ") init_moves init_num ; List.iter diff --git a/man/ocamldep.m b/man/ocamldep.m index fc484713d3..521e41bbce 100644 --- a/man/ocamldep.m +++ b/man/ocamldep.m @@ -1,18 +1,20 @@ +\" $Id$ + .TH OCAMLDEP 1 .SH NAME ocamldep \- Dependency generator for Objective Caml .SH SYNOPSIS -.B ocamldep +.B ocamldep [ -.BI \-I \ lib-dir +.I options ] .I filename ... .SH DESCRIPTION -The +The .BR ocamldep (1) command scans a set of Objective Caml source files (.ml and .mli files) for references to external compilation units, @@ -24,7 +26,7 @@ file is modified. The typical usage is: .P -ocamldep +ocamldep .I options *.mli *.ml > .depend .P @@ -32,30 +34,51 @@ where .depend is the file that should contain the dependencies. Dependencies are generated both for compiling with the bytecode -compiler +compiler .BR ocamlc (1) -and with the native-code compiler +and with the native-code compiler .BR ocamlopt (1). .SH OPTIONS -The following command-line option is recognized by +The following command-line options are recognized by .BR ocamldep (1). - .TP .BI \-I \ directory Add the given directory to the list of directories searched for source files. If a source file foo.ml mentions an external compilation unit Bar, a dependency on that unit's interface bar.cmi is generated only if the source for bar is found in the -current directory or in one of the directories specified with -.BR -I . -Otherwise, Bar is assumed to be a module form the standard library, +current directory or in one of the directories specified with +.BR \-I . +Otherwise, Bar is assumed to be a module from the standard library, and no dependencies are generated. For programs that span multiple -directories, it is recommended to pass +directories, it is recommended to pass .BR ocamldep (1) -the same -I options that are passed to the compiler. - +the same +.B \-I +options that are passed to the compiler. +.TP +.BI \-ml\-synonym \ .ext +Consider the given extension (with leading dot) to be a synonym for .ml. +.TP +.BI \-mli\-synonym \ .ext +Consider the given extension (with leading dot) to be a synonym for .mli. +.TP +.B \-modules +Output raw dependencies of the form +.IR filename : \ Module1\ Module2 \ ... \ ModuleN +where +.IR Module1 ,\ ..., \ ModuleN +are the names of the compilation +units referenced within the file +.IR filename , +but these names are not +resolved to source file names. Such raw dependencies cannot be used +by +.BR make (1), +but can be post-processed by other tools such as +.BR Omake (1). .TP .BI \-native Generate dependencies for a pure native-code program (no bytecode @@ -66,12 +89,10 @@ generates dependencies on the bytecode compiled file (.cmo file) to reflect interface changes. This can cause unnecessary bytecode recompilations for programs that are compiled to native-code only. The flag -.BR -native +.B \-native causes dependencies on native compiled files (.cmx) to be generated instead of on .cmo files. (This flag makes no difference if all source files have explicit .mli interface files.) -<<<<<<< .courant -======= .TP .BI \-pp \ command Cause @@ -91,11 +112,10 @@ Print short version number and exit. .TP .BR \-help \ or \ \-\-help Display a short usage summary and exit. ->>>>>>> .fusion-droit.r10497 .SH SEE ALSO .BR ocamlc (1), .BR ocamlopt (1). .br -.I The Objective Caml user's manual, +.IR The\ Objective\ Caml\ user's\ manual , chapter "Dependency generator". diff --git a/ocamldoc/Makefile b/ocamldoc/Makefile index fb16cfbc1f..91fb2a2042 100644 --- a/ocamldoc/Makefile +++ b/ocamldoc/Makefile @@ -199,7 +199,7 @@ STDLIB_MLIS=../stdlib/*.mli \ ../otherlibs/bigarray/bigarray.mli \ ../otherlibs/num/num.mli -all: exe lib generators +all: exe lib manpages $(MAKE) manpages exe: $(OCAMLDOC) diff --git a/ocamldoc/odoc_args.ml b/ocamldoc/odoc_args.ml index eff92760e6..bb96f146fb 100644 --- a/ocamldoc/odoc_args.ml +++ b/ocamldoc/odoc_args.ml @@ -39,6 +39,7 @@ let analyse_merge_options s = (M.merge_version, [Odoc_types.Merge_version]) ; (M.merge_see, [Odoc_types.Merge_see]) ; (M.merge_since, [Odoc_types.Merge_since]) ; + (M.merge_before, [Odoc_types.Merge_before]) ; (M.merge_deprecated, [Odoc_types.Merge_deprecated]) ; (M.merge_param, [Odoc_types.Merge_param]) ; (M.merge_raised_exception, [Odoc_types.Merge_raised_exception]) ; @@ -50,6 +51,76 @@ let analyse_merge_options s = analyse_option_string l s +let dump = ref (None : string option) + +let load = ref ([] : string list) + +(** Allow arbitrary recursive types. *) +let recursive_types = Clflags.recursive_types + +let verbose = ref false + +(** Optional preprocessor command. *) +let preprocessor = Clflags.preprocessor + +let sort_modules = ref false + +let no_custom_tags = ref false + +let no_stop = ref false + +let remove_stars = ref false + +let keep_code = ref false + +let inverse_merge_ml_mli = ref false + +let filter_with_module_constraints = ref true + +let title = ref (None : string option) + +let intro_file = ref (None : string option) + +let with_parameter_list = ref false + +let hidden_modules = ref ([] : string list) + +let target_dir = ref Filename.current_dir_name + +let css_style = ref None + +let index_only = ref false + +let colorize_code = ref false + +let charset = ref "iso-8859-1" + +let with_header = ref true + +let with_trailer = ref true + +let separate_files = ref false + +let latex_titles = ref [ + 1, "section" ; + 2, "subsection" ; + 3, "subsubsection" ; + 4, "paragraph" ; + 5, "subparagraph" ; +] + +let with_toc = ref true + +let with_index = ref true + +let esc_8bits = ref false + +let info_section = ref "Objective Caml" + +let info_entry = ref [] + +let files = ref [] + let f_latex_title s = try let pos = String.index s ',' in @@ -83,7 +154,7 @@ let add_hidden_modules s = let set_generator (g : Odoc_gen.generator) = current_generator := Some g (** The default option list *) -let options = ref [ +let default_options = [ "-version", Arg.Unit (fun () -> print_string M.message_version ; print_newline () ; exit 0) , M.option_version ; "-vnum", Arg.Unit (fun () -> print_string M.config_version ; print_newline () ; exit 0) , M.option_version ; @@ -150,11 +221,12 @@ let options = ref [ "\n\n *** HTML options ***\n"; (* html only options *) - "-all-params", Arg.Set Odoc_html.with_parameter_list, M.with_parameter_list ; - "-css-style", Arg.String (fun s -> Odoc_html.css_style := Some s), M.css_style ; - "-index-only", Arg.Set Odoc_html.index_only, M.index_only ; - "-colorize-code", Arg.Set Odoc_html.colorize_code, M.colorize_code ; - "-short-functors", Arg.Set Odoc_html.html_short_functors, M.html_short_functors ^ + "-all-params", Arg.Set with_parameter_list, M.with_parameter_list ; + "-css-style", Arg.String (fun s -> css_style := Some s), M.css_style ; + "-index-only", Arg.Set index_only, M.index_only ; + "-colorize-code", Arg.Set colorize_code, M.colorize_code ; + "-short-functors", Arg.Set html_short_functors, M.html_short_functors ; + "-charset", Arg.Set_string charset, (M.charset !charset)^ "\n\n *** LaTeX options ***\n"; (* latex only options *) @@ -205,7 +277,34 @@ let options = ref [ ] +let options = ref default_options + +let modified_options () = + !options != default_options + +let append_last_doc suffix = + match List.rev !options with + | (key, spec, doc) :: tl -> + options := List.rev ((key, spec, doc ^ suffix) :: tl) + | [] -> () + +(** The help option list, overriding the default ones from the Arg module *) +let help_options = ref [] +let help_action () = + let msg = + Arg.usage_string + (!options @ !help_options) + (M.usage ^ M.options_are) in + print_string msg +let () = + help_options := [ + "-help", Arg.Unit help_action, M.help ; + "--help", Arg.Unit help_action, M.help +] + let add_option o = + if not (modified_options ()) then + append_last_doc "\n *** custom generator options ***\n"; let (s,_,_) = o in let rec iter = function [] -> [o] @@ -233,7 +332,9 @@ let parse () = in Odoc_global.files := !Odoc_global.files @ [sf] in - let _ = Arg.parse !options + if modified_options () then append_last_doc "\n"; + let options = !options @ !help_options in + let _ = Arg.parse options anonymous (M.usage^M.options_are) in diff --git a/ocamldoc/odoc_args.mli b/ocamldoc/odoc_args.mli index 2f190ef756..7881c0a395 100644 --- a/ocamldoc/odoc_args.mli +++ b/ocamldoc/odoc_args.mli @@ -16,6 +16,161 @@ (** The current module defining the generator to use. *) val current_generator : Odoc_gen.generator option ref +(** The include_dirs in the OCaml compiler. *) +val include_dirs : string list ref + +(** The class type of documentation generators. *) +class type doc_generator = + object method generate : Odoc_module.t_module list -> unit end + +(** The function to be used to create a generator. *) +val doc_generator : doc_generator option ref + +(** The merge options to be used. *) +val merge_options : Odoc_types.merge_option list ref + +(** Classic mode or not. *) +val classic : bool ref + +(** The file used by the generators outputting only one file. *) +val out_file : string ref + +(** The optional file name to dump the collected information into.*) +val dump : string option ref + +(** The list of information files to load. *) +val load : string list ref + +(** Verbose mode or not. *) +val verbose : bool ref + +(** We must sort the list of top modules or not.*) +val sort_modules : bool ref + +(** We must not stop at the stop special comments. Default is false (we stop).*) +val no_stop : bool ref + +(** We must raise an exception when we find an unknown @-tag. *) +val no_custom_tags : bool ref + +(** We must remove the the first characters of each comment line, until the first asterisk '*'. *) +val remove_stars : bool ref + +(** To keep the code while merging, when we have both .ml and .mli files for a module. *) +val keep_code : bool ref + +(** To inverse implementation and interface files when merging. *) +val inverse_merge_ml_mli : bool ref + +(** To filter module elements according to module type constraints. *) +val filter_with_module_constraints : bool ref + +(** The optional title to use in the generated documentation. *) +val title : string option ref + +(** The optional file whose content can be used as intro text. *) +val intro_file : string option ref + +(** Flag to indicate whether we must display the complete list of parameters + for functions and methods. *) +val with_parameter_list : bool ref + +(** The list of module names to hide. *) +val hidden_modules : string list ref + +(** The directory where files have to be generated. *) +val target_dir : string ref + +(** An optional file to use where a CSS style is defined (for HTML). *) +val css_style : string option ref + +(** Generate only index files. (for HTML). *) +val index_only : bool ref + +(** To colorize code in HTML generated documentation pages, not code pages. *) +val colorize_code : bool ref + +(** Encoding used in HTML pages header. *) +val charset : string ref + +(** The flag which indicates if we must generate a header (for LaTeX). *) +val with_header : bool ref + +(** The flag which indicates if we must generate a trailer (for LaTeX). *) +val with_trailer : bool ref + +(** The flag to indicate if we must generate one file per module (for LaTeX). *) +val separate_files : bool ref + +(** The list of pairs (title level, sectionning style). *) +val latex_titles : (int * string) list ref + +(** The prefix to use for value labels in LaTeX. *) +val latex_value_prefix : string ref + +(** The prefix to use for type labels in LaTeX. *) +val latex_type_prefix : string ref + +(** The prefix to use for exception labels in LaTeX. *) +val latex_exception_prefix : string ref + +(** The prefix to use for module labels in LaTeX. *) +val latex_module_prefix : string ref + +(** The prefix to use for module type labels in LaTeX. *) +val latex_module_type_prefix : string ref + +(** The prefix to use for class labels in LaTeX. *) +val latex_class_prefix : string ref + +(** The prefix to use for class type labels in LaTeX. *) +val latex_class_type_prefix : string ref + +(** The prefix to use for attribute labels in LaTeX. *) +val latex_attribute_prefix : string ref + +(** The prefix to use for method labels in LaTeX. *) +val latex_method_prefix : string ref + +(** The flag which indicates if we must generate a table of contents (for LaTeX). *) +val with_toc : bool ref + +(** The flag which indicates if we must generate an index (for TeXinfo). *) +val with_index : bool ref + +(** The flag which indicates if we must escape accentuated characters (for TeXinfo).*) +val esc_8bits : bool ref + +(** The Info directory section *) +val info_section : string ref + +(** The Info directory entries to insert *) +val info_entry : string list ref + +(** Include all modules or only the ones on the command line, for the dot output. *) +val dot_include_all : bool ref + +(** Generate dependency graph for types. *) +val dot_types : bool ref + +(** Perform transitive reduction before dot output. *) +val dot_reduce : bool ref + +(** The colors used in the dot output. *) +val dot_colors : string list ref + +(** The suffix for man pages. *) +val man_suffix : string ref + +(** The section for man pages. *) +val man_section : string ref + +(** The flag to generate all man pages or only for modules and classes.*) +val man_mini : bool ref + +(** The files to be analysed. *) +val files : source_file list ref + (** To set the documentation generator. *) val set_generator : Odoc_gen.generator -> unit diff --git a/ocamldoc/odoc_html.ml b/ocamldoc/odoc_html.ml index 03dc4e64ed..910138fe2d 100644 --- a/ocamldoc/odoc_html.ml +++ b/ocamldoc/odoc_html.ml @@ -534,28 +534,34 @@ class virtual info = match l with [] -> () | _ -> - bp b "<b>%s:</b> %s<br>\n" - Odoc_messages.authors - (String.concat ", " l) + bp b "<b>%s:</b> " Odoc_messages.authors; + self#html_of_text b [Raw (String.concat ", " l)]; + bs b "<br>\n" (** Print html code for the given optional version information.*) method html_of_version_opt b v_opt = match v_opt with None -> () | Some v -> - bp b "<b>%s:</b> %s<br>\n" Odoc_messages.version v + bp b "<b>%s:</b> " Odoc_messages.version; + self#html_of_text b [Raw v]; + bs b "<br>\n" (** Print html code for the given optional since information.*) method html_of_since_opt b s_opt = match s_opt with None -> () | Some s -> - bp b "<b>%s</b> %s<br>\n" Odoc_messages.since s + bp b "<b>%s</b> " Odoc_messages.since; + self#html_of_text b [Raw s]; + bs b "<br>\n" (** Print html code for the given "before" information.*) method html_of_before b l = let f (v, text) = - bp b "<b>%s %s </b> " Odoc_messages.before v; + bp b "<b>%s " Odoc_messages.before; + self#html_of_text b [Raw v]; + bs b " </b> "; self#html_of_text b text; bs b "<br>\n" in @@ -728,6 +734,13 @@ class html = inherit text inherit info + val mutable doctype = + "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" + method character_encoding () = + Printf.sprintf + "<meta content=\"text/html; charset=%s\" http-equiv=\"Content-Type\">\n" + !Odoc_info.Args.charset + (** The default style options. *) val mutable default_style_options = ["a:visited {color : #416DFF; text-decoration : none; }" ; @@ -930,7 +943,8 @@ class html = bp b "<link title=\"%s\" rel=Appendix href=\"%s\">\n" m url in bs b "<head>\n"; - bs b style; + bs b style; + bs b (self#character_encoding ()) ; bs b "<link rel=\"Start\" href=\""; bs b self#index; bs b "\">\n" ; diff --git a/ocamldoc/odoc_info.mli b/ocamldoc/odoc_info.mli index c79b139140..a91ef3f23f 100644 --- a/ocamldoc/odoc_info.mli +++ b/ocamldoc/odoc_info.mli @@ -960,6 +960,109 @@ module Global : val with_trailer : bool ref end + (** The list of module names to hide. *) + val hidden_modules : string list ref + + (** The directory where files have to be generated. *) + val target_dir : string ref + + (** An optional file to use where a CSS style is defined (for HTML). *) + val css_style : string option ref + + (** Generate only index files. (for HTML). *) + val index_only : bool ref + + (** To colorize code in HTML generated documentation pages, not code pages. *) + val colorize_code : bool ref + + (** Character encoding used in HTML pages header. *) + val charset : string ref + + (** The flag which indicates if we must generate a header (for LaTeX). *) + val with_header : bool ref + + (** The flag which indicates if we must generate a trailer (for LaTeX). *) + val with_trailer : bool ref + + (** The flag to indicate if we must generate one file per module (for LaTeX). *) + val separate_files : bool ref + + (** The list of pairs (title level, sectionning style). *) + val latex_titles : (int * string) list ref + + (** The prefix to use for value labels in LaTeX. *) + val latex_value_prefix : string ref + + (** The prefix to use for type labels in LaTeX. *) + val latex_type_prefix : string ref + + (** The prefix to use for exception labels in LaTeX. *) + val latex_exception_prefix : string ref + + (** The prefix to use for module labels in LaTeX. *) + val latex_module_prefix : string ref + + (** The prefix to use for module type labels in LaTeX. *) + val latex_module_type_prefix : string ref + + (** The prefix to use for class labels in LaTeX. *) + val latex_class_prefix : string ref + + (** The prefix to use for class type labels in LaTeX. *) + val latex_class_type_prefix : string ref + + (** The prefix to use for attribute labels in LaTeX. *) + val latex_attribute_prefix : string ref + + (** The prefix to use for method labels in LaTeX. *) + val latex_method_prefix : string ref + + (** The flag which indicates if we must generate a table of contents (for LaTeX). *) + val with_toc : bool ref + + (** The flag which indicates if we must generate an index (for TeXinfo). *) + val with_index : bool ref + + (** The flag which indicates if we must escape accentuated characters (for TeXinfo).*) + val esc_8bits : bool ref + + (** The Info directory section *) + val info_section : string ref + + (** The Info directory entries to insert *) + val info_entry : string list ref + + (** Include all modules or only the ones on the command line, for the dot output. *) + val dot_include_all : bool ref + + (** Generate dependency graph for types. *) + val dot_types : bool ref + + (** Perform transitive reduction before dot output. *) + val dot_reduce : bool ref + + (** The colors used in the dot output. *) + val dot_colors : string list ref + + (** The suffix for man pages. *) + val man_suffix : string ref + + (** The section for man pages. *) + val man_section : string ref + + (** The flag to generate all man pages or only for modules and classes.*) + val man_mini : bool ref + + (** The files to be analysed. *) + val files : source_file list ref + + (** To set the documentation generator. *) + val set_doc_generator : doc_generator option -> unit + + (** Add an option specification. *) + val add_option : string * Arg.spec * string -> unit + end + (** Analysis of the given source files. @param init is the list of modules already known from a previous analysis. @return the list of analysed top modules. *) diff --git a/ocamldoc/odoc_latex_style.ml b/ocamldoc/odoc_latex_style.ml index a689b26866..db0964a71c 100644 --- a/ocamldoc/odoc_latex_style.ml +++ b/ocamldoc/odoc_latex_style.ml @@ -13,79 +13,79 @@ (* $Id$ *) -let content ="\n\ -%% Support macros for LaTeX documentation generated by ocamldoc.\n\ -%% This file is in the public domain; do what you want with it.\n\ +let content ="\ +\n%% Support macros for LaTeX documentation generated by ocamldoc.\ +\n%% This file is in the public domain; do what you want with it.\ \n\ -\\NeedsTeXFormat{LaTeX2e}\n\ -\\ProvidesPackage{ocamldoc}\n\ - [2001/12/04 v1.0 ocamldoc support]\n\ +\n\\NeedsTeXFormat{LaTeX2e}\ +\n\\ProvidesPackage{ocamldoc}\ +\n [2001/12/04 v1.0 ocamldoc support]\ \n\ -\\newenvironment{ocamldoccode}{%\n\ - \\bgroup\n\ - \\leftskip\\@totalleftmargin\n\ - \\rightskip\\z@skip\n\ - \\parindent\\z@\n\ - \\parfillskip\\@flushglue\n\ - \\parskip\\z@skip\n\ - %\\noindent\n\ - \\@@par\\smallskip\n\ - \\@tempswafalse\n\ - \\def\\par{%\n\ - \\if@tempswa\n\ - \\leavevmode\\null\\@@par\\penalty\\interlinepenalty\n\ - \\else\n\ - \\@tempswatrue\n\ - \\ifhmode\\@@par\\penalty\\interlinepenalty\\fi\n\ - \\fi}\n\ - \\obeylines\n\ - \\verbatim@font\n\ - \\let\\org@prime~%\n\ - \\@noligs\n\ - \\let\\org@dospecials\\dospecials\n\ - \\g@remfrom@specials{\\\\}\n\ - \\g@remfrom@specials{\\{}\n\ - \\g@remfrom@specials{\\}}\n\ - \\let\\do\\@makeother\n\ - \\dospecials\n\ - \\let\\dospecials\\org@dospecials\n\ - \\frenchspacing\\@vobeyspaces\n\ - \\everypar \\expandafter{\\the\\everypar \\unpenalty}}\n\ -{\\egroup\\par}\n\ +\n\\newenvironment{ocamldoccode}{%\ +\n \\bgroup\ +\n \\leftskip\\@totalleftmargin\ +\n \\rightskip\\z@skip\ +\n \\parindent\\z@\ +\n \\parfillskip\\@flushglue\ +\n \\parskip\\z@skip\ +\n %\\noindent\ +\n \\@@par\\smallskip\ +\n \\@tempswafalse\ +\n \\def\\par{%\ +\n \\if@tempswa\ +\n \\leavevmode\\null\\@@par\\penalty\\interlinepenalty\ +\n \\else\ +\n \\@tempswatrue\ +\n \\ifhmode\\@@par\\penalty\\interlinepenalty\\fi\ +\n \\fi}\ +\n \\obeylines\ +\n \\verbatim@font\ +\n \\let\\org@prime~%\ +\n \\@noligs\ +\n \\let\\org@dospecials\\dospecials\ +\n \\g@remfrom@specials{\\\\}\ +\n \\g@remfrom@specials{\\{}\ +\n \\g@remfrom@specials{\\}}\ +\n \\let\\do\\@makeother\ +\n \\dospecials\ +\n \\let\\dospecials\\org@dospecials\ +\n \\frenchspacing\\@vobeyspaces\ +\n \\everypar \\expandafter{\\the\\everypar \\unpenalty}}\ +\n{\\egroup\\par}\ \n\ -\\def\\g@remfrom@specials#1{%\n\ - \\def\\@new@specials{}\n\ - \\def\\@remove##1{%\n\ - \\ifx##1#1\\else\n\ - \\g@addto@macro\\@new@specials{\\do ##1}\\fi}\n\ - \\let\\do\\@remove\\dospecials\n\ - \\let\\dospecials\\@new@specials\n\ - }\n\ +\n\\def\\g@remfrom@specials#1{%\ +\n \\def\\@new@specials{}\ +\n \\def\\@remove##1{%\ +\n \\ifx##1#1\\else\ +\n \\g@addto@macro\\@new@specials{\\do ##1}\\fi}\ +\n \\let\\do\\@remove\\dospecials\ +\n \\let\\dospecials\\@new@specials\ +\n }\ \n\ -\\newenvironment{ocamldocdescription}\n\ -{\\list{}{\\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax\\ignorespaces}\n\ -{\\endlist\\medskip}\n\ +\n\\newenvironment{ocamldocdescription}\ +\n{\\list{}{\\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax\\ignorespaces}\ +\n{\\endlist\\medskip}\ \n\ -\\newenvironment{ocamldoccomment}\n\ -{\\list{}{\\leftmargin 2\\leftmargini \\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax}\n\ -{\\endlist}\n\ +\n\\newenvironment{ocamldoccomment}\ +\n{\\list{}{\\leftmargin 2\\leftmargini \\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax}\ +\n{\\endlist}\ \n\ -\\let \\ocamldocparagraph \\paragraph\n\ -\\def \\paragraph #1{\\ocamldocparagraph {#1}\\noindent}\n\ -\\let \\ocamldocsubparagraph \\subparagraph\n\ -\\def \\subparagraph #1{\\ocamldocsubparagraph {#1}\\noindent}\n\ +\n\\let \\ocamldocparagraph \\paragraph\ +\n\\def \\paragraph #1{\\ocamldocparagraph {#1}\\noindent}\ +\n\\let \\ocamldocsubparagraph \\subparagraph\ +\n\\def \\subparagraph #1{\\ocamldocsubparagraph {#1}\\noindent}\ \n\ -\\let\\ocamldocvspace\\vspace\n\ +\n\\let\\ocamldocvspace\\vspace\ \n\ -\\newenvironment{ocamldocindent}{\\list{}{}\\item\\relax}{\\endlist}\n\ -\\newenvironment{ocamldocsigend}\n\ - {\\noindent\\quad\\texttt{sig}\\ocamldocindent}\n\ - {\\endocamldocindent\\vskip -\\lastskip\n\ - \\noindent\\quad\\texttt{end}\\medskip}\n\ -\\newenvironment{ocamldocobjectend}\n\ - {\\noindent\\quad\\texttt{object}\\ocamldocindent}\n\ - {\\endocamldocindent\\vskip -\\lastskip\n\ - \\noindent\\quad\\texttt{end}\\medskip}\n\ +\n\\newenvironment{ocamldocindent}{\\list{}{}\\item\\relax}{\\endlist}\ +\n\\newenvironment{ocamldocsigend}\ +\n {\\noindent\\quad\\texttt{sig}\\ocamldocindent}\ +\n {\\endocamldocindent\\vskip -\\lastskip\ +\n \\noindent\\quad\\texttt{end}\\medskip}\ +\n\\newenvironment{ocamldocobjectend}\ +\n {\\noindent\\quad\\texttt{object}\\ocamldocindent}\ +\n {\\endocamldocindent\\vskip -\\lastskip\ +\n \\noindent\\quad\\texttt{end}\\medskip}\ \n\ -\\endinput\n\ -" +\n\\endinput\ +\n" diff --git a/ocamldoc/odoc_merge.ml b/ocamldoc/odoc_merge.ml index 38de022923..eb20d15d30 100644 --- a/ocamldoc/odoc_merge.ml +++ b/ocamldoc/odoc_merge.ml @@ -43,6 +43,8 @@ let merge_before_tags l = iter [] l ;; +let version_separators = Str.regexp "[\\.\\+]";; + (** Merge two Odoctypes.info struture, completing the information of the first one with the information in the second one. The merge treatment depends on a given merge_option list. @@ -103,12 +105,20 @@ let merge_info merge_options (m1 : info) (m2 : info) = else Some v1 in -<<<<<<< .courant - let new_dep = -======= - let new_before = merge_before_tags (m1.i_before @ m2.i_before) in + let new_before = + match m1.i_before, m2.i_before with + [], [] -> [] + | l, [] + | [], l -> l + | l1, l2 -> + if List.mem Merge_before merge_options then + merge_before_tags (m1.i_before @ m2.i_before) + else + l1 in + let new_before = List.map (fun (v, t) -> (Str.split version_separators v, v, t)) new_before in + let new_before = List.sort Pervasives.compare new_before in + let new_before = List.map (fun (_, v, t) -> (v, t)) new_before in let new_dep = ->>>>>>> .fusion-droit.r10497 match m1.i_deprecated, m2.i_deprecated with None, None -> None | None, Some t diff --git a/ocamldoc/odoc_messages.ml b/ocamldoc/odoc_messages.ml index 9f2c634738..028dae9a6c 100644 --- a/ocamldoc/odoc_messages.ml +++ b/ocamldoc/odoc_messages.ml @@ -21,8 +21,8 @@ let message_version = software^" "^config_version (** Messages for command line *) -let usage = "Usage : "^(Sys.argv.(0))^" [options] <files>\n" -let options_are = "Options are :" +let usage = "Usage: "^(Sys.argv.(0))^" [options] <files>\n" +let options_are = "Options are:" let option_version = "\tPrint version and exit" let latex_only = "(LaTeX only)" let texi_only = "(TeXinfo only)" @@ -50,6 +50,9 @@ let load = "<file>\tLoad information from <file> ; may be used several times" let css_style = "<file>\n\t\tUse content of <file> as CSS style definition "^html_only let index_only = "\tGenerate index files only "^html_only let colorize_code = "\n\t\tColorize code even in documentation pages "^html_only +let charset c = Printf.sprintf + "<s>\n\t\tAdd information about character encoding being s\n\t\t(default is %s)" + c let generate_html = "\tGenerate HTML documentation" let generate_latex = "\tGenerate LaTeX documentation" let generate_texinfo = "\tGenerate TeXinfo documentation" @@ -60,7 +63,7 @@ let option_not_in_native_code op = "Option "^op^" not available in native code v let default_out_file = "ocamldoc.out" let out_file = - "<file>\tSet the ouput file name, used by texi, latex and dot generators\n"^ + "<file>\tSet the output file name, used by texi, latex and dot generators\n"^ "\t\t(default is "^default_out_file^")" let dot_include_all = @@ -167,6 +170,7 @@ let merge_author = ('a', "merge @author") let merge_version = ('v', "merge @version") let merge_see = ('l', "merge @see") let merge_since = ('s', "merge @since") +let merge_before = ('b', "merge @before") let merge_deprecated = ('o', "merge @deprecated") let merge_param = ('p', "merge @param") let merge_raised_exception = ('e', "merge @raise") @@ -194,6 +198,7 @@ let merge_options = merge_version ; merge_see ; merge_since ; + merge_before ; merge_deprecated ; merge_param ; merge_raised_exception ; @@ -202,6 +207,8 @@ let merge_options = merge_all ] ) +let help = "\t\tDisplay this list of options" + (** Error and warning messages *) diff --git a/ocamldoc/odoc_types.ml b/ocamldoc/odoc_types.ml index 97195c50b1..be8e4a2894 100644 --- a/ocamldoc/odoc_types.ml +++ b/ocamldoc/odoc_types.ml @@ -102,6 +102,7 @@ type merge_option = | Merge_version | Merge_see | Merge_since + | Merge_before | Merge_deprecated | Merge_param | Merge_raised_exception @@ -114,6 +115,7 @@ let all_merge_options = [ Merge_version ; Merge_see ; Merge_since ; + Merge_before ; Merge_deprecated ; Merge_param ; Merge_raised_exception ; diff --git a/ocamldoc/odoc_types.mli b/ocamldoc/odoc_types.mli index 8d3d5a99f4..c14c3411af 100644 --- a/ocamldoc/odoc_types.mli +++ b/ocamldoc/odoc_types.mli @@ -107,6 +107,7 @@ type merge_option = | Merge_version (** Versions are concatenated. *) | Merge_see (** See references are concatenated. *) | Merge_since (** Since information are concatenated. *) + | Merge_before (** Before information are concatenated. *) | Merge_deprecated (** Deprecated information are concatenated. *) | Merge_param (** Information on each parameter is concatenated, and all parameters are kept. *) diff --git a/otherlibs/bigarray/bigarray_stubs.c b/otherlibs/bigarray/bigarray_stubs.c index 0dbcd5af0f..de1a1fe6cb 100644 --- a/otherlibs/bigarray/bigarray_stubs.c +++ b/otherlibs/bigarray/bigarray_stubs.c @@ -529,8 +529,13 @@ static int caml_ba_compare(value v1, value v2) struct caml_bigarray * b1 = Bigarray_val(v1); struct caml_bigarray * b2 = Bigarray_val(v2); uintnat n, num_elts; + intnat flags1, flags2; int i; + /* Compare kind & layout in case the arguments are of different types */ + flags1 = b1->flags & (CAML_BA_KIND_MASK | CAML_BA_LAYOUT_MASK); + flags2 = b2->flags & (CAML_BA_KIND_MASK | CAML_BA_LAYOUT_MASK); + if (flags1 != flags2) return flags2 - flags1; /* Compare number of dimensions */ if (b1->num_dims != b2->num_dims) return b2->num_dims - b1->num_dims; /* Same number of dimensions: compare dimensions lexicographically */ diff --git a/otherlibs/bigarray/mmap_unix.c b/otherlibs/bigarray/mmap_unix.c index aa3a447a37..367b2244be 100644 --- a/otherlibs/bigarray/mmap_unix.c +++ b/otherlibs/bigarray/mmap_unix.c @@ -21,6 +21,7 @@ #include "io.h" #include "mlvalues.h" #include "sys.h" +#include "signals.h" extern int caml_ba_element_size[]; /* from bigarray_stubs.c */ @@ -146,7 +147,7 @@ CAMLprim value caml_ba_map_file(value vfd, value vkind, value vlayout, value caml_ba_map_file(value vfd, value vkind, value vlayout, value vshared, value vdim, value vpos) { - invalid_argument("Bigarray.map_file: not supported"); + caml_invalid_argument("Bigarray.map_file: not supported"); return Val_unit; } diff --git a/otherlibs/bigarray/mmap_win32.c b/otherlibs/bigarray/mmap_win32.c index 9d33cb89a9..050db5d266 100644 --- a/otherlibs/bigarray/mmap_win32.c +++ b/otherlibs/bigarray/mmap_win32.c @@ -108,7 +108,7 @@ CAMLprim value caml_ba_map_file(value vfd, value vkind, value vlayout, if (fmap == NULL) caml_ba_sys_error(); /* Determine offset so that the mapping starts at the given file pos */ GetSystemInfo(&sysinfo); - delta = (uintnat) (startpos % sysinfo.dwPageSize); + delta = (uintnat) (startpos % sysinfo.dwAllocationGranularity); /* Map the mapping in memory */ li.QuadPart = startpos - delta; addr = @@ -133,7 +133,7 @@ void caml_ba_unmap_file(void * addr, uintnat len) uintnat delta; GetSystemInfo(&sysinfo); - delta = (uintnat) addr % sysinfo.dwPageSize; + delta = (uintnat) addr % sysinfo.dwAllocationGranularity; UnmapViewOfFile((void *)((uintnat)addr - delta)); } diff --git a/otherlibs/db/.depend b/otherlibs/db/.depend deleted file mode 100644 index ba0e54e577..0000000000 --- a/otherlibs/db/.depend +++ /dev/null @@ -1,2 +0,0 @@ -db.cmo: db.cmi -db.cmx: db.cmi diff --git a/otherlibs/join/joinTextProc.ml b/otherlibs/join/joinTextProc.ml index 2250d83d79..7a105ca4d3 100644 --- a/otherlibs/join/joinTextProc.ml +++ b/otherlibs/join/joinTextProc.ml @@ -43,14 +43,17 @@ module Async = struct { out : producer ; err : producer ; waitpid : Unix.process_status Join.chan Join.chan ; - kill : int -> unit; } + kill : int -> unit; + gkill : int -> unit; } let et = let ep = JoinCom.P.empty() in { out=ep; err=ep; waitpid=(def k(_) = 0 in k); - kill=(fun _ -> ()); } + kill=(fun _ -> ()); + gkill=(fun _ -> ()); + } def producer_to_chan (prod,chan) = JoinCom.P.to_text_close (prod,chan) @@ -68,6 +71,7 @@ module Async = struct spawn waited(safe_wait pid) ; { r with kill=async_kill pid prods chans; + gkill=async_kill (-pid) prods chans; waitpid=waitpid; } let of_text chan = JoinCom.P.of_text chan @@ -124,7 +128,8 @@ module Sync = struct type t = { wait : unit -> result; - kill : int -> unit; } + kill : int -> unit; + gkill : int -> unit; } module P = JoinCom.P @@ -148,7 +153,7 @@ module Sync = struct def wait_ter() & waitpid(st) = reply { er with st=st; } to wait_ter in let () = spawn ext.Async.waitpid(waitpid) in - { wait=wait_ter; kill=ext.Async.kill; } + { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill; } let open_in cmd argv = let ext = Async.open_in cmd argv in @@ -158,7 +163,7 @@ module Sync = struct consume(ext.Async.out,verb "OUT" out) & ext.Async.waitpid(waitpid) end in - { wait=wait_ter; kill=ext.Async.kill; } + { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill; } let open_in_out cmd argv = @@ -169,7 +174,8 @@ module Sync = struct reply { er with st=st; out=os; } to wait_ter in consume(ext.Async.out,verb "OUT" out) & ext.Async.waitpid(waitpid) & - reply { wait=wait_ter; kill=ext.Async.kill; } to fork in + reply { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill;} + to fork in fork @@ -182,6 +188,7 @@ module Sync = struct consume(ext.Async.out,verb "OUT" out) & consume(ext.Async.err,verb "ERR" err) & ext.Async.waitpid(waitpid) & - reply { wait=wait_ter; kill=ext.Async.kill; } to fork in + reply { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill; } + to fork in fork end diff --git a/otherlibs/join/joinTextProc.mli b/otherlibs/join/joinTextProc.mli index c8391e9331..a7fb1b5aea 100644 --- a/otherlibs/join/joinTextProc.mli +++ b/otherlibs/join/joinTextProc.mli @@ -32,6 +32,7 @@ module Async : sig err : producer ; (** Connected to child process standard error *) waitpid : Unix.process_status Join.chan Join.chan ; (** Invoke continuation argument when child process changes status. *) kill : int -> unit; (** Send (Unix) signal to child process *) + gkill : int -> unit (** Send (Unix) signal to child process group *) } (** Notice that [out] or [err] above can be empty producers when child process channels redirection is not commanded. *) @@ -84,7 +85,8 @@ module Sync : sig type t = (** Abstraction of forked command *) { wait : unit -> result; (** Get result (will block) *) - kill : int -> unit; (** Kill child *) + kill : int -> unit; (** Kill child *) + gkill : int -> unit; (** Kill child group *) } val command : string -> string array -> t (** Analogous of {!JoinProc.command}. diff --git a/otherlibs/labltk/browser/shell.ml b/otherlibs/labltk/browser/shell.ml index 18e1f34945..e570e95444 100644 --- a/otherlibs/labltk/browser/shell.ml +++ b/otherlibs/labltk/browser/shell.ml @@ -254,7 +254,7 @@ let may_exec = let path_sep = if is_win32 then ";" else ":" -let warnings = ref "Al" +let warnings = ref Warnings.defaults_w let program_not_found prog = Jg_message.info ~title:"Error" diff --git a/otherlibs/num/big_int.ml b/otherlibs/num/big_int.ml index fd0e5ef502..2121f07ce3 100644 --- a/otherlibs/num/big_int.ml +++ b/otherlibs/num/big_int.ml @@ -701,7 +701,9 @@ let shift_right_towards_zero_big_int bi n = let tmp = create_nat 1 in shift_right_nat res 0 size_res tmp 0 nbits end; - { sign = bi.sign; abs_value = res } + if is_zero_nat res 0 size_res + then zero_big_int + else { sign = bi.sign; abs_value = res } end end diff --git a/otherlibs/systhreads/Makefile b/otherlibs/systhreads/Makefile index c8ef736625..0f544ab008 100644 --- a/otherlibs/systhreads/Makefile +++ b/otherlibs/systhreads/Makefile @@ -21,7 +21,7 @@ JCC=../../ocamlcomp.sh -I ../unix JCOPT=../../ocamlcompopt.sh -I ../unix MKLIB=../../boot/ocamlrun ../../tools/ocamlmklib COMPFLAGS=-warn-error A -g -OCAMLPP=-pp '../../ocamldoc/remove_DEBUG' +OCAMLPP=-pp '../../tools/remove_DEBUG' BYTECODE_JOIN_C_OBJS=join_b.o diff --git a/otherlibs/systhreads/st_stubs.c b/otherlibs/systhreads/st_stubs.c index 2e65ecd0b0..fbef6ea051 100644 --- a/otherlibs/systhreads/st_stubs.c +++ b/otherlibs/systhreads/st_stubs.c @@ -451,6 +451,11 @@ CAMLprim value caml_thread_cleanup(value unit) /* ML */ static void caml_thread_stop(void) { +#ifndef NATIVE_CODE + /* PR#5188: update curr_thread->stack_low because the stack may have + been reallocated since the last time we entered a blocking section */ + curr_thread->stack_low = stack_low; +#endif /* Signal that the thread has terminated */ caml_threadstatus_terminate(Terminated(curr_thread->descr)); /* Remove th from the doubly-linked list of threads and free its info block */ diff --git a/otherlibs/systhreads/thread.ml b/otherlibs/systhreads/thread.ml index e7d528f646..18cc819bbf 100644 --- a/otherlibs/systhreads/thread.ml +++ b/otherlibs/systhreads/thread.ml @@ -18,6 +18,7 @@ type t external thread_initialize : unit -> unit = "caml_thread_initialize" +external thread_cleanup : unit -> unit = "caml_thread_cleanup" external thread_new : (unit -> unit) -> t = "caml_thread_new" external thread_uncaught_exception : exn -> unit = "caml_thread_uncaught_exception" @@ -57,8 +58,17 @@ let preempt_signal = | _ -> Sys.sigvtalrm let _ = - ignore(Sys.signal preempt_signal (Sys.Signal_handle preempt)); - thread_initialize() + Sys.set_signal preempt_signal (Sys.Signal_handle preempt); + thread_initialize(); + at_exit + (fun () -> + thread_cleanup(); + (* In case of DLL-embedded Ocaml the preempt_signal handler + will point to nowhere after DLL unloading and an accidental + preempt_signal will crash the main program. So restore the + default handler. *) + Sys.set_signal preempt_signal Sys.Signal_default + ) (* Wait functions *) diff --git a/otherlibs/threads/.depend b/otherlibs/threads/.depend index 677b36df86..95075f3cfc 100644 --- a/otherlibs/threads/.depend +++ b/otherlibs/threads/.depend @@ -22,24 +22,21 @@ event.cmi: join_debug.cmi: join_extern.cmi: thread.cmi join_hash.cmi: -join_link.cmi: unix.cmi +join_link.cmi: unix.cmo join_message.cmi: join_types.cmi join_link.cmi -join_misc.cmi: unix.cmi marshal.cmi -join_port.cmi: unix.cmi join_link.cmi +join_misc.cmi: unix.cmo marshal.cmo +join_port.cmi: unix.cmo join_link.cmi join_prim.cmi: join_types.cmi join_queue.cmi: join_scheduler.cmi: mutex.cmi join_types.cmi join_set.cmi: -join_space.cmi: unix.cmi marshal.cmi join_types.cmi -join_test.cmi: marshal.cmi join_types.cmi -join_types.cmi: unix.cmi mutex.cmi join_set.cmi join_misc.cmi join_link.cmi \ +join_space.cmi: unix.cmo marshal.cmo join_types.cmi +join_test.cmi: marshal.cmo join_types.cmi +join_types.cmi: unix.cmo mutex.cmi join_set.cmi join_misc.cmi join_link.cmi \ join_hash.cmi condition.cmi -marshal.cmi: mutex.cmi: -pervasives.cmi: -thread.cmi: unix.cmi -threadUnix.cmi: unix.cmi -unix.cmi: +thread.cmi: unix.cmo +threadUnix.cmi: unix.cmo condition.cmo: thread.cmi mutex.cmi condition.cmi condition.cmx: thread.cmx mutex.cmx condition.cmi event.cmo: mutex.cmi condition.cmi event.cmi @@ -50,15 +47,15 @@ join_extern.cmo: thread.cmi join_extern.cmi join_extern.cmx: thread.cmx join_extern.cmi join_hash.cmo: join_misc.cmi join_hash.cmi join_hash.cmx: join_misc.cmx join_hash.cmi -join_link.cmo: unix.cmi join_misc.cmi join_debug.cmi join_link.cmi +join_link.cmo: unix.cmo join_misc.cmi join_debug.cmi join_link.cmi join_link.cmx: unix.cmx join_misc.cmx join_debug.cmx join_link.cmi -join_message.cmo: marshal.cmi join_types.cmi join_link.cmi join_hash.cmi \ +join_message.cmo: marshal.cmo join_types.cmi join_link.cmi join_hash.cmi \ join_debug.cmi join_message.cmi join_message.cmx: marshal.cmx join_types.cmi join_link.cmx join_hash.cmx \ join_debug.cmx join_message.cmi -join_misc.cmo: unix.cmi mutex.cmi join_debug.cmi condition.cmi join_misc.cmi +join_misc.cmo: unix.cmo mutex.cmi join_debug.cmi condition.cmi join_misc.cmi join_misc.cmx: unix.cmx mutex.cmx join_debug.cmx condition.cmx join_misc.cmi -join_port.cmo: unix.cmi join_scheduler.cmi join_misc.cmi join_link.cmi \ +join_port.cmo: unix.cmo join_scheduler.cmi join_misc.cmi join_link.cmi \ join_debug.cmi join_port.cmi join_port.cmx: unix.cmx join_scheduler.cmx join_misc.cmx join_link.cmx \ join_debug.cmx join_port.cmi @@ -74,7 +71,7 @@ join_scheduler.cmx: thread.cmx mutex.cmx join_types.cmi join_misc.cmx \ join_extern.cmx join_debug.cmx condition.cmx join_scheduler.cmi join_set.cmo: mutex.cmi join_misc.cmi join_set.cmi join_set.cmx: mutex.cmx join_misc.cmx join_set.cmi -join_space.cmo: unix.cmi thread.cmi pervasives.cmi mutex.cmi marshal.cmi \ +join_space.cmo: unix.cmo thread.cmi pervasives.cmo mutex.cmi marshal.cmo \ join_types.cmi join_set.cmi join_scheduler.cmi join_port.cmi \ join_misc.cmi join_message.cmi join_link.cmi join_hash.cmi join_debug.cmi \ condition.cmi join_space.cmi @@ -84,15 +81,15 @@ join_space.cmx: unix.cmx thread.cmx pervasives.cmx mutex.cmx marshal.cmx \ condition.cmx join_space.cmi join_test.cmo: join_space.cmi join_test.cmi join_test.cmx: join_space.cmx join_test.cmi -marshal.cmo: pervasives.cmi marshal.cmi -marshal.cmx: pervasives.cmx marshal.cmi +marshal.cmo: pervasives.cmo +marshal.cmx: pervasives.cmx mutex.cmo: thread.cmi mutex.cmi mutex.cmx: thread.cmx mutex.cmi -pervasives.cmo: unix.cmi pervasives.cmi -pervasives.cmx: unix.cmx pervasives.cmi -thread.cmo: unix.cmi thread.cmi +pervasives.cmo: unix.cmo +pervasives.cmx: unix.cmx +thread.cmo: unix.cmo thread.cmi thread.cmx: unix.cmx thread.cmi -threadUnix.cmo: unix.cmi thread.cmi threadUnix.cmi +threadUnix.cmo: unix.cmo thread.cmi threadUnix.cmi threadUnix.cmx: unix.cmx thread.cmx threadUnix.cmi -unix.cmo: unix.cmi -unix.cmx: unix.cmi +unix.cmo: +unix.cmx: diff --git a/otherlibs/threads/Makefile b/otherlibs/threads/Makefile index 7de6ed1f48..0e1f3c0b07 100644 --- a/otherlibs/threads/Makefile +++ b/otherlibs/threads/Makefile @@ -22,7 +22,7 @@ CAMLC=../../ocamlcomp.sh -I ../unix $(NOJOIN) JCC=../../ocamlcomp.sh -I ../unix MKLIB=../../boot/ocamlrun ../../tools/ocamlmklib COMPFLAGS=-warn-error A -OCAMLPP=-pp '../../ocamldoc/remove_DEBUG' +OCAMLPP=-pp '../../tools/remove_DEBUG' JOIN_C_OBJS=join.o diff --git a/otherlibs/unix/.depend b/otherlibs/unix/.depend index cf80dc6992..daf5a6ac93 100644 --- a/otherlibs/unix/.depend +++ b/otherlibs/unix/.depend @@ -252,7 +252,8 @@ lockf.o: lockf.c ../../byterun/fail.h ../../byterun/compatibility.h \ lseek.o: lseek.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \ ../../byterun/config.h ../../byterun/../config/m.h \ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \ - ../../byterun/mlvalues.h ../../byterun/io.h unixsupport.h + ../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/signals.h \ + unixsupport.h mkdir.o: mkdir.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \ ../../byterun/config.h ../../byterun/../config/m.h \ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h diff --git a/otherlibs/unix/lseek.c b/otherlibs/unix/lseek.c index cb59bb5517..d8180eaea6 100644 --- a/otherlibs/unix/lseek.c +++ b/otherlibs/unix/lseek.c @@ -18,6 +18,7 @@ #include <mlvalues.h> #include <alloc.h> #include <io.h> +#include <signals.h> #include "unixsupport.h" #ifdef HAS_UNISTD diff --git a/otherlibs/win32unix/channels.c b/otherlibs/win32unix/channels.c index bcc97c88c0..8fdaec73ec 100644 --- a/otherlibs/win32unix/channels.c +++ b/otherlibs/win32unix/channels.c @@ -30,6 +30,7 @@ int win_CRT_fd_of_filedescr(value handle) } else { int fd = _open_osfhandle((long) Handle_val(handle), O_BINARY); if (fd == -1) uerror("channel_of_descr", Nothing); + CRT_fd_val(handle) = fd; return fd; } } diff --git a/otherlibs/win32unix/close.c b/otherlibs/win32unix/close.c index 48cd60e7aa..21254ef1e1 100644 --- a/otherlibs/win32unix/close.c +++ b/otherlibs/win32unix/close.c @@ -15,6 +15,9 @@ #include <mlvalues.h> #include "unixsupport.h" +#include <io.h> + +extern int _close(int); CAMLprim value unix_close(value fd) { @@ -24,9 +27,17 @@ CAMLprim value unix_close(value fd) uerror("close", Nothing); } } else { - if (! CloseHandle(Handle_val(fd))) { - win32_maperr(GetLastError()); - uerror("close", Nothing); + /* If we have an fd then closing it also closes + * the underlying handle. Also, closing only + * the handle and not the fd leads to fd leaks. */ + if (CRT_fd_val(fd) != NO_CRT_FD) { + if (_close(CRT_fd_val(fd)) != 0) + uerror("close", Nothing); + } else { + if (! CloseHandle(Handle_val(fd))) { + win32_maperr(GetLastError()); + uerror("close", Nothing); + } } } return Val_unit; diff --git a/parsing/parser.mly b/parsing/parser.mly index 6905d40ff2..51750c20e3 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -1467,7 +1467,7 @@ simple_core_type2: package_type: mty_longident { ($1, []) } | mty_longident WITH package_type_cstrs { ($1, $3) } - +; package_type_cstr: TYPE LIDENT EQUAL core_type { ($2, $4) } ; diff --git a/stdlib/arg.ml b/stdlib/arg.ml index 009e203753..ac552d38e8 100644 --- a/stdlib/arg.ml +++ b/stdlib/arg.ml @@ -90,10 +90,14 @@ let usage_b buf speclist errmsg = List.iter (print_spec buf) (add_help speclist); ;; -let usage speclist errmsg = +let usage_string speclist errmsg = let b = Buffer.create 200 in usage_b b speclist errmsg; - eprintf "%s" (Buffer.contents b); + Buffer.contents b; +;; + +let usage speclist errmsg = + eprintf "%s" (usage_string speclist errmsg); ;; let current = ref 0;; diff --git a/stdlib/arg.mli b/stdlib/arg.mli index 4e5ed08d1c..8872566152 100644 --- a/stdlib/arg.mli +++ b/stdlib/arg.mli @@ -79,7 +79,7 @@ val parse : as their arguments appear on the command line. If an error occurs, [Arg.parse] exits the program, after printing - an error message as follows: + to standard error an error message as follows: - The reason for the error: unknown option, invalid or missing argument, etc. - [usage_msg] - The list of options, each followed by the corresponding [doc] string. @@ -88,9 +88,9 @@ val parse : [-], include for example [("-", String anon_fun, doc)] in [speclist]. By default, [parse] recognizes two unit options, [-help] and [--help], - which will display [usage_msg] and the list of options, and exit - the program. You can override this behaviour by specifying your - own [-help] and [--help] options in [speclist]. + which will print to standard output [usage_msg] and the list of + options, and exit the program. You can override this behaviour + by specifying your own [-help] and [--help] options in [speclist]. *) val parse_argv : ?current: int ref -> string array -> @@ -115,11 +115,15 @@ exception Bad of string [Arg.Bad] is also raised by [Arg.parse_argv] in case of an error. *) val usage : (key * spec * doc) list -> usage_msg -> unit -(** [Arg.usage speclist usage_msg] prints an error message including - the list of valid options. This is the same message that - {!Arg.parse} prints in case of error. +(** [Arg.usage speclist usage_msg] prints to standard error + an error message that includes the list of valid options. This is + the same message that {!Arg.parse} prints in case of error. [speclist] and [usage_msg] are the same as for [Arg.parse]. *) +val usage_string : (key * spec * doc) list -> usage_msg -> string +(** Returns the message that would have been printed by {!Arg.usage}, + if provided with the same parameters. *) + val align: (key * spec * doc) list -> (key * spec * doc) list;; (** Align the documentation strings by inserting spaces at the first space, according to the length of the keyword. Use a diff --git a/stdlib/camlheaderd b/stdlib/camlheaderd index cb892db1b2..e34073c722 100644 --- a/stdlib/camlheaderd +++ b/stdlib/camlheaderd @@ -1 +1 @@ -#!/opt/jocaml-3.13/bin/ocamlrund +#!/opt/jocamltrunk//bin/ocamlrund diff --git a/stdlib/filename.mli b/stdlib/filename.mli index e43f19ccf2..efbdcd98d5 100644 --- a/stdlib/filename.mli +++ b/stdlib/filename.mli @@ -82,6 +82,7 @@ val temp_file : ?temp_dir: string -> string -> string -> string (readable and writable only by the file owner). The file is guaranteed to be different from any other file that existed when [temp_file] was called. + Raise [Sys_error] if the file could not be created. @before 3.11.2 no ?temp_dir optional argument *) @@ -95,6 +96,7 @@ val open_temp_file : [mode] is a list of additional flags to control the opening of the file. It can contain one or several of [Open_append], [Open_binary], and [Open_text]. The default is [[Open_text]] (open in text mode). + Raise [Sys_error] if the file could not be opened. @before 3.11.2 no ?temp_dir optional argument *) diff --git a/stdlib/format.mli b/stdlib/format.mli index 38123900aa..9b49c53f46 100644 --- a/stdlib/format.mli +++ b/stdlib/format.mli @@ -689,11 +689,11 @@ val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b;; (** {6 Deprecated} *) val bprintf : Buffer.t -> ('a, formatter, unit) format -> 'a;; -(** Deprecated and error prone function. Do not use it. +(** A deprecated and error prone function. Do not use it. If you need to print to some buffer [b], you must first define a formatter writing to [b], using [let to_b = formatter_of_buffer b]; then use regular calls to [Format.fprintf] on formatter [to_b]. *) val kprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b;; -(** Deprecated name. A synonym for [ksprintf]. *) +(** A deprecated synonym for [ksprintf]. *) diff --git a/stdlib/parsing.ml b/stdlib/parsing.ml index 44c7fb2715..5d53c74132 100644 --- a/stdlib/parsing.ml +++ b/stdlib/parsing.ml @@ -151,6 +151,7 @@ let yyparse tables start lexer lexbuf = and init_stackbase = env.stackbase and init_state = env.state and init_curr_char = env.curr_char + and init_lval = env.lval and init_errflag = env.errflag in env.stackbase <- env.sp + 1; env.curr_char <- start; @@ -164,6 +165,7 @@ let yyparse tables start lexer lexbuf = env.stackbase <- init_stackbase; env.state <- init_state; env.curr_char <- init_curr_char; + env.lval <- init_lval; env.errflag <- init_errflag; match exn with YYexit v -> diff --git a/stdlib/pervasives.mli b/stdlib/pervasives.mli index 13905ecc3d..70fd033626 100644 --- a/stdlib/pervasives.mli +++ b/stdlib/pervasives.mli @@ -310,7 +310,7 @@ external atan : float -> float = "caml_atan_float" "atan" "float" Result is in radians and is between [-pi/2] and [pi/2]. *) external atan2 : float -> float -> float = "caml_atan2_float" "atan2" "float" -(** [atan x y] returns the arc tangent of [y /. x]. The signs of [x] +(** [atan2 y x] returns the arc tangent of [y /. x]. The signs of [x] and [y] are used to determine the quadrant of the result. Result is in radians and is between [-pi] and [pi]. *) @@ -505,7 +505,7 @@ val stdout : out_channel (** The standard output for the process. *) val stderr : out_channel -(** The standard error ouput for the process. *) +(** The standard error output for the process. *) (** {7 Output functions on standard output} *) @@ -858,9 +858,14 @@ external decr : int ref -> unit = "%decr" included for backward compatibility with earlier releases of Objective Caml. ['a] is the type of the parameters of the format, - ['c] is the result type for the "printf"-style function, - and ['b] is the type of the first argument given to - [%a] and [%t] printing functions. *) + ['b] is the type of the first argument given to + [%a] and [%t] printing functions, + ['c] is the type of the argument transmitted to the first argument of + "kprintf"-style functions, + ['d] is the result type for the "scanf"-style functions, + ['e] is the type of the receiver function for the "scanf"-style functions, + ['f] is the result type for the "printf"-style function. + *) type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6 type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4 diff --git a/stdlib/printf.ml b/stdlib/printf.ml index a16c9184a1..13f16dd69f 100644 --- a/stdlib/printf.ml +++ b/stdlib/printf.ml @@ -106,6 +106,7 @@ let pad_string pad_char p neg s i len = then String.blit s i res 0 len else String.blit s i res (p - len) len; res +;; (* Format a string given a %s format, e.g. %40s or %-20s. To do ?: ignore other flags (#, +, etc). *) @@ -196,7 +197,8 @@ let sub_format incomplete_format bad_conversion_format conv fmt i = ;; let sub_format_for_printf conv = - sub_format incomplete_format bad_conversion_format conv;; + sub_format incomplete_format bad_conversion_format conv +;; let iter_on_format_args fmt add_conv add_char = @@ -307,7 +309,7 @@ let ac_of_format fmt = let count_arguments_of_format fmt = let ac = ac_of_format fmt in - (* For printing only regular arguments have to be counted. *) + (* For printing, only the regular arguments have to be counted. *) ac.ac_rglr ;; @@ -376,7 +378,7 @@ type positional_specification = Note that this is optimized for the regular case, i.e. no positional parameter, since in this case we juste ``return'' the constant [Spec_none]; in case we have a positional parameter, we ``return'' a - [Spec_index] [positional_specification] which a bit more costly. + [Spec_index] [positional_specification] which is a bit more costly. Note also that we do not support [*$] specifications, since this would lead to type checking problems: a [*$] positional specification means @@ -663,9 +665,13 @@ let ksprintf k = mkprintf true get_buff Buffer.add_char Buffer.add_string ignore (get_cont k) ;; +let sprintf fmt = ksprintf (fun s -> s) fmt;; + +(* Obsolete and deprecated. *) let kprintf = ksprintf;; -let sprintf fmt = ksprintf (fun s -> s) fmt;; +(* For Caml system internal use only: needed to implement modules [Format] + and [Scanf]. *) module CamlinternalPr = struct diff --git a/stdlib/printf.mli b/stdlib/printf.mli index 35d390a5f4..e122dececa 100644 --- a/stdlib/printf.mli +++ b/stdlib/printf.mli @@ -75,7 +75,7 @@ val fprintf : out_channel -> ('a, out_channel, unit) format -> 'a - [( fmt %)]: format string substitution. Takes a format string argument and substitutes it to the internal format string [fmt] to print following arguments. The argument must have the same - type as [fmt]. + type as the internal format string [fmt]. - [!]: take no argument and flush the output. - [%]: take no argument and output one [%] character. - [,]: the no-op delimiter for conversion specifications. @@ -146,12 +146,14 @@ val kbprintf : (Buffer.t -> 'a) -> Buffer.t -> @since 3.10.0 *) +(** Deprecated *) + val kprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b;; (** A deprecated synonym for [ksprintf]. *) (**/**) -(* For system use only. Don't call directly. *) +(* For Caml system internal use only. Don't call directly. *) module CamlinternalPr : sig diff --git a/stdlib/scanf.mli b/stdlib/scanf.mli index 373c9ae31e..59d8d9d936 100644 --- a/stdlib/scanf.mli +++ b/stdlib/scanf.mli @@ -131,7 +131,7 @@ val open_in : file_name -> in_channel;; @since 3.12.0 *) -val open_in_bin : file_name -> in_channel;; +val open_in_bin : string -> in_channel;; (** [Scanning.open_in_bin fname] returns a formatted input channel for bufferized reading in binary mode of file [fname]. @since 3.12.0 diff --git a/stdlib/string.ml b/stdlib/string.ml index e61e9efe90..72f9494cc0 100644 --- a/stdlib/string.ml +++ b/stdlib/string.ml @@ -183,4 +183,4 @@ let rcontains_from s i c = type t = string -let compare = Pervasives.compare +let compare (x: t) (y: t) = Pervasives.compare x y diff --git a/stdlib/sys.mli b/stdlib/sys.mli index e1cf99aafa..713038aa7a 100644 --- a/stdlib/sys.mli +++ b/stdlib/sys.mli @@ -31,7 +31,7 @@ external is_directory : string -> bool = "caml_sys_is_directory" (** Returns [true] if the given name refers to a directory, [false] if it refers to another kind of file. Raise [Sys_error] if no file exists with the given name. - @since 3.12.0 + @since 3.10.0 *) external remove : string -> unit = "caml_sys_remove" diff --git a/test/.cvsignore b/test/.cvsignore deleted file mode 100644 index 66d34d7336..0000000000 --- a/test/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -*.byt -*.out diff --git a/test/.depend b/test/.depend deleted file mode 100644 index ac5de61e8e..0000000000 --- a/test/.depend +++ /dev/null @@ -1,28 +0,0 @@ -KB/equations.cmi: KB/terms.cmi -KB/kb.cmi: KB/equations.cmi KB/terms.cmi -KB/orderings.cmi: KB/terms.cmi -KB/equations.cmo: KB/equations.cmi KB/terms.cmi -KB/equations.cmx: KB/equations.cmi KB/terms.cmx -KB/kb.cmo: KB/kb.cmi KB/equations.cmi KB/terms.cmi -KB/kb.cmx: KB/kb.cmi KB/equations.cmx KB/terms.cmx -KB/kbmain.cmo: KB/kb.cmi KB/orderings.cmi KB/equations.cmi KB/terms.cmi -KB/kbmain.cmx: KB/kb.cmx KB/orderings.cmx KB/equations.cmx KB/terms.cmx -KB/orderings.cmo: KB/orderings.cmi KB/terms.cmi -KB/orderings.cmx: KB/orderings.cmi KB/terms.cmx -KB/terms.cmo: KB/terms.cmi -KB/terms.cmx: KB/terms.cmi -Lex/grammar.cmi: Lex/syntax.cmo -Lex/gram_aux.cmo: Lex/syntax.cmo -Lex/gram_aux.cmx: Lex/syntax.cmx -Lex/grammar.cmo: Lex/grammar.cmi Lex/gram_aux.cmo Lex/syntax.cmo -Lex/grammar.cmx: Lex/grammar.cmi Lex/gram_aux.cmx Lex/syntax.cmx -Lex/lexgen.cmo: Lex/syntax.cmo -Lex/lexgen.cmx: Lex/syntax.cmx -Lex/main.cmo: Lex/lexgen.cmo Lex/output.cmo Lex/grammar.cmi \ - Lex/scanner.cmo Lex/syntax.cmo Lex/scan_aux.cmo -Lex/main.cmx: Lex/lexgen.cmx Lex/output.cmx Lex/grammar.cmx \ - Lex/scanner.cmx Lex/syntax.cmx Lex/scan_aux.cmx -Lex/output.cmo: Lex/syntax.cmo -Lex/output.cmx: Lex/syntax.cmx -Lex/scanner.cmo: Lex/syntax.cmo Lex/scan_aux.cmo Lex/grammar.cmi -Lex/scanner.cmx: Lex/syntax.cmx Lex/scan_aux.cmx Lex/grammar.cmx diff --git a/test/test_bng.c b/test/test_bng.c deleted file mode 100644 index 2d6a6e8088..0000000000 --- a/test/test_bng.c +++ /dev/null @@ -1,408 +0,0 @@ -/***********************************************************************/ -/* */ -/* Objective Caml */ -/* */ -/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */ -/* */ -/* Copyright 2003 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. */ -/* */ -/***********************************************************************/ - -/* $Id: test_bng.c 5900 2003-11-07 07:59:10Z xleroy $ */ - -/* Test harness for the BNG primitives. Use BigNum as a reference. */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <BigNum.h> - -#include "../../../config/m.h" -#include "bng.h" - -#if defined(__GNUC__) && BNG_ASM_LEVEL > 0 -#if defined(BNG_ARCH_ia32) -#include "bng_ia32.c" -#elif defined(BNG_ARCH_amd64) -#include "bng_amd64.c" -#elif defined(BNG_ARCH_ppc) -#include "bng_ppc.c" -#elif defined (BNG_ARCH_alpha) -#include "bng_alpha.c" -#elif defined (BNG_ARCH_sparc) -#include "bng_sparc.c" -#elif defined (BNG_ARCH_mips) -#include "bng_mips.c" -#endif -#endif - -#include "bng_digit.c" - -/* Random generator for digits. Can either generate "true" PRN numbers - or numbers consisting of long sequences of 0 and 1 bits. */ - -static int rand_skewed = 0; -static int rand_runlength = 0; -static int rand_bit = 0; -static bngdigit rand_seed = 0; - -static bngdigit randdigit(void) -{ - bngdigit res; - int i; - - if (rand_skewed) { - for (i = 0, res = 0; i < BNG_BITS_PER_DIGIT; i++) { - if (rand_runlength == 0) { - rand_runlength = 1 + (rand() % (2 * BNG_BITS_PER_DIGIT)); - rand_bit ^= 1; - } - res = (res << 1) | rand_bit; - rand_runlength--; - } - return res; - } else { - rand_seed = rand_seed * 69069 + 25173; - return rand_seed; - } -} - -/* Test the operations on digits. - This uses double-width integer arithmetic as reference. - This is only available on 32-bit platforms that support a 64-bit int type. -*/ - -#if defined(ARCH_UINT64_TYPE) && !defined(ARCH_SIXTYFOUR) - -typedef ARCH_UINT64_TYPE dbldigit; - -static int test_digit_ops(int i) -{ - bngdigit a1, a2, a3, r1, r2; - int ci, co, n; - - a1 = randdigit(); - a2 = randdigit(); - a3 = randdigit(); - ci = randdigit() & 1; - - BngAdd2(r1,co,a1,a2); - if ((dbldigit) r1 + ((dbldigit) co << BNG_BITS_PER_DIGIT) - != (dbldigit) a1 + (dbldigit) a2) { - printf("Round %d, BngAdd2(%lx,%x,%lx, %lx)\n", i, r1, co, a1, a2); - return 1; - } - - BngAdd2Carry(r1,co,a1,a2,ci); - if ((dbldigit) r1 + ((dbldigit) co << BNG_BITS_PER_DIGIT) - != (dbldigit) a1 + (dbldigit) a2 + (dbldigit) ci) { - printf("Round %d, BngAdd2Carry(%lx,%x,%lx, %lx, %x)\n", i, r1, co, a1, a2, ci); - return 1; - } - - r2 = 0; - BngAdd3(r1,r2,a1,a2,a3); - if ((dbldigit) r1 + ((dbldigit) r2 << BNG_BITS_PER_DIGIT) - != (dbldigit) a1 + (dbldigit) a2 + (dbldigit) a3) { - printf("Round %d, BngAdd3(%lx,%x,%lx, %lx, %lx)\n", i, r1, co, a1, a2, a3); - return 1; - } - - BngSub2(r1,co,a1,a2); - if ((dbldigit) r1 - ((dbldigit) co << BNG_BITS_PER_DIGIT) - != (dbldigit) a1 - (dbldigit) a2) { - printf("Round %d, BngSub2(%lx,%x,%lx, %lx)\n", i, r1, co, a1, a2); - return 1; - } - - BngSub2Carry(r1,co,a1,a2,ci); - if ((dbldigit) r1 - ((dbldigit) co << BNG_BITS_PER_DIGIT) - != (dbldigit) a1 - (dbldigit) a2 - (dbldigit) ci) { - printf("Round %d, BngSub2Carry(%lx,%x,%lx, %lx, %x)\n", i, r1, co, a1, a2, ci); - return 1; - } - - r2 = 0; - BngSub3(r1,r2,a1,a2,a3); - if ((dbldigit) r1 - ((dbldigit) r2 << BNG_BITS_PER_DIGIT) - != (dbldigit) a1 - (dbldigit) a2 - (dbldigit) a3) { - printf("Round %d, BngSub3(%lx,%x,%lx, %lx, %lx)\n", i, r1, co, a1, a2, a3); - return 1; - } - - BngMult(r1,r2,a1,a2); - if ((((dbldigit) r1 << BNG_BITS_PER_DIGIT) | (dbldigit) r2) - != (dbldigit) a1 * (dbldigit) a2) { - printf("Round %d, BngMult(%lx,%lx,%lx, %lx)\n", i, r1, r2, a1, a2); - return 1; - } - - /* Make sure a3 is normalized */ - a3 |= 1L << (BNG_BITS_PER_DIGIT - 1); - if (a1 < a3) { - BngDiv(r1,r2,a1,a2,a3); - if (r1 != (((dbldigit) a1 << BNG_BITS_PER_DIGIT) | (dbldigit) a2) / a3 - || - r2 != (((dbldigit) a1 << BNG_BITS_PER_DIGIT) | (dbldigit) a2) % a3) - { - printf("Round %d, BngDiv(%lx,%lx,%lx, %lx, %lx)\n", i, r1, r2, a1, a2, a3); - return 1; - } - } - - n = bng_leading_zero_bits(a1); - if (a1 == 0) { - if (n != BNG_BITS_PER_DIGIT) { - printf("Round %d, bng_leading_zero(bits(%lx) = %d", i, a1, n); - return 1; - } - } else { - if ((a1 << n) >> n != a1 || - ((a1 << n) & (1L << (BNG_BITS_PER_DIGIT - 1))) == 0) { - printf("Round %d, bng_leading_zero(bits(%lx) = %d", i, a1, n); - return 1; - } - } - return 0; -} - -#endif - -/* Test the bng operations. Use BigNum as a reference. */ - -#define MAX_DIGITS 32 - -void randbng(bng a, bngsize n) -{ - int i; - for (i = 0; i < n; i++) a[i] = randdigit(); -} - -char * bng2string(bng a, bngsize n) -{ - char * buffer = malloc((BNG_BITS_PER_DIGIT / 4 + 1) * MAX_DIGITS); - char temp[BNG_BITS_PER_DIGIT / 4 + 1]; - int i; - - buffer[0] = 0; - for (i = n - 1; i >= 0; i--) { - sprintf(temp, "%lx", a[i]); - strcat(buffer, temp); - if (i > 0) strcat(buffer, "_"); - } - return buffer; -} - -int bngsame(bng a, bng b, bngsize n) -{ - int i; - for (i = 0; i < n; i++) - if (a[i] != b[i]) return 0; - return 1; -} - -int test_bng_ops(int i) -{ - bngsize p, q; - bngdigit a[MAX_DIGITS], b[MAX_DIGITS], c[MAX_DIGITS], d[MAX_DIGITS]; - bngdigit f[2 * MAX_DIGITS], g[2 * MAX_DIGITS], h[2 * MAX_DIGITS]; - bngcarry ci, co, cp; - bngdigit dg, do_, dp; - int amount; - - /* Determine random lengths p and q between 1 and MAX_DIGITS. - Ensure p >= q. */ - p = 1 + (rand() % MAX_DIGITS); - q = 1 + (rand() % MAX_DIGITS); - if (q > p) { bngsize t = p; p = q; q = t; } - - /* Randomly generate bignums a of size p, b of size q */ - randbng(a, p); - randbng(b, q); - ci = rand() & 1; - - /* comparison */ - co = bng_compare(a, p, b, q); - cp = BnnCompare(a, p, b, q); - if (co != cp) { - printf("Round %d, bng_compare(%s, %ld, %s, %ld) = %d\n", - i, bng2string(a, p), p, bng2string(b, q), q, co); - return 1; - } - co = bng_compare(b, q, a, p); - cp = BnnCompare(b, q, a, p); - if (co != cp) { - printf("Round %d, bng_compare(%s, %ld, %s, %ld) = %d\n", - i, bng2string(b, q), q, bng2string(a, p), p, co); - return 1; - } - /* add carry */ - bng_assign(c, a, p); - co = bng_add_carry(c, p, ci); - BnnAssign(d, a, p); - cp = BnnAddCarry(d, p, ci); - if (co != cp || !bngsame(c, d, p)) { - printf("Round %d, bng_add_carry(%s, %ld, %d) -> %s, %d\n", - i, bng2string(a, p), p, ci, bng2string(c, p), co); - return 1; - } - /* add */ - bng_assign(c, a, p); - co = bng_add(c, p, b, q, ci); - BnnAssign(d, a, p); - cp = BnnAdd(d, p, b, q, ci); - if (co != cp || !bngsame(c, d, p)) { - printf("Round %d, bng_add(%s, %ld, %s, %ld, %d) -> %s, %d\n", - i, bng2string(a, p), p, bng2string(b, q), q, ci, - bng2string(c, p), co); - return 1; - } - /* sub carry */ - bng_assign(c, a, p); - co = bng_sub_carry(c, p, ci); - BnnAssign(d, a, p); - cp = BnnSubtractBorrow(d, p, ci ^ 1) ^ 1; - if (co != cp || !bngsame(c, d, p)) { - printf("Round %d, bng_sub_carry(%s, %ld, %d) -> %s, %d\n", - i, bng2string(a, p), p, ci, bng2string(c, p), co); - return 1; - } - /* sub */ - bng_assign(c, a, p); - co = bng_sub(c, p, b, q, ci); - BnnAssign(d, a, p); - cp = BnnSubtract(d, p, b, q, ci ^ 1) ^ 1; - if (co != cp || !bngsame(c, d, p)) { - printf("Round %d, bng_sub(%s, %ld, %s, %ld, %d) -> %s, %d\n", - i, bng2string(a, p), p, bng2string(b, q), q, ci, - bng2string(c, p), co); - return 1; - } - /* shift left */ - amount = rand() % BNG_BITS_PER_DIGIT; - bng_assign(c, a, p); - do_ = bng_shift_left(c, p, amount); - BnnAssign(d, a, p); - dp = BnnShiftLeft(d, p, amount); - if (do_ != dp || !bngsame(c, d, p)) { - printf("Round %d, bng_shift_left(%s, %ld, %d) -> %s, %ld\n", - i, bng2string(a, p), p, amount, bng2string(c, p), do_); - return 1; - } - /* shift right */ - amount = rand() % BNG_BITS_PER_DIGIT; - bng_assign(c, a, p); - do_ = bng_shift_right(c, p, amount); - BnnAssign(d, a, p); - dp = BnnShiftRight(d, p, amount); - if (do_ != dp || !bngsame(c, d, p)) { - printf("Round %d, bng_shift_right(%s, %ld, %d) -> %s, %ld\n", - i, bng2string(a, p), p, amount, bng2string(c, p), do_); - return 1; - } - /* mult_add_digit */ - dg = randdigit(); - if (p >= q + 1) { - bng_assign(c, a, p); - co = bng_mult_add_digit(c, p, b, q, dg); - BnnAssign(d, a, p); - cp = BnnMultiplyDigit(d, p, b, q, dg); - if (co != cp || !bngsame(c, d, p)) { - printf("Round %d, bng_mult_add_digit(%s, %ld, %s, %ld, %ld) -> %s, %d\n", - i, bng2string(a, p), p, bng2string(b, q), q, dg, - bng2string(c, p), co); - return 1; - } - } - /* mult_sub_digit */ - dg = randdigit(); - bng_assign(c, a, p); - do_ = bng_mult_add_digit(c, p, b, q, dg); - bng_assign(d, c, p); - dp = bng_mult_sub_digit(d, p, b, q, dg); - if (do_ != dp || !bngsame(a, d, p)) { - printf("Round %d, bng_mult_sub_digit(%s, %ld, %s, %ld, %ld) -> %s, %ld\n", - i, bng2string(c, p), p, bng2string(b, q), q, dg, - bng2string(d, p), dp); - return 1; - } - /* mult_add */ - randbng(f, 2*p); - bng_assign(g, f, 2*p); - co = bng_mult_add(g, 2*p, a, p, b, q); - BnnAssign(h, f, 2*p); - cp = BnnMultiply(h, 2*p, a, p, b, q); - if (co != cp || !bngsame(g, h, 2*p)) { - printf("Round %d, bng_mult_add(%s, %ld, %s, %ld, %s, %ld) -> %s, %d\n", - i, bng2string(f, 2*p), 2*p, - bng2string(a, p), p, - bng2string(b, q), q, - bng2string(g, 2*p), co); - return 1; - } - /* square_add */ - randbng(f, 2*p); - bng_assign(g, f, 2*p); - co = bng_square_add(g, 2*p, b, q); - BnnAssign(h, f, 2*p); - cp = BnnAdd(h, 2*p, h, 2*p); - cp += BnnMultiply(h, 2*p, b, q, b, q); - if (co != cp || !bngsame(g, h, 2*p)) { - printf("Round %d, bng_square_add(%s, %ld, %s, %ld) -> %s, %d\n", - i, bng2string(f, 2*p), 2*p, - bng2string(b, q), q, - bng2string(g, 2*p), co); - return 1; - } - /* div_rem_digit */ - if (a[p - 1] < dg) { - do_ = bng_div_rem_digit(c, a, p, dg); - dp = BnnDivideDigit(d, a, p, dg); - if (do_ != dp || !bngsame(c, d, p-1)) { - printf("Round %d, bng_div_rem_digit(%s, %s, %ld, %lx) -> %lx\n", - i, bng2string(d, p-1), bng2string(a, p), p, dg, do_); - return 1; - } - } - /* div_rem */ - if (p > q && a[p - 1] < b[q - 1]) { - bng_assign(c, a, p); - bng_div_rem(c, p, b, q); - BnnAssign(d, a, p); - BnnDivide(d, p, b, q); - if (!bngsame(c, d, p)) { - printf("Round %d, bng_div_rem(%s, %ld, %s, %ld) -> %s, %s\n", - i, bng2string(a, p), p, bng2string(b, q), q, - bng2string(c + q, p - q), - bng2string(c, q)); - return 1; - } - } - return 0; -} - -int main(int argc, char ** argv) -{ - int niter = 100000; - int i, err; - - bng_init(); - if (argc >= 2) niter = atoi(argv[1]); -#if defined(ARCH_UINT64_TYPE) && !defined(ARCH_SIXTYFOUR) - printf("Testing single-digit operations\n"); - for (err = 0, i = 1; i < niter; i++) err += test_digit_ops(i); - printf("%d rounds performed, %d errors found\n", niter, err); -#endif - printf("Testing bignum operations\n"); - for (err = 0, i = 1; i < niter; i++) err += test_bng_ops(i); - printf("%d rounds performed, %d errors found\n", niter, err); - printf("Testing bignum operations with skewed PRNG\n"); - rand_skewed = 1; - for (err = 0, i = 1; i < niter; i++) err += test_bng_ops(i); - printf("%d rounds performed, %d errors found\n", niter, err); - return 0; -} diff --git a/testsuite/interactive/lib-gc/alloc.ml b/testsuite/interactive/lib-gc/alloc.ml index 4f607fb23f..ea103e42af 100644 --- a/testsuite/interactive/lib-gc/alloc.ml +++ b/testsuite/interactive/lib-gc/alloc.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: alloc.ml 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (* Random allocation test *) diff --git a/testsuite/lib/testing.ml b/testsuite/lib/testing.ml index 55da6f6d9c..2015aa1472 100644 --- a/testsuite/lib/testing.ml +++ b/testsuite/lib/testing.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: testing.ml,v 1.1 2006/01/12 12:52:14 weis Exp $ *) +(* $Id$ *) (* Testing auxilliaries. *) diff --git a/testsuite/lib/testing.mli b/testsuite/lib/testing.mli index c3880f08c9..6f47d2a3e0 100644 --- a/testsuite/lib/testing.mli +++ b/testsuite/lib/testing.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: testing.mli,v 1.1 2006/01/12 12:52:14 weis Exp $ *) +(* $Id$ *) (* Testing auxilliaries. *) diff --git a/testsuite/tests/asmcomp/alpha.S b/testsuite/tests/asmcomp/alpha.S index 66bf73f288..d8851065c3 100644 --- a/testsuite/tests/asmcomp/alpha.S +++ b/testsuite/tests/asmcomp/alpha.S @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: alpha.S 2638 1999-11-29 19:04:56Z doligez $ */ +/* $Id$ */ .globl call_gen_code .ent call_gen_code diff --git a/testsuite/tests/asmcomp/amd64.S b/testsuite/tests/asmcomp/amd64.S index bb2dc2b0b6..8df6e2d20d 100644 --- a/testsuite/tests/asmcomp/amd64.S +++ b/testsuite/tests/asmcomp/amd64.S @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: amd64.S 5634 2003-06-30 08:28:48Z xleroy $ */ +/* $Id$ */ #ifdef SYS_macosx #define ALIGN 4 diff --git a/testsuite/tests/asmcomp/arith.cmm b/testsuite/tests/asmcomp/arith.cmm index 77257c3cc2..f4efefdbef 100644 --- a/testsuite/tests/asmcomp/arith.cmm +++ b/testsuite/tests/asmcomp/arith.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: arith.cmm 3218 2000-06-29 11:45:24Z xleroy $ *) +(* $Id$ *) (* Regression test for arithmetic instructions *) diff --git a/testsuite/tests/asmcomp/arm.S b/testsuite/tests/asmcomp/arm.S index 0697095189..186d706146 100644 --- a/testsuite/tests/asmcomp/arm.S +++ b/testsuite/tests/asmcomp/arm.S @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: arm.S 9212 2009-03-31 09:46:08Z xleroy $ */ +/* $Id$ */ .text diff --git a/testsuite/tests/asmcomp/checkbound.cmm b/testsuite/tests/asmcomp/checkbound.cmm index a1277c95a2..995b74f8a3 100644 --- a/testsuite/tests/asmcomp/checkbound.cmm +++ b/testsuite/tests/asmcomp/checkbound.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: checkbound.cmm 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (function "checkbound2" (x: int y: int) (checkbound x y)) diff --git a/testsuite/tests/asmcomp/fib.cmm b/testsuite/tests/asmcomp/fib.cmm index e71a90273e..b7e64d3025 100644 --- a/testsuite/tests/asmcomp/fib.cmm +++ b/testsuite/tests/asmcomp/fib.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: fib.cmm 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (function "fib" (n: int) (if (< n 2) diff --git a/testsuite/tests/asmcomp/hppa.S b/testsuite/tests/asmcomp/hppa.S index 31fff9dfa6..2b1ab21c66 100644 --- a/testsuite/tests/asmcomp/hppa.S +++ b/testsuite/tests/asmcomp/hppa.S @@ -10,7 +10,7 @@ ;* * ;********************************************************************* -; $Id: hppa.S 2553 1999-11-17 18:59:06Z xleroy $ +; $Id$ ; Must be preprocessed by cpp #ifdef SYS_hpux diff --git a/testsuite/tests/asmcomp/i386.S b/testsuite/tests/asmcomp/i386.S index 079eca1793..f4b65e57ac 100644 --- a/testsuite/tests/asmcomp/i386.S +++ b/testsuite/tests/asmcomp/i386.S @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: i386.S 2553 1999-11-17 18:59:06Z xleroy $ */ +/* $Id$ */ /* Linux with ELF binaries does not prefix identifiers with _. Linux with a.out binaries, FreeBSD, and NextStep do. */ diff --git a/testsuite/tests/asmcomp/i386nt.asm b/testsuite/tests/asmcomp/i386nt.asm index 0ad5247565..66550eb8b2 100644 --- a/testsuite/tests/asmcomp/i386nt.asm +++ b/testsuite/tests/asmcomp/i386nt.asm @@ -10,7 +10,7 @@ ; ;********************************************************************* -; $Id: i386nt.asm 2553 1999-11-17 18:59:06Z xleroy $ +; $Id$ .386 .MODEL FLAT diff --git a/testsuite/tests/asmcomp/ia64.S b/testsuite/tests/asmcomp/ia64.S index 49de1b1947..51361690b8 100644 --- a/testsuite/tests/asmcomp/ia64.S +++ b/testsuite/tests/asmcomp/ia64.S @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: ia64.S 3573 2001-07-12 12:54:24Z doligez $ */ +/* $Id$ */ #define ST8OFF(a,b,d) st8 [a] = b, d #define LD8OFF(a,b,d) ld8 a = [b], d diff --git a/testsuite/tests/asmcomp/integr.cmm b/testsuite/tests/asmcomp/integr.cmm index 84a01d465f..481dd7587d 100644 --- a/testsuite/tests/asmcomp/integr.cmm +++ b/testsuite/tests/asmcomp/integr.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: integr.cmm 3218 2000-06-29 11:45:24Z xleroy $ *) +(* $Id$ *) (function "square" (x: float) ( *f x x)) diff --git a/testsuite/tests/asmcomp/lexcmm.mli b/testsuite/tests/asmcomp/lexcmm.mli index 9ebc36b56d..a28a57c520 100644 --- a/testsuite/tests/asmcomp/lexcmm.mli +++ b/testsuite/tests/asmcomp/lexcmm.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: lexcmm.mli 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) val token: Lexing.lexbuf -> Parsecmm.token diff --git a/testsuite/tests/asmcomp/lexcmm.mll b/testsuite/tests/asmcomp/lexcmm.mll index a9d17dd3d5..0e8432e1c8 100644 --- a/testsuite/tests/asmcomp/lexcmm.mll +++ b/testsuite/tests/asmcomp/lexcmm.mll @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: lexcmm.mll 3211 2000-06-25 19:54:50Z xleroy $ *) +(* $Id$ *) { open Parsecmm diff --git a/testsuite/tests/asmcomp/m68k.S b/testsuite/tests/asmcomp/m68k.S index 8905da1bb6..436e65e695 100644 --- a/testsuite/tests/asmcomp/m68k.S +++ b/testsuite/tests/asmcomp/m68k.S @@ -10,7 +10,7 @@ |* * |*********************************************************************** -| $Id: m68k.S 2553 1999-11-17 18:59:06Z xleroy $ +| $Id$ | call_gen_code is used with the following types: | unit -> int diff --git a/testsuite/tests/asmcomp/main.c b/testsuite/tests/asmcomp/main.c index 7f0e7174fd..e45c8c27c3 100644 --- a/testsuite/tests/asmcomp/main.c +++ b/testsuite/tests/asmcomp/main.c @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: main.c 9212 2009-03-31 09:46:08Z xleroy $ */ +/* $Id$ */ #include <stddef.h> #include <stdio.h> diff --git a/testsuite/tests/asmcomp/main.ml b/testsuite/tests/asmcomp/main.ml index 7017c35dce..d6207102ac 100644 --- a/testsuite/tests/asmcomp/main.ml +++ b/testsuite/tests/asmcomp/main.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: main.ml 3229 2000-07-07 14:09:23Z xleroy $ *) +(* $Id$ *) open Clflags diff --git a/testsuite/tests/asmcomp/mainarith.c b/testsuite/tests/asmcomp/mainarith.c index efa48ba0e4..95a923d8b9 100644 --- a/testsuite/tests/asmcomp/mainarith.c +++ b/testsuite/tests/asmcomp/mainarith.c @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: mainarith.c 9212 2009-03-31 09:46:08Z xleroy $ */ +/* $Id$ */ #include <stdio.h> #include <math.h> diff --git a/testsuite/tests/asmcomp/mips.s b/testsuite/tests/asmcomp/mips.s index d8e93565a3..9fe9f94b60 100644 --- a/testsuite/tests/asmcomp/mips.s +++ b/testsuite/tests/asmcomp/mips.s @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: mips.s 2638 1999-11-29 19:04:56Z doligez $ */ +/* $Id$ */ .globl call_gen_code .ent call_gen_code diff --git a/testsuite/tests/asmcomp/parsecmm.mly b/testsuite/tests/asmcomp/parsecmm.mly index 6ed2f8ff5e..79b278b052 100644 --- a/testsuite/tests/asmcomp/parsecmm.mly +++ b/testsuite/tests/asmcomp/parsecmm.mly @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: parsecmm.mly 9212 2009-03-31 09:46:08Z xleroy $ */ +/* $Id$ */ /* A simple parser for C-- */ diff --git a/testsuite/tests/asmcomp/parsecmmaux.ml b/testsuite/tests/asmcomp/parsecmmaux.ml index a87432e4e7..8c46888c6b 100644 --- a/testsuite/tests/asmcomp/parsecmmaux.ml +++ b/testsuite/tests/asmcomp/parsecmmaux.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: parsecmmaux.ml 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (* Auxiliary functions for parsing *) diff --git a/testsuite/tests/asmcomp/parsecmmaux.mli b/testsuite/tests/asmcomp/parsecmmaux.mli index 941ebcb48f..558996552c 100644 --- a/testsuite/tests/asmcomp/parsecmmaux.mli +++ b/testsuite/tests/asmcomp/parsecmmaux.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: parsecmmaux.mli 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (* Auxiliary functions for parsing *) diff --git a/testsuite/tests/asmcomp/power-aix.S b/testsuite/tests/asmcomp/power-aix.S index ea15308306..96ed2b92d1 100644 --- a/testsuite/tests/asmcomp/power-aix.S +++ b/testsuite/tests/asmcomp/power-aix.S @@ -10,7 +10,7 @@ #* * #********************************************************************* -# $Id: power-aix.S 3042 2000-04-05 18:30:22Z doligez $ +# $Id$ .csect .text[PR] diff --git a/testsuite/tests/asmcomp/power-elf.S b/testsuite/tests/asmcomp/power-elf.S index c7ddeef768..994a9fa7be 100644 --- a/testsuite/tests/asmcomp/power-elf.S +++ b/testsuite/tests/asmcomp/power-elf.S @@ -10,7 +10,7 @@ /* */ /*********************************************************************/ -/* $Id: power-elf.S 2553 1999-11-17 18:59:06Z xleroy $ */ +/* $Id$ */ /* Save and restore all callee-save registers */ /* GPR 14 at sp+16 ... GPR 31 at sp+84 diff --git a/testsuite/tests/asmcomp/power-rhapsody.S b/testsuite/tests/asmcomp/power-rhapsody.S index a9b8044b8d..b456105862 100644 --- a/testsuite/tests/asmcomp/power-rhapsody.S +++ b/testsuite/tests/asmcomp/power-rhapsody.S @@ -10,7 +10,7 @@ /* */ /*********************************************************************/ -/* $Id: power-rhapsody.S 2553 1999-11-17 18:59:06Z xleroy $ */ +/* $Id$ */ /* Save and restore all callee-save registers */ /* GPR 14 at sp+16 ... GPR 31 at sp+84 diff --git a/testsuite/tests/asmcomp/quicksort.cmm b/testsuite/tests/asmcomp/quicksort.cmm index 043e607f80..4029da8d15 100644 --- a/testsuite/tests/asmcomp/quicksort.cmm +++ b/testsuite/tests/asmcomp/quicksort.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: quicksort.cmm 3211 2000-06-25 19:54:50Z xleroy $ *) +(* $Id$ *) (function "quicksort" (lo: int hi: int a: addr) (if (< lo hi) diff --git a/testsuite/tests/asmcomp/quicksort2.cmm b/testsuite/tests/asmcomp/quicksort2.cmm index 4d80cd58a7..eae9809a79 100644 --- a/testsuite/tests/asmcomp/quicksort2.cmm +++ b/testsuite/tests/asmcomp/quicksort2.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: quicksort2.cmm 3218 2000-06-29 11:45:24Z xleroy $ *) +(* $Id$ *) (function "cmp" (i: int j: int) (- i j)) diff --git a/testsuite/tests/asmcomp/soli.cmm b/testsuite/tests/asmcomp/soli.cmm index 4716e4f215..47ce64c0b5 100644 --- a/testsuite/tests/asmcomp/soli.cmm +++ b/testsuite/tests/asmcomp/soli.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: soli.cmm 5634 2003-06-30 08:28:48Z xleroy $ *) +(* $Id$ *) ("d1": int 0 int 1 "d2": int 1 int 0 diff --git a/testsuite/tests/asmcomp/sparc.S b/testsuite/tests/asmcomp/sparc.S index 54d81c1cc3..9a829e1732 100644 --- a/testsuite/tests/asmcomp/sparc.S +++ b/testsuite/tests/asmcomp/sparc.S @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: sparc.S 2553 1999-11-17 18:59:06Z xleroy $ */ +/* $Id$ */ #ifndef SYS_solaris #define Call_gen_code _call_gen_code diff --git a/testsuite/tests/asmcomp/tagged-fib.cmm b/testsuite/tests/asmcomp/tagged-fib.cmm index 04869792c6..e5e45b0fbf 100644 --- a/testsuite/tests/asmcomp/tagged-fib.cmm +++ b/testsuite/tests/asmcomp/tagged-fib.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: tagged-fib.cmm 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (function "fib" (n: int) (if (< n 5) diff --git a/testsuite/tests/asmcomp/tagged-integr.cmm b/testsuite/tests/asmcomp/tagged-integr.cmm index 054c78d7f5..df46813eb9 100644 --- a/testsuite/tests/asmcomp/tagged-integr.cmm +++ b/testsuite/tests/asmcomp/tagged-integr.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: tagged-integr.cmm 3229 2000-07-07 14:09:23Z xleroy $ *) +(* $Id$ *) ("res_square": skip 8) ("h": skip 8) diff --git a/testsuite/tests/asmcomp/tagged-quicksort.cmm b/testsuite/tests/asmcomp/tagged-quicksort.cmm index 6b74753e8e..b519e5cef9 100644 --- a/testsuite/tests/asmcomp/tagged-quicksort.cmm +++ b/testsuite/tests/asmcomp/tagged-quicksort.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: tagged-quicksort.cmm 3218 2000-06-29 11:45:24Z xleroy $ *) +(* $Id$ *) (function "quick" (lo: int hi: int a: addr) (if (< lo hi) diff --git a/testsuite/tests/asmcomp/tagged-tak.cmm b/testsuite/tests/asmcomp/tagged-tak.cmm index 5e04b73943..fe9e6eb026 100644 --- a/testsuite/tests/asmcomp/tagged-tak.cmm +++ b/testsuite/tests/asmcomp/tagged-tak.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: tagged-tak.cmm 3229 2000-07-07 14:09:23Z xleroy $ *) +(* $Id$ *) (function "tak" (x:int y:int z:int) (if (> x y) diff --git a/testsuite/tests/asmcomp/tak.cmm b/testsuite/tests/asmcomp/tak.cmm index de236fc8b8..cd61ec89be 100644 --- a/testsuite/tests/asmcomp/tak.cmm +++ b/testsuite/tests/asmcomp/tak.cmm @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: tak.cmm 3211 2000-06-25 19:54:50Z xleroy $ *) +(* $Id$ *) (function "tak" (x:int y:int z:int) (if (> x y) diff --git a/testsuite/tests/basic-more/tformat.ml b/testsuite/tests/basic-more/tformat.ml index afad529708..d02cb2907a 100644 --- a/testsuite/tests/basic-more/tformat.ml +++ b/testsuite/tests/basic-more/tformat.ml @@ -10,7 +10,7 @@ (* *) (*************************************************************************) -(* $Id: tformat.ml 9270 2009-05-20 11:52:42Z doligez $ +(* $Id$ A testbed file for the module Format. diff --git a/testsuite/tests/basic-private/length.ml b/testsuite/tests/basic-private/length.ml index 945d05d144..318e98cb11 100644 --- a/testsuite/tests/basic-private/length.ml +++ b/testsuite/tests/basic-private/length.ml @@ -1,4 +1,4 @@ -(* $Id: length.ml 8482 2007-11-06 21:06:18Z weis $ +(* $Id$ A testbed file for private type abbreviation definitions. diff --git a/testsuite/tests/basic-private/length.mli b/testsuite/tests/basic-private/length.mli index 2215ec8f77..6cd7e12142 100644 --- a/testsuite/tests/basic-private/length.mli +++ b/testsuite/tests/basic-private/length.mli @@ -1,4 +1,4 @@ -(* $Id: length.mli 8482 2007-11-06 21:06:18Z weis $ +(* $Id$ A testbed file for private type abbreviation definitions. diff --git a/testsuite/tests/basic-private/tlength.ml b/testsuite/tests/basic-private/tlength.ml index a428e20757..f1fd91af94 100644 --- a/testsuite/tests/basic-private/tlength.ml +++ b/testsuite/tests/basic-private/tlength.ml @@ -1,4 +1,4 @@ -(* $Id: tlength.ml 8482 2007-11-06 21:06:18Z weis $ +(* $Id$ A testbed file for private type abbreviation definitions. diff --git a/testsuite/tests/basic/maps.ml b/testsuite/tests/basic/maps.ml index cb0e989b11..c23f2d8c1e 100644 --- a/testsuite/tests/basic/maps.ml +++ b/testsuite/tests/basic/maps.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: sets.ml 5183 2002-10-16 09:06:39Z weis $ *) +(* $Id$ *) module IntMap = Map.Make(struct type t = int let compare x y = x-y end) diff --git a/testsuite/tests/basic/sets.ml b/testsuite/tests/basic/sets.ml index 379b9e82c2..983145ee48 100644 --- a/testsuite/tests/basic/sets.ml +++ b/testsuite/tests/basic/sets.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: sets.ml 5183 2002-10-16 09:06:39Z weis $ *) +(* $Id$ *) module IntSet = Set.Make(struct type t = int let compare x y = x-y end) diff --git a/testsuite/tests/embedded/.svnignore b/testsuite/tests/embedded/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/embedded/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/gc-roots/.svnignore b/testsuite/tests/gc-roots/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/gc-roots/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/lib-bigarray/fftba.ml b/testsuite/tests/lib-bigarray/fftba.ml index a772876ec0..17465df5c6 100644 --- a/testsuite/tests/lib-bigarray/fftba.ml +++ b/testsuite/tests/lib-bigarray/fftba.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: fftba.ml 2938 2000-03-10 14:54:41Z xleroy $ *) +(* $Id$ *) open Bigarray diff --git a/testsuite/tests/lib-bigarray/pr5115.ml b/testsuite/tests/lib-bigarray/pr5115.ml new file mode 100644 index 0000000000..69cdca64d9 --- /dev/null +++ b/testsuite/tests/lib-bigarray/pr5115.ml @@ -0,0 +1,13 @@ +(* PR#5115 - multiple evaluation of bigarray expr *) + +open Bigarray + +let f y0 = + Printf.printf "***EXEC***\n%!"; + y0 + +let _ = + let y = Array1.of_array float64 fortran_layout [| 1. |] in + (f y).{1}; + (f y).{1} <- 3.14 + diff --git a/testsuite/tests/lib-bigarray/pr5115.reference b/testsuite/tests/lib-bigarray/pr5115.reference new file mode 100644 index 0000000000..63f719ac56 --- /dev/null +++ b/testsuite/tests/lib-bigarray/pr5115.reference @@ -0,0 +1,2 @@ +***EXEC*** +***EXEC*** diff --git a/testsuite/tests/lib-digest/.svnignore b/testsuite/tests/lib-digest/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/lib-digest/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/lib-dynlink-bytecode/.svnignore b/testsuite/tests/lib-dynlink-bytecode/.svnignore index 035b305b27..bb9294343e 100644 --- a/testsuite/tests/lib-dynlink-bytecode/.svnignore +++ b/testsuite/tests/lib-dynlink-bytecode/.svnignore @@ -1,8 +1,15 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program main static custom *.a *.so -*.result -*.cm* -*.o + +EOF diff --git a/testsuite/tests/lib-dynlink-native/.svnignore b/testsuite/tests/lib-dynlink-native/.svnignore index 1668ef6ad1..44c6a0689d 100644 --- a/testsuite/tests/lib-dynlink-native/.svnignore +++ b/testsuite/tests/lib-dynlink-native/.svnignore @@ -1,7 +1,15 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program mypack.pack.s result main *.so *.a -*.cm* -*.o + +EOF diff --git a/testsuite/tests/lib-scanf/tscanf.ml b/testsuite/tests/lib-scanf/tscanf.ml index cab4d7be4d..89b188b461 100644 --- a/testsuite/tests/lib-scanf/tscanf.ml +++ b/testsuite/tests/lib-scanf/tscanf.ml @@ -10,7 +10,7 @@ (* *) (*************************************************************************) -(* $Id: tscanf.ml 9306 2009-07-03 08:36:54Z weis $ +(* $Id$ A testbed file for the module Scanf. diff --git a/testsuite/tests/misc-kb/equations.ml b/testsuite/tests/misc-kb/equations.ml index 3feeada7c7..a7ea9a03b6 100644 --- a/testsuite/tests/misc-kb/equations.ml +++ b/testsuite/tests/misc-kb/equations.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: equations.ml 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (****************** Equation manipulations *************) diff --git a/testsuite/tests/misc-kb/equations.mli b/testsuite/tests/misc-kb/equations.mli index 665b739ed4..45d790260f 100644 --- a/testsuite/tests/misc-kb/equations.mli +++ b/testsuite/tests/misc-kb/equations.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: equations.mli 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) open Terms diff --git a/testsuite/tests/misc-kb/kb.ml b/testsuite/tests/misc-kb/kb.ml index 1e369bd1b5..590f4cd5d0 100644 --- a/testsuite/tests/misc-kb/kb.ml +++ b/testsuite/tests/misc-kb/kb.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: kb.ml 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) open Terms open Equations diff --git a/testsuite/tests/misc-kb/kb.mli b/testsuite/tests/misc-kb/kb.mli index bd02de4baa..59b60e4ea2 100644 --- a/testsuite/tests/misc-kb/kb.mli +++ b/testsuite/tests/misc-kb/kb.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: kb.mli 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) open Terms open Equations diff --git a/testsuite/tests/misc-kb/kbmain.ml b/testsuite/tests/misc-kb/kbmain.ml index 7d9e5baf19..0a5da2fb63 100644 --- a/testsuite/tests/misc-kb/kbmain.ml +++ b/testsuite/tests/misc-kb/kbmain.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: kbmain.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) open Terms open Equations diff --git a/testsuite/tests/misc-kb/orderings.ml b/testsuite/tests/misc-kb/orderings.ml index 2f3ee97352..11a776ba7c 100644 --- a/testsuite/tests/misc-kb/orderings.ml +++ b/testsuite/tests/misc-kb/orderings.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: orderings.ml 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (*********************** Recursive Path Ordering ****************************) diff --git a/testsuite/tests/misc-kb/orderings.mli b/testsuite/tests/misc-kb/orderings.mli index b68ceda3d0..d7abfd5645 100644 --- a/testsuite/tests/misc-kb/orderings.mli +++ b/testsuite/tests/misc-kb/orderings.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: orderings.mli 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) open Terms diff --git a/testsuite/tests/misc-kb/terms.ml b/testsuite/tests/misc-kb/terms.ml index 1b182f7561..dba7000646 100644 --- a/testsuite/tests/misc-kb/terms.ml +++ b/testsuite/tests/misc-kb/terms.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: terms.ml 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) (****************** Term manipulations *****************) diff --git a/testsuite/tests/misc-kb/terms.mli b/testsuite/tests/misc-kb/terms.mli index a71e139c63..7d22e9cb00 100644 --- a/testsuite/tests/misc-kb/terms.mli +++ b/testsuite/tests/misc-kb/terms.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: terms.mli 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) type term = Var of int diff --git a/testsuite/tests/misc-unsafe/fft.ml b/testsuite/tests/misc-unsafe/fft.ml index 6a5f4dffb9..0907cdee3c 100644 --- a/testsuite/tests/misc-unsafe/fft.ml +++ b/testsuite/tests/misc-unsafe/fft.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: fft.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) let pi = 3.14159265358979323846 diff --git a/testsuite/tests/misc-unsafe/quicksort.ml b/testsuite/tests/misc-unsafe/quicksort.ml index cfc68068e8..7449488d2d 100644 --- a/testsuite/tests/misc-unsafe/quicksort.ml +++ b/testsuite/tests/misc-unsafe/quicksort.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: quicksort.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) (* Good test for loops. Best compiled with -unsafe. *) diff --git a/testsuite/tests/misc-unsafe/soli.ml b/testsuite/tests/misc-unsafe/soli.ml index 45dfd9d1f8..aba79b15b8 100644 --- a/testsuite/tests/misc-unsafe/soli.ml +++ b/testsuite/tests/misc-unsafe/soli.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: soli.ml 2553 1999-11-17 18:59:06Z xleroy $ *) +(* $Id$ *) type peg = Out | Empty | Peg diff --git a/testsuite/tests/misc/bdd.ml b/testsuite/tests/misc/bdd.ml index 2926e947db..8452b8c645 100644 --- a/testsuite/tests/misc/bdd.ml +++ b/testsuite/tests/misc/bdd.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: bdd.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) (* Translated to Caml by Xavier Leroy *) (* Original code written in SML by ... *) diff --git a/testsuite/tests/misc/boyer.ml b/testsuite/tests/misc/boyer.ml index c2c7689618..c5e829ff2c 100644 --- a/testsuite/tests/misc/boyer.ml +++ b/testsuite/tests/misc/boyer.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: boyer.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) (* Manipulations over terms *) diff --git a/testsuite/tests/misc/fib.ml b/testsuite/tests/misc/fib.ml index c7e7505850..7fad4bfdbc 100644 --- a/testsuite/tests/misc/fib.ml +++ b/testsuite/tests/misc/fib.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: fib.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) let rec fib n = if n < 2 then 1 else fib(n-1) + fib(n-2) diff --git a/testsuite/tests/misc/hamming.ml b/testsuite/tests/misc/hamming.ml index 2b85bdde73..7216ddb0d9 100644 --- a/testsuite/tests/misc/hamming.ml +++ b/testsuite/tests/misc/hamming.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: hamming.ml 4303 2002-01-23 17:50:20Z doligez $ *) +(* $Id$ *) (* We cannot use bignums because we don't do custom runtimes, but int64 is a bit short, so we roll our own 37-digit numbers... diff --git a/testsuite/tests/misc/nucleic.ml b/testsuite/tests/misc/nucleic.ml index 665e3ceb5f..e3adfd6228 100644 --- a/testsuite/tests/misc/nucleic.ml +++ b/testsuite/tests/misc/nucleic.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: nucleic.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) (* Use floating-point arithmetic *) diff --git a/testsuite/tests/misc/sieve.ml b/testsuite/tests/misc/sieve.ml index 450c84f4ce..994a4087d3 100644 --- a/testsuite/tests/misc/sieve.ml +++ b/testsuite/tests/misc/sieve.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: sieve.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) (* Eratosthene's sieve *) diff --git a/testsuite/tests/misc/sorts.ml b/testsuite/tests/misc/sorts.ml index 9aea623970..7ae00beff9 100644 --- a/testsuite/tests/misc/sorts.ml +++ b/testsuite/tests/misc/sorts.ml @@ -4476,4 +4476,4 @@ let main () = if not !Sys.interactive then Printexc.catch main ();; -(* $Id: sorts.ml 4955 2002-06-26 14:55:37Z doligez $ *) +(* $Id$ *) diff --git a/testsuite/tests/misc/takc.ml b/testsuite/tests/misc/takc.ml index 99aa6cde1c..8e49f24849 100644 --- a/testsuite/tests/misc/takc.ml +++ b/testsuite/tests/misc/takc.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: takc.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) let rec tak x y z = if x > y then tak (tak (x-1) y z) (tak (y-1) z x) (tak (z-1) x y) diff --git a/testsuite/tests/misc/taku.ml b/testsuite/tests/misc/taku.ml index c3eae9f9ef..555fb01c86 100644 --- a/testsuite/tests/misc/taku.ml +++ b/testsuite/tests/misc/taku.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: taku.ml 7017 2005-08-12 09:22:04Z xleroy $ *) +(* $Id$ *) let rec tak (x, y, z) = if x > y then tak(tak (x-1, y, z), tak (y-1, z, x), tak (z-1, x, y)) diff --git a/testsuite/tests/misc/weaktest.ml b/testsuite/tests/misc/weaktest.ml index 5dd4e19d41..92ab5576d3 100644 --- a/testsuite/tests/misc/weaktest.ml +++ b/testsuite/tests/misc/weaktest.ml @@ -1,4 +1,4 @@ -(* $Id: weaktest.ml 8766 2008-01-11 11:55:36Z doligez $ *) +(* $Id$ *) let debug = false;; diff --git a/testsuite/tests/regression-camlp4-class-type-plus/Makefile b/testsuite/tests/regression-camlp4-class-type-plus/Makefile new file mode 100644 index 0000000000..95106ce622 --- /dev/null +++ b/testsuite/tests/regression-camlp4-class-type-plus/Makefile @@ -0,0 +1,5 @@ +ADD_COMPFLAGS = -pp 'camlp4o' +MAIN_MODULE = camlp4_class_type_plus_ok + +include ../../makefiles/Makefile.okbad +include ../../makefiles/Makefile.common diff --git a/testsuite/tests/regression-camlp4-class-type-plus/camlp4_class_type_plus_ok.ml b/testsuite/tests/regression-camlp4-class-type-plus/camlp4_class_type_plus_ok.ml new file mode 100644 index 0000000000..79ba26d82e --- /dev/null +++ b/testsuite/tests/regression-camlp4-class-type-plus/camlp4_class_type_plus_ok.ml @@ -0,0 +1,9 @@ +type t;; +type xdr_value;; + +class type [ 't ] engine = object +end;; + +module type T = sig +class unbound_async_call : t -> [xdr_value] engine;; +end;; diff --git a/testsuite/tests/regression-pr5080-notes/Makefile b/testsuite/tests/regression-pr5080-notes/Makefile new file mode 100644 index 0000000000..149c289be3 --- /dev/null +++ b/testsuite/tests/regression-pr5080-notes/Makefile @@ -0,0 +1,5 @@ +ADD_COMPFLAGS = -pp 'camlp4o pa_macro.cmo' +MAIN_MODULE = pr5080_notes_ok + +include ../../makefiles/Makefile.okbad +include ../../makefiles/Makefile.common diff --git a/testsuite/tests/regression-pr5080-notes/pr5080_notes_ok.ml b/testsuite/tests/regression-pr5080-notes/pr5080_notes_ok.ml new file mode 100644 index 0000000000..175bc8b743 --- /dev/null +++ b/testsuite/tests/regression-pr5080-notes/pr5080_notes_ok.ml @@ -0,0 +1,4 @@ +let marshal_int f = + match [] with + | _ :: `INT n :: _ -> f n + | _ -> failwith "marshal_int" diff --git a/testsuite/tests/tool-lexyacc/.svnignore b/testsuite/tests/tool-lexyacc/.svnignore index 9cc5affaee..3670600626 100644 --- a/testsuite/tests/tool-lexyacc/.svnignore +++ b/testsuite/tests/tool-lexyacc/.svnignore @@ -1,8 +1,13 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program scanner.ml grammar.mli grammar.ml -*.byte -*.native -*.result -*.cm* -*.o + +EOF diff --git a/testsuite/tests/tool-lexyacc/gram_aux.ml b/testsuite/tests/tool-lexyacc/gram_aux.ml index 6b23b5ece8..b84d8588a6 100644 --- a/testsuite/tests/tool-lexyacc/gram_aux.ml +++ b/testsuite/tests/tool-lexyacc/gram_aux.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: gram_aux.ml,v 1.4 1999/11/17 18:58:38 xleroy Exp $ *) +(* $Id$ *) (* Auxiliaries for the parser. *) diff --git a/testsuite/tests/tool-lexyacc/grammar.mly b/testsuite/tests/tool-lexyacc/grammar.mly index ee5a8d240f..8c1e4db943 100644 --- a/testsuite/tests/tool-lexyacc/grammar.mly +++ b/testsuite/tests/tool-lexyacc/grammar.mly @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: grammar.mly,v 1.4 1999/11/17 18:58:38 xleroy Exp $ */ +/* $Id$ */ /* The grammar for lexer definitions */ diff --git a/testsuite/tests/tool-lexyacc/input b/testsuite/tests/tool-lexyacc/input index 86114203ff..6793cb8745 100644 --- a/testsuite/tests/tool-lexyacc/input +++ b/testsuite/tests/tool-lexyacc/input @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: scanner.mll,v 1.5 1999/11/17 18:58:39 xleroy Exp $ *) +(* $Id$ *) (* The lexical analyzer for lexer definitions. *) diff --git a/testsuite/tests/tool-lexyacc/lexgen.ml b/testsuite/tests/tool-lexyacc/lexgen.ml index 05cb3c0333..bbd729b0f1 100644 --- a/testsuite/tests/tool-lexyacc/lexgen.ml +++ b/testsuite/tests/tool-lexyacc/lexgen.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: lexgen.ml,v 1.5 2000/12/28 13:06:39 weis Exp $ *) +(* $Id$ *) (* Compiling a lexer definition *) diff --git a/testsuite/tests/tool-lexyacc/main.ml b/testsuite/tests/tool-lexyacc/main.ml index 1dd130b932..d18a4886d2 100644 --- a/testsuite/tests/tool-lexyacc/main.ml +++ b/testsuite/tests/tool-lexyacc/main.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: main.ml,v 1.4 1999/11/17 18:58:39 xleroy Exp $ *) +(* $Id$ *) (* The lexer generator. Command-line parsing. *) diff --git a/testsuite/tests/tool-lexyacc/output.ml b/testsuite/tests/tool-lexyacc/output.ml index 6c56140895..09c66b6873 100644 --- a/testsuite/tests/tool-lexyacc/output.ml +++ b/testsuite/tests/tool-lexyacc/output.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: output.ml,v 1.5 2000/12/28 13:06:41 weis Exp $ *) +(* $Id$ *) (* Generating a DFA as a set of mutually recursive functions *) diff --git a/testsuite/tests/tool-lexyacc/scan_aux.ml b/testsuite/tests/tool-lexyacc/scan_aux.ml index 172d6f41ef..c449b13a59 100644 --- a/testsuite/tests/tool-lexyacc/scan_aux.ml +++ b/testsuite/tests/tool-lexyacc/scan_aux.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: scan_aux.ml,v 1.4 1999/11/17 18:58:39 xleroy Exp $ *) +(* $Id$ *) (* Auxiliaries for the lexical analyzer *) diff --git a/testsuite/tests/tool-lexyacc/scanner.mll b/testsuite/tests/tool-lexyacc/scanner.mll index c7d74b0185..131272fdd4 100644 --- a/testsuite/tests/tool-lexyacc/scanner.mll +++ b/testsuite/tests/tool-lexyacc/scanner.mll @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: scanner.mll,v 1.5 1999/11/17 18:58:39 xleroy Exp $ *) +(* $Id$ *) (* The lexical analyzer for lexer definitions. *) diff --git a/testsuite/tests/tool-lexyacc/syntax.ml b/testsuite/tests/tool-lexyacc/syntax.ml index 14d2987a18..ff704cd2f0 100644 --- a/testsuite/tests/tool-lexyacc/syntax.ml +++ b/testsuite/tests/tool-lexyacc/syntax.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: syntax.ml,v 1.4 1999/11/17 18:58:39 xleroy Exp $ *) +(* $Id$ *) (* The shallow abstract syntax *) diff --git a/testsuite/tests/tool-ocaml/lib.ml b/testsuite/tests/tool-ocaml/lib.ml index bf08b66ce4..557fc04ad2 100644 --- a/testsuite/tests/tool-ocaml/lib.ml +++ b/testsuite/tests/tool-ocaml/lib.ml @@ -1,4 +1,4 @@ -(* file $Id: lib.ml 6190 2004-04-06 09:11:45Z starynke $ *) +(* file $Id$ *) external raise : exn -> 'a = "%raise" @@ -43,4 +43,4 @@ external weak_get: 'a weak_t -> int -> 'a option = "caml_weak_get";; let x = 42;; -(* eof $Id: lib.ml 6190 2004-04-06 09:11:45Z starynke $ *) +(* eof $Id$ *) diff --git a/testsuite/tests/tool-ocaml/t301-object.ml b/testsuite/tests/tool-ocaml/t301-object.ml index 6cef9bedc5..5b053c0064 100644 --- a/testsuite/tests/tool-ocaml/t301-object.ml +++ b/testsuite/tests/tool-ocaml/t301-object.ml @@ -7,7 +7,7 @@ ocamlc -nostdlib -I ../../stdlib \ t301-object.ml -o t301-object.byte ***) -(* $Id: t301-object.ml 6363 2004-06-02 09:42:01Z basile $ *) +(* $Id$ *) class c = object (self) @@ -26,4 +26,4 @@ let (x,y,z) = f () in if y <> 2 then raise Not_found; if z <> 4 then raise Not_found;; -(**** eof $Id: t301-object.ml 6363 2004-06-02 09:42:01Z basile $ *) +(**** eof $Id$ *) diff --git a/testsuite/tests/tool-ocamldoc/odoc_test.ml b/testsuite/tests/tool-ocamldoc/odoc_test.ml index 8bd1127011..ba73fe52ed 100644 --- a/testsuite/tests/tool-ocamldoc/odoc_test.ml +++ b/testsuite/tests/tool-ocamldoc/odoc_test.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: odoc_test.ml 6127 2004-02-20 16:28:27Z guesdon $ *) +(* $Id$ *) (** Custom generator to perform test on ocamldoc. *) diff --git a/testsuite/tests/typing-fstclassmod/.svnignore b/testsuite/tests/typing-fstclassmod/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/typing-fstclassmod/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/typing-labels/.svnignore b/testsuite/tests/typing-labels/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/typing-labels/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/typing-labels/mixin.ml b/testsuite/tests/typing-labels/mixin.ml index 742bd59de0..83e7571f82 100644 --- a/testsuite/tests/typing-labels/mixin.ml +++ b/testsuite/tests/typing-labels/mixin.ml @@ -1,4 +1,4 @@ -(* $Id: mixin.ml 5929 2003-11-19 02:36:58Z garrigue $ *) +(* $Id$ *) open StdLabels open MoreLabels diff --git a/testsuite/tests/typing-labels/mixin2.ml b/testsuite/tests/typing-labels/mixin2.ml index edf20b6dd6..34d6bf50a9 100644 --- a/testsuite/tests/typing-labels/mixin2.ml +++ b/testsuite/tests/typing-labels/mixin2.ml @@ -1,4 +1,4 @@ -(* $Id: mixin2.ml 5929 2003-11-19 02:36:58Z garrigue $ *) +(* $Id$ *) (* Full fledge version, using objects to structure code *) diff --git a/testsuite/tests/typing-labels/mixin3.ml b/testsuite/tests/typing-labels/mixin3.ml index 5113eeb6f8..d8b037b7aa 100644 --- a/testsuite/tests/typing-labels/mixin3.ml +++ b/testsuite/tests/typing-labels/mixin3.ml @@ -1,4 +1,4 @@ -(* $Id: mixin3.ml 5929 2003-11-19 02:36:58Z garrigue $ *) +(* $Id$ *) (* Full fledge version, using objects to structure code *) diff --git a/testsuite/tests/typing-modules-bugs/Makefile b/testsuite/tests/typing-modules-bugs/Makefile new file mode 100644 index 0000000000..9375ddba6f --- /dev/null +++ b/testsuite/tests/typing-modules-bugs/Makefile @@ -0,0 +1,2 @@ +include ../../makefiles/Makefile.okbad +include ../../makefiles/Makefile.common diff --git a/testsuite/tests/typing-modules-bugs/pr5164_ok.ml b/testsuite/tests/typing-modules-bugs/pr5164_ok.ml new file mode 100644 index 0000000000..7de770ed6a --- /dev/null +++ b/testsuite/tests/typing-modules-bugs/pr5164_ok.ml @@ -0,0 +1,9 @@ +module type INCLUDING = sig + include module type of List + include module type of ListLabels +end + +module Including_typed: INCLUDING = struct + include List + include ListLabels +end diff --git a/testsuite/tests/typing-modules/Makefile b/testsuite/tests/typing-modules/Makefile new file mode 100644 index 0000000000..9add15574f --- /dev/null +++ b/testsuite/tests/typing-modules/Makefile @@ -0,0 +1,3 @@ +include ../../makefiles/Makefile.toplevel +include ../../makefiles/Makefile.common + diff --git a/testsuite/tests/typing-modules/Test.ml b/testsuite/tests/typing-modules/Test.ml new file mode 100644 index 0000000000..82ea468f9c --- /dev/null +++ b/testsuite/tests/typing-modules/Test.ml @@ -0,0 +1,5 @@ +module type S = sig type t and s = t end;; +module type S' = S with type t := int;; + +module type S = sig module rec M : sig end and N : sig end end;; +module type S' = S with module M := String;; diff --git a/testsuite/tests/typing-modules/Test.ml.reference b/testsuite/tests/typing-modules/Test.ml.reference new file mode 100644 index 0000000000..823cc1a840 --- /dev/null +++ b/testsuite/tests/typing-modules/Test.ml.reference @@ -0,0 +1,6 @@ + +# module type S = sig type t and s = t end +# module type S' = sig type s = int end +# module type S = sig module rec M : sig end and N : sig end end +# module type S' = sig module rec N : sig end end +# diff --git a/testsuite/tests/typing-objects-bugs/pr5156_ok.ml b/testsuite/tests/typing-objects-bugs/pr5156_ok.ml new file mode 100644 index 0000000000..ba8288da0a --- /dev/null +++ b/testsuite/tests/typing-objects-bugs/pr5156_ok.ml @@ -0,0 +1,10 @@ +class type t = object end;; +class ['a] o1 = object (self : #t as 'a) end;; +type 'a obj = ( < .. > as 'a);; +class type ['a] o2 = object ('a obj) end;; +class ['a] o3 = object (self : 'a obj) end;; +class ['a] o4 = object (self) method m = (self : 'a obj) end;; +(* +let o = object (self : 'a obj) end;; +let o = object (self) method m = (self : 'a obj) end;; +*) diff --git a/testsuite/tests/typing-objects/.svnignore b/testsuite/tests/typing-objects/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/typing-objects/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/typing-poly/.svnignore b/testsuite/tests/typing-poly/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/typing-poly/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/typing-poly/poly.ml b/testsuite/tests/typing-poly/poly.ml index 13c5363697..b5835b3daa 100644 --- a/testsuite/tests/typing-poly/poly.ml +++ b/testsuite/tests/typing-poly/poly.ml @@ -1,4 +1,4 @@ -(* $Id: poly.ml 9396 2009-10-26 07:11:36Z garrigue $ *) +(* $Id$ *) (* Polymorphic methods are now available in the main branch. Enjoy. diff --git a/testsuite/tests/typing-private/.svnignore b/testsuite/tests/typing-private/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/typing-private/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/testsuite/tests/typing-typeparam/.svnignore b/testsuite/tests/typing-typeparam/.svnignore new file mode 100755 index 0000000000..4394099ffb --- /dev/null +++ b/testsuite/tests/typing-typeparam/.svnignore @@ -0,0 +1,10 @@ +#!/bin/sh + +svn propset svn:ignore -F - . <<EOF + +*.result +*.byte +*.native +program + +EOF diff --git a/tools/Makefile.shared b/tools/Makefile.shared index 4e04cd88d4..7b93f863b0 100644 --- a/tools/Makefile.shared +++ b/tools/Makefile.shared @@ -76,12 +76,6 @@ install:: clean:: rm -f ocamlprof ocamlcp -install:: - cp ocamlmktop $(BINDIR)/jocamlmktop$(EXE) - -clean:: - rm -f ocamlmktop - # To help building mixed-mode libraries (Caml + C) ocamlmklib: myocamlbuild_config.cmo ocamlmklib.cmo @@ -121,7 +115,7 @@ clean:: # To make custom toplevels (see Makefile/Makefile.nt) install:: - cp ocamlmktop $(BINDIR)/jocamlmktop$(EXE) + cp ocamlmktop $(BINDIR)/jocamlmktop # no $(EXE) here, ocamlmktop is a script clean:: rm -f ocamlmktop diff --git a/tools/ocamldep.ml b/tools/ocamldep.ml index 828d77308c..77b9aae5c9 100644 --- a/tools/ocamldep.ml +++ b/tools/ocamldep.ml @@ -21,6 +21,8 @@ open Parsetree (* Print the dependencies *) let load_path = ref ([] : (string * string array) list) +let ml_synonyms = ref [".ml"] +let mli_synonyms = ref [".mli"] let native_only = ref false let force_slash = ref false let error_occurred = ref false @@ -49,6 +51,14 @@ let add_to_load_path dir = fprintf Format.err_formatter "@[Bad -I option: %s@]@." msg; error_occurred := true +let add_to_synonym_list synonyms suffix = + if (String.length suffix) > 1 && suffix.[0] = '.' then + synonyms := suffix :: !synonyms + else begin + fprintf Format.err_formatter "@[Bad suffix: '%s'@]@." suffix; + error_occurred := true + end + let find_file name = let uname = String.uncapitalize name in let rec find_in_array a pos = @@ -65,19 +75,25 @@ let find_file name = | None -> find_in_path rem in find_in_path !load_path +let rec find_file_in_list = function + [] -> raise Not_found +| x :: rem -> try find_file x with Not_found -> find_file_in_list rem + let find_dependency modname (byt_deps, opt_deps) = try - let filename = find_file (modname ^ ".mli") in - let basename = Filename.chop_suffix filename ".mli" in + let candidates = List.map ((^) modname) !mli_synonyms in + let filename = find_file_in_list candidates in + let basename = Filename.chop_extension filename in let optname = - if Sys.file_exists (basename ^ ".ml") + if List.exists (fun ext -> Sys.file_exists (basename ^ ext)) !ml_synonyms then basename ^ ".cmx" else basename ^ ".cmi" in ((basename ^ ".cmi") :: byt_deps, optname :: opt_deps) with Not_found -> try - let filename = find_file (modname ^ ".ml") in - let basename = Filename.chop_suffix filename ".ml" in + let candidates = List.map ((^) modname) !ml_synonyms in + let filename = find_file_in_list candidates in + let basename = Filename.chop_extension filename in let bytename = basename ^ (if !native_only then ".cmx" else ".cmo") in (bytename :: byt_deps, (basename ^ ".cmx") :: opt_deps) @@ -131,7 +147,12 @@ let print_dependencies target_file deps = let print_raw_dependencies source_file deps = print_filename source_file; print_string ":"; Depend.StringSet.iter - (fun dep -> print_char ' '; print_string dep) + (fun dep -> + if (String.length dep > 0) + && (match dep.[0] with 'A'..'Z' -> true | _ -> false) then begin + print_char ' '; + print_string dep + end) deps; print_char '\n' @@ -205,7 +226,7 @@ let ml_file_dependencies source_file = end else begin let basename = Filename.chop_extension source_file in let init_deps = - if Sys.file_exists (basename ^ ".mli") + if List.exists (fun ext -> Sys.file_exists (basename ^ ext)) !mli_synonyms then let cmi_name = basename ^ ".cmi" in ([cmi_name], [cmi_name]) else ([], []) in let (byt_deps, opt_deps) = @@ -266,9 +287,9 @@ let file_dependencies_as kind source_file = report_err x let file_dependencies source_file = - if Filename.check_suffix source_file ".ml" then + if List.exists (Filename.check_suffix source_file) !ml_synonyms then file_dependencies_as ML source_file - else if Filename.check_suffix source_file ".mli" then + else if List.exists (Filename.check_suffix source_file) !mli_synonyms then file_dependencies_as MLI source_file else () @@ -298,6 +319,10 @@ let _ = "<f> Process <f> as a .ml file"; "-intf", Arg.String (file_dependencies_as MLI), "<f> Process <f> as a .mli file"; + "-ml-synonym", Arg.String(add_to_synonym_list ml_synonyms), + "<e> Consider <e> as a synonym of the .ml extension"; + "-mli-synonym", Arg.String(add_to_synonym_list mli_synonyms), + "<e> Consider <e> as a synonym of the .mli extension"; "-modules", Arg.Set raw_dependencies, " Print module dependencies in raw form (not suitable for make)"; "-native", Arg.Set native_only, diff --git a/tools/ocamlmklib.mlp b/tools/ocamlmklib.mlp index c94f5cb334..5a600befaf 100644 --- a/tools/ocamlmklib.mlp +++ b/tools/ocamlmklib.mlp @@ -20,12 +20,11 @@ open Myocamlbuild_config let compiler_path name = if Sys.os_type = "Win32" then name else Filename.concat bindir name -let bytecode_objs = ref [] (* .cmo,.cma,.ml,.mli files to pass to ocamlc *) -and native_objs = ref [] (* .cmx,.cmxa,.ml,.mli files to pass to ocamlopt *) +let bytecode_objs = ref [] (* .cmo,.cma,.ml,.mli files to pass to jocamlc *) +and native_objs = ref [] (* .cmx,.cmxa,.ml,.mli files to pass to jocamlopt *) and c_objs = ref [] (* .o, .a, .obj, .lib, .dll files to pass to mksharedlib and ar *) -and caml_libs = ref [] (* -cclib to pass to ocamlc, ocamlopt *) -and caml_opts = ref [] (* -ccopt to pass to ocamlc, ocamlopt *) - +and caml_libs = ref [] (* -cclib to pass to jocamlc, jocamlopt *) +and caml_opts = ref [] (* -ccopt to pass to jocamlc, jocamlopt *) and dynlink = ref supports_shared_libraries and failsafe = ref false (* whether to fall back on static build only *) and c_libs = ref [] (* libs to pass to mksharedlib and jocamlc -cclib *) @@ -33,7 +32,6 @@ and c_opts = ref [] (* options to pass to mksharedlib and jocamlc -ccopt *) and ld_opts = ref [] (* options to pass only to the linker *) and jocamlc = ref (compiler_path "jocamlc") and jocamlopt = ref (compiler_path "jocamlopt") - and output = ref "a" (* Output name for Caml part of library *) and output_c = ref "" (* Output name for C part of library *) and rpath = ref [] (* rpath options *) @@ -98,9 +96,9 @@ let parse_arguments argv = (c_opts := s :: !c_opts; let l = chop_prefix s "-L" in if not (Filename.is_relative l) then rpath := l :: !rpath) - else if s = "-ocamlc" || s = "-jocamlc" then + else if s = "-jocamlc" || s = "-ocamlc" then jocamlc := next_arg () - else if s = "-ocamlopt" || s = "-jocamlopt" then + else if s = "-jocamlopt" || s = "-ocamlopt" then jocamlopt := next_arg () else if s = "-o" then output := next_arg() @@ -143,72 +141,37 @@ let parse_arguments argv = if !output_c = "" then output_c := !output let usage = "\ -<<<<<<< .courant -Usage: jocamlmklib [options] <.cmo|.cma|.cmx|.cmxa|.ml|.mli|.o|.a|.obj|.lib|.dll files> - -Options are: - -cclib <lib> C library passed to jocamlc -a or jocamlopt -a only - -ccopt <opt> C option passed to jocamlc -a or jocamlopt -a only - -custom disable dynamic loading - -dllpath <dir> Add <dir> to the run-time search path for DLLs - -F<dir> Specify a framework directory (MacOSX) - -framework <name> Use framework <name> (MacOSX) - -help Print this help message and exit - --help Same as -help - -h Same as -help - -I <dir> Add <dir> to the path searched for Caml object files - -jocamlc <cmd> Use <cmd> in place of \"jocamlc\" - -jocamlopt <cmd> Use <cmd> in place of \"jocamlopt\" - -failsafe fall back to static linking if DLL construction failed - -ldopt <opt> C option passed to the shared linker only - -linkall Build Caml archive with link-all behavior - -l<lib> Specify a dependent C library - -L<dir> Add <dir> to the path searched for C libraries - -ocamlc <cmd> Same as -jocamlc - -ocamlopt <cmd> Same as -jocamlopt - -o <name> Generated Caml library is named <name>.cma or <name>.cmxa - -oc <name> Generated C library is named dll<name>.so or lib<name>.a - -rpath <dir> Same as -dllpath <dir> - -R<dir> Same as -rpath - -verbose Print commands before executing them - -v same as -verbose - -version Print version and exit - -Wl,-rpath,<dir> Same as -dllpath <dir> - -Wl,-rpath -Wl,<dir> Same as -dllpath <dir> - -Wl,-R<dir> Same as -dllpath <dir> -======= -Usage: ocamlmklib [options] <.cmo|.cma|.cmx|.cmxa|.ml|.mli|.o|.a|.obj|.lib|.dll files>\n\ -Options are:\n\ - -cclib <lib> C library passed to ocamlc -a or ocamlopt -a only\n\ - -ccopt <opt> C option passed to ocamlc -a or ocamlopt -a only\n\ - -custom disable dynamic loading\n\ - -dllpath <dir> Add <dir> to the run-time search path for DLLs\n\ - -F<dir> Specify a framework directory (MacOSX)\n\ - -framework <name> Use framework <name> (MacOSX)\n\ - -help Print this help message and exit\n\ - --help Same as -help\n\ - -h Same as -help\n\ - -I <dir> Add <dir> to the path searched for Caml object files\n\ - -failsafe fall back to static linking if DLL construction failed\n\ - -ldopt <opt> C option passed to the shared linker only\n\ - -linkall Build Caml archive with link-all behavior\n\ - -l<lib> Specify a dependent C library\n\ - -L<dir> Add <dir> to the path searched for C libraries\n\ - -ocamlc <cmd> Use <cmd> in place of \"ocamlc\"\n\ - -ocamlopt <cmd> Use <cmd> in place of \"ocamlopt\"\n\ - -o <name> Generated Caml library is named <name>.cma or <name>.cmxa\n\ - -oc <name> Generated C library is named dll<name>.so or lib<name>.a\n\ - -rpath <dir> Same as -dllpath <dir>\n\ - -R<dir> Same as -rpath\n\ - -verbose Print commands before executing them\n\ - -v same as -verbose\n\ - -version Print version and exit\n\ - -vnum Print version number and exit\n\ - -Wl,-rpath,<dir> Same as -dllpath <dir>\n\ - -Wl,-rpath -Wl,<dir> Same as -dllpath <dir>\n\ - -Wl,-R<dir> Same as -dllpath <dir>\n\ ->>>>>>> .fusion-droit.r10497 -" +Usage: jocamlmklib [options] <.cmo|.cma|.cmx|.cmxa|.ml|.mli|.o|.a|.obj|.lib|.dll files>\ +\nOptions are:\ +\n -cclib <lib> C library passed to jocamlc -a or jocamlopt -a only\ +\n -ccopt <opt> C option passed to jocamlc -a or jocamlopt -a only\ +\n -custom disable dynamic loading\ +\n -dllpath <dir> Add <dir> to the run-time search path for DLLs\ +\n -F<dir> Specify a framework directory (MacOSX)\ +\n -framework <name> Use framework <name> (MacOSX)\ +\n -help Print this help message and exit\ +\n --help Same as -help\ +\n -h Same as -help\ +\n -I <dir> Add <dir> to the path searched for Caml object files\ +\n -failsafe fall back to static linking if DLL construction failed\ +\n -ldopt <opt> C option passed to the shared linker only\ +\n -linkall Build Caml archive with link-all behavior\ +\n -l<lib> Specify a dependent C library\ +\n -L<dir> Add <dir> to the path searched for C libraries\ +\n -[j]ocamlc <cmd> Use <cmd> in place of \"jocamlc\"\ +\n -[j]ocamlopt <cmd> Use <cmd> in place of \"jocamlopt\"\ +\n -o <name> Generated Caml library is named <name>.cma or <name>.cmxa\ +\n -oc <name> Generated C library is named dll<name>.so or lib<name>.a\ +\n -rpath <dir> Same as -dllpath <dir>\ +\n -R<dir> Same as -rpath\ +\n -verbose Print commands before executing them\ +\n -v same as -verbose\ +\n -version Print version and exit\ +\n -vnum Print version number and exit\ +\n -Wl,-rpath,<dir> Same as -dllpath <dir>\ +\n -Wl,-rpath -Wl,<dir> Same as -dllpath <dir>\ +\n -Wl,-R<dir> Same as -dllpath <dir>\ +\n" let command cmd = if !verbose then (print_string "+ "; print_string cmd; print_newline()); diff --git a/tools/remove_DEBUG b/tools/remove_DEBUG new file mode 100755 index 0000000000..78b11e6128 --- /dev/null +++ b/tools/remove_DEBUG @@ -0,0 +1,22 @@ +#!/bin/sh + +#(***********************************************************************) +#(* OCamldoc *) +#(* *) +#(* Damien Doligez, projet Moscova, INRIA Rocquencourt *) +#(* *) +#(* Copyright 2003 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. *) +#(* *) +#(***********************************************************************) + +# $Id$ + +# usage: remove_DEBUG <file> +# remove from <file> every line that contains the string "DEBUG", +# respecting the cpp # line annotation conventions + +echo "# 1 \"$1\"" +LC_ALL=C sed -e '/DEBUG/c\ +(* DEBUG statement removed *)' "$1" diff --git a/typing/ctype.ml b/typing/ctype.ml index 9281b2da9a..9b4fe18904 100644 --- a/typing/ctype.ml +++ b/typing/ctype.ml @@ -177,6 +177,11 @@ module TypePairs = (* Miscellaneous operations on object types *) (**********************************************) +(* Note: + We need to maintain some invariants: + * cty_self must be a Tobject + * ... +*) (**** Object field manipulation. ****) @@ -879,6 +884,20 @@ let instance_parameterized_type_2 sch_args sch_lst sch = cleanup_types (); (ty_args, ty_lst, ty) +let instance_declaration decl = + let decl = + {decl with type_params = List.map copy decl.type_params; + type_manifest = may_map copy decl.type_manifest; + type_kind = match decl.type_kind with + | Type_abstract -> Type_abstract + | Type_variant cl -> + Type_variant (List.map (fun (s,tl) -> (s, List.map copy tl)) cl) + | Type_record (fl, rr) -> + Type_record (List.map (fun (s,m,ty) -> (s, m, copy ty)) fl, rr)} + in + cleanup_types (); + decl + let instance_class params cty = let rec copy_class_type = function diff --git a/typing/ctype.mli b/typing/ctype.mli index 5e5bd83824..84c7175f07 100644 --- a/typing/ctype.mli +++ b/typing/ctype.mli @@ -118,6 +118,7 @@ val instance_parameterized_type: val instance_parameterized_type_2: type_expr list -> type_expr list -> type_expr -> type_expr list * type_expr list * type_expr +val instance_declaration: type_declaration -> type_declaration val instance_class: type_expr list -> class_type -> type_expr list * class_type val instance_poly: diff --git a/typing/env.ml b/typing/env.ml index 5ee71f92a7..96fa499276 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -896,4 +896,4 @@ let report_error ppf = function | Need_recursive_types(import, export) -> fprintf ppf "@[<hov>Unit %s imports from %s, which uses recursive types.@ %s@]" - import export "The compilation flag -rectypes is required" + export import "The compilation flag -rectypes is required" diff --git a/typing/oprint.ml b/typing/oprint.ml index a57f1c7972..730c6d6f30 100644 --- a/typing/oprint.ml +++ b/typing/oprint.ml @@ -32,7 +32,7 @@ let parenthesized_ident name = (List.mem name ["or"; "mod"; "land"; "lor"; "lxor"; "lsl"; "lsr"; "asr"]) || (match name.[0] with - 'a'..'z' | '\223'..'\246' | '\248'..'\255' | '_' -> + 'a'..'z' | 'A'..'Z' | '\223'..'\246' | '\248'..'\255' | '_' -> false | _ -> true) diff --git a/typing/printtyp.ml b/typing/printtyp.ml index 29f2db6039..7a1a9c7215 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -746,7 +746,7 @@ let tree_of_class_declaration id cl rs = reset (); List.iter add_alias params; prepare_class_type params cl.cty_type; - let sty = self_type cl.cty_type in + let sty = Ctype.self_type cl.cty_type in List.iter mark_loops params; List.iter check_name_of_type (List.map proxy params); @@ -768,7 +768,7 @@ let tree_of_cltype_declaration id cl rs = reset (); List.iter add_alias params; prepare_class_type params cl.clty_type; - let sty = self_type cl.clty_type in + let sty = Ctype.self_type cl.clty_type in List.iter mark_loops params; List.iter check_name_of_type (List.map proxy params); diff --git a/typing/typeclass.ml b/typing/typeclass.ml index de093cfc53..c81e8fe8d5 100644 --- a/typing/typeclass.ml +++ b/typing/typeclass.ml @@ -360,7 +360,7 @@ let rec class_type_field env self_type meths (val_sig, concr_meths, inher) = and class_signature env sty sign = let meths = ref Meths.empty in - let self_type = transl_simple_type env false sty in + let self_type = Ctype.expand_head env (transl_simple_type env false sty) in (* Check that the binder is a correct type, and introduce a dummy method preventing self type from being closed. *) @@ -719,7 +719,9 @@ and class_structure cl_num final val_env met_env loc (spat, str) = let added = List.filter (fun x -> List.mem x l1) l2 in if added <> [] then Location.prerr_warning loc (Warnings.Implicit_public_methods added); - {cl_field = fields; cl_meths = meths}, sign + {cl_field = fields; cl_meths = meths}, + if final then sign else + {sign with cty_self = Ctype.expand_head val_env public_self} and class_expr cl_num val_env met_env scl = match scl.pcl_desc with diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 65e025bb96..60672d956d 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -783,7 +783,7 @@ let transl_value_decl env valdecl = (* Translate a "with" constraint -- much simplified version of transl_type_decl. *) -let transl_with_constraint env id row_path sdecl = +let transl_with_constraint env id row_path orig_decl sdecl = reset_type_variables(); Ctype.begin_def(); let params = @@ -791,6 +791,10 @@ let transl_with_constraint env id row_path sdecl = List.map (enter_type_variable true sdecl.ptype_loc) sdecl.ptype_params with Already_bound -> raise(Error(sdecl.ptype_loc, Repeated_parameter)) in + let orig_decl = Ctype.instance_declaration orig_decl in + let arity_ok = List.length params = orig_decl.type_arity in + if arity_ok then + List.iter2 (Ctype.unify_var env) params orig_decl.type_params; List.iter (function (ty, ty', loc) -> try @@ -803,7 +807,7 @@ let transl_with_constraint env id row_path sdecl = let decl = { type_params = params; type_arity = List.length params; - type_kind = Type_abstract; + type_kind = if arity_ok then orig_decl.type_kind else Type_abstract; type_private = sdecl.ptype_private; type_manifest = begin match sdecl.ptype_manifest with diff --git a/typing/typedecl.mli b/typing/typedecl.mli index deb40eb5b3..03d87f8717 100644 --- a/typing/typedecl.mli +++ b/typing/typedecl.mli @@ -35,7 +35,7 @@ val transl_value_decl: Env.t -> Parsetree.value_description -> value_description val transl_with_constraint: - Env.t -> Ident.t -> Path.t option -> + Env.t -> Ident.t -> Path.t option -> type_declaration -> Parsetree.type_declaration -> type_declaration val abstract_type_decl: int -> type_declaration diff --git a/typing/typemod.ml b/typing/typemod.ml index 93fce14e8a..7467a1ebb2 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -93,6 +93,16 @@ let rec make_params n = function let wrap_param s = {ptyp_desc=Ptyp_var s; ptyp_loc=Location.none} +let make_next_first rs rem = + if rs = Trec_first then + match rem with + Tsig_type (id, decl, Trec_next) :: rem -> + Tsig_type (id, decl, Trec_first) :: rem + | Tsig_module (id, mty, Trec_next) :: rem -> + Tsig_module (id, mty, Trec_first) :: rem + | _ -> rem + else rem + let merge_constraint initial_env loc sg lid constr = let real_id = ref None in let rec merge env sg namelist row_id = @@ -115,7 +125,7 @@ let merge_constraint initial_env loc sg lid constr = and id_row = Ident.create (s^"#row") in let initial_env = Env.add_type id_row decl_row initial_env in let newdecl = Typedecl.transl_with_constraint - initial_env id (Some(Pident id_row)) sdecl in + initial_env id (Some(Pident id_row)) decl sdecl in check_type_decl env id row_id newdecl decl rs rem; let decl_row = {decl_row with type_params = newdecl.type_params} in let rs' = if rs = Trec_first then Trec_not else rs in @@ -123,7 +133,7 @@ let merge_constraint initial_env loc sg lid constr = | (Tsig_type(id, decl, rs) :: rem, [s], Pwith_type sdecl) when Ident.name id = s -> let newdecl = - Typedecl.transl_with_constraint initial_env id None sdecl in + Typedecl.transl_with_constraint initial_env id None decl sdecl in check_type_decl env id row_id newdecl decl rs rem; Tsig_type(id, newdecl, rs) :: rem | (Tsig_type(id, decl, rs) :: rem, [s], (Pwith_type _ | Pwith_typesubst _)) @@ -133,10 +143,10 @@ let merge_constraint initial_env loc sg lid constr = when Ident.name id = s -> (* Check as for a normal with constraint, but discard definition *) let newdecl = - Typedecl.transl_with_constraint initial_env id None sdecl in + Typedecl.transl_with_constraint initial_env id None decl sdecl in check_type_decl env id row_id newdecl decl rs rem; real_id := Some id; - rem + make_next_first rs rem | (Tsig_module(id, mty, rs) :: rem, [s], Pwith_module lid) when Ident.name id = s -> let (path, mty') = Typetexp.find_module initial_env loc lid in @@ -149,7 +159,7 @@ let merge_constraint initial_env loc sg lid constr = let newmty = Mtype.strengthen env mty' path in ignore(Includemod.modtypes env newmty mty); real_id := Some id; - rem + make_next_first rs rem | (Tsig_module(id, mty, rs) :: rem, s :: namelist, _) when Ident.name id = s -> let newsg = merge env (extract_sig env loc mty) namelist None in @@ -318,7 +328,8 @@ let check_sig_item type_names module_names modtype_names loc = function let rec remove_values ids = function [] -> [] - | Tsig_value (id, _) :: rem when List.exists (Ident.equal id) ids -> rem + | Tsig_value (id, _) :: rem + when List.exists (Ident.equal id) ids -> remove_values ids rem | f :: rem -> f :: remove_values ids rem let rec get_values = function diff --git a/typing/unused_var.ml b/typing/unused_var.ml index fc8f8e4fae..897f430c98 100644 --- a/typing/unused_var.ml +++ b/typing/unused_var.ml @@ -133,7 +133,7 @@ and structure_item ppf tbl s = | Pstr_open _ -> () | Pstr_class cdl -> List.iter (class_declaration ppf tbl) cdl; | Pstr_class_type _ -> () - | Pstr_include _ -> () + | Pstr_include me -> module_expr ppf tbl me; (*>JOCAML*) | Pstr_exn_global _ -> () | Pstr_def d -> join_defs ppf tbl d None |