summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuc Maranget <luc.maranget@inria.fr>2010-01-25 14:52:00 +0000
committerLuc Maranget <luc.maranget@inria.fr>2010-01-25 14:52:00 +0000
commite7ada9b93a02d39cd62f6fd7d9f629429ef51273 (patch)
tree0d5771c12e6ab43afb23e5976c1ab35686a66b30
parent924e832b687e914f4173bb52ec39806b1b6192a8 (diff)
downloadocaml-jo311.tar.gz
Preparing relase 3.11.2jo311
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/jo311@9590 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--.depend12
-rw-r--r--Changes51
-rw-r--r--INSTALL6
-rw-r--r--INSTALL_OCAML15
-rw-r--r--Makefile9
-rw-r--r--VERSION2
-rw-r--r--_tags2
-rw-r--r--asmcomp/alpha/emit.mlp4
-rw-r--r--asmcomp/amd64/emit.mlp48
-rw-r--r--asmcomp/amd64/proc.ml3
-rw-r--r--asmcomp/arm/emit.mlp3
-rw-r--r--asmcomp/asmlink.ml1
-rw-r--r--asmcomp/emitaux.ml21
-rw-r--r--asmcomp/emitaux.mli3
-rw-r--r--asmcomp/hppa/emit.mlp8
-rw-r--r--asmcomp/i386/emit.mlp11
-rw-r--r--asmcomp/ia64/emit.mlp4
-rw-r--r--asmcomp/mips/emit.mlp5
-rw-r--r--asmcomp/power/emit.mlp15
-rw-r--r--asmcomp/sparc/emit.mlp7
-rw-r--r--asmrun/.depend1386
-rw-r--r--asmrun/ia64.S13
-rw-r--r--boot/.cvsignore1
-rwxr-xr-xboot/ocamlcbin1114038 -> 1116009 bytes
-rwxr-xr-xboot/ocamldepbin294174 -> 295014 bytes
-rwxr-xr-xboot/ocamllexbin165484 -> 165790 bytes
-rwxr-xr-xbuild/boot-c-parts-windows.sh4
-rwxr-xr-xbuild/install.sh3
-rwxr-xr-xbuild/mkmyocamlbuild_config.sh1
-rw-r--r--bytecomp/bytelink.ml84
-rw-r--r--bytecomp/symtable.ml14
-rw-r--r--bytecomp/typeopt.ml40
-rw-r--r--byterun/.cvsignore2
-rw-r--r--byterun/.depend18
-rw-r--r--byterun/backtrace.c7
-rw-r--r--byterun/backtrace.h1
-rw-r--r--byterun/gc_ctrl.c4
-rw-r--r--byterun/interp.c3
-rw-r--r--byterun/major_gc.c2
-rw-r--r--byterun/obj.c4
-rw-r--r--byterun/startup.c32
-rw-r--r--config/Makefile-templ10
-rw-r--r--config/Makefile.mingw4
-rw-r--r--config/Makefile.msvc10
-rw-r--r--config/Makefile.msvc644
-rwxr-xr-xconfigure18
-rw-r--r--emacs/caml-types.el8
-rw-r--r--lex/Makefile4
-rw-r--r--lex/Makefile.nt2
-rw-r--r--ocamldoc/.cvsignore1
-rw-r--r--ocamldoc/odoc.ml4
-rw-r--r--ocamldoc/odoc_ast.ml4
-rwxr-xr-xocamldoc/remove_DEBUG3
-rw-r--r--otherlibs/dynlink/.cvsignore1
-rw-r--r--otherlibs/graph/.cvsignore2
-rw-r--r--otherlibs/systhreads/.cvsignore2
-rw-r--r--otherlibs/threads/.cvsignore2
-rw-r--r--otherlibs/threads/.depend45
-rw-r--r--otherlibs/unix/.cvsignore2
-rw-r--r--otherlibs/unix/socketaddr.c6
-rw-r--r--parsing/parser.mly6
-rw-r--r--stdlib/.cvsignore1
-rw-r--r--stdlib/.depend36
-rw-r--r--stdlib/buffer.ml8
-rw-r--r--stdlib/buffer.mli9
-rw-r--r--stdlib/filename.ml12
-rw-r--r--stdlib/filename.mli9
-rw-r--r--stdlib/format.mli128
-rw-r--r--stdlib/obj.ml3
-rw-r--r--stdlib/obj.mli5
-rw-r--r--stdlib/pervasives.ml5
-rw-r--r--stdlib/pervasives.mli14
-rw-r--r--stdlib/printexc.ml17
-rw-r--r--stdlib/printexc.mli10
-rw-r--r--stdlib/printf.ml52
-rw-r--r--stdlib/printf.mli1
-rw-r--r--stdlib/scanf.ml268
-rw-r--r--stdlib/scanf.mli24
-rw-r--r--stdlib/stdlib.mllib67
-rw-r--r--tools/.cvsignore1
-rw-r--r--tools/.depend6
-rw-r--r--tools/ocamlmklib.mlp33
-rw-r--r--typing/ctype.ml69
-rw-r--r--typing/includecore.ml3
-rw-r--r--typing/typecore.ml2
-rw-r--r--typing/typedecl.ml13
-rw-r--r--typing/typetexp.ml13
-rw-r--r--typing/typetexp.mli1
88 files changed, 1337 insertions, 1460 deletions
diff --git a/.depend b/.depend
index 6880258967..aebe105c12 100644
--- a/.depend
+++ b/.depend
@@ -336,8 +336,8 @@ bytecomp/transljoin.cmi: typing/typedtree.cmi typing/primitive.cmi \
bytecomp/translmod.cmi: typing/typedtree.cmi typing/primitive.cmi \
parsing/location.cmi bytecomp/lambda.cmi typing/ident.cmi
bytecomp/translobj.cmi: bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi
-bytecomp/typeopt.cmi: typing/typedtree.cmi typing/path.cmi \
- bytecomp/lambda.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 \
bytecomp/instruct.cmi typing/ident.cmi utils/config.cmi \
@@ -686,11 +686,11 @@ asmcomp/printmach.cmx: asmcomp/reg.cmx asmcomp/proc.cmx asmcomp/printcmm.cmx \
asmcomp/mach.cmx asmcomp/debuginfo.cmx asmcomp/cmm.cmx asmcomp/arch.cmx \
asmcomp/printmach.cmi
asmcomp/proc.cmo: asmcomp/reg.cmi utils/misc.cmi asmcomp/mach.cmi \
- utils/config.cmi asmcomp/cmm.cmi utils/clflags.cmi utils/ccomp.cmi \
- asmcomp/arch.cmo asmcomp/proc.cmi
+ utils/config.cmi asmcomp/cmm.cmi utils/ccomp.cmi asmcomp/arch.cmo \
+ asmcomp/proc.cmi
asmcomp/proc.cmx: asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
- utils/config.cmx asmcomp/cmm.cmx utils/clflags.cmx utils/ccomp.cmx \
- asmcomp/arch.cmx asmcomp/proc.cmi
+ utils/config.cmx asmcomp/cmm.cmx utils/ccomp.cmx asmcomp/arch.cmx \
+ asmcomp/proc.cmi
asmcomp/reg.cmo: asmcomp/cmm.cmi asmcomp/reg.cmi
asmcomp/reg.cmx: asmcomp/cmm.cmx asmcomp/reg.cmi
asmcomp/reloadgen.cmo: asmcomp/reg.cmi utils/misc.cmi asmcomp/mach.cmi \
diff --git a/Changes b/Changes
index d23a01c8f1..3da9930378 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,52 @@
+Objective Caml 3.11.2:
+----------------------
+
+Bug fixes:
+- PR#4151: better documentation for min and max w.r.t. NaN
+- PR#4421: ocamlbuild uses wrong compiler for C files
+- PR#4710, PR#4720: ocamlbuild does not use properly configuration information
+- PR#4750: under some Windows installations, high start-up times for Unix lib
+- PR#4777: problem with scanf and CRLF
+- PR#4783: ocamlmklib problem under Windows
+- PR#4810: BSD problem with socket addresses, e.g. in Unix.getnameinfo
+- PR#4813: issue with parsing of float literals by the GNU assembler
+- PR#4816: problem with modules and private types
+- PR#4818: missed opportunity for type-based optimization of bigarray accesses
+- PR#4821: check for duplicate method names in classes
+- PR#4823: build problem on Mac OS X
+- PR#4836: spurious errors raised by Unix.single_write under Windows
+- PR#4841, PR#4860, PR#4930: problem with ocamlopt -output-obj under Mac OS X
+- PR#4847: C compiler error with ocamlc -output-obj under Win64
+- PR#4856: ocamlbuild uses ocamlrun to execute a native plugin
+- PR#4867, PR#4760: ocamlopt -shared fails on Mac OS X 64bit
+- PR#4873: ocamlbuild ignores "thread" tag when building a custom toplevel
+- PR#4890: ocamlbuild tries to use native plugin on bytecode-only arch
+- PR#4896: ocamlbuild should always pass -I to tools for external libraries
+- PR#4900: small bug triggering automatic compaction even if max_overhead = 1M
+- PR#4902: bug in %.0F printf format
+- PR#4910: problem with format concatenation
+- PR#4922: ocamlbuild recompiles too many files
+- PR#4923: missing \xff for scanf %S
+- PR#4933: functors not handling private types correctly
+- PR#4940: problem with end-of-line in DOS text mode, tentative fix
+- PR#4953: problem compiling bytecode interpreter on ARM in Thumb mode.
+- PR#4955: compiler crash when typing recursive type expression with constraint
+- Module Printf: the simple conversion %F (without width indication) was not
+ treated properly.
+- Makefile: problem with cygwin, flexdll, and symbolic links
+- Various build problems with ocamlbuild under Windows with msvc
+
+Feature wishes:
+- PR#9: (tentative implementation) make ocamldebug use #linenum annotations
+- PR#123, PR#4477: custom exception printers
+- PR#3456: Obj.double_field and Obj.set_double_field functions
+- PR#4003: destination directory can be given to Filename.[open_]temp_file
+- PR#4647: Buffer.blit function
+- PR#4685: access to Filename.dir_sep
+- PR#4703: support for debugging embedded applications
+- PR#4723: "clear_rules" function to empty the set of ocamlbuild rules
+- PR#4921: configure option to help cross-compilers
+
Objective Caml 3.11.1:
----------------------
@@ -53,6 +102,7 @@ Other changes:
(contributed by Jonathan Davies, Citrix).
- Support for 64-bit mode in Solaris/x86 (PR#4670).
+
Objective Caml 3.11.0:
----------------------
@@ -200,6 +250,7 @@ Bug fixes:
- Small bugs in the make-package-macosx script
- Bug in typing of polymorphic variants (reported on caml-list)
+
Objective Caml 3.10.1:
----------------------
diff --git a/INSTALL b/INSTALL
index 35379ced47..28e4e9bd1c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -56,9 +56,9 @@ native-code compiler. From the top directory, do:
make opt
-5- (Optional) If you want to compile fast versions of the Objective
-Caml compilers, you can compile them with the native-code compiler
-(they are compiled to bytecode by default). Just do:
+5- Compile fast versions of the Objective Caml compilers, by
+compiling them with the native-code compiler (you have only compiled
+them to bytecode so far). Just do:
make opt.opt
diff --git a/INSTALL_OCAML b/INSTALL_OCAML
index cdb3436fbd..ad24f4afe2 100644
--- a/INSTALL_OCAML
+++ b/INSTALL_OCAML
@@ -109,7 +109,7 @@ The "configure" script accepts the following options:
-as <assembler and options> (default: determined automatically)
The assembler to use for assembling ocamlopt-generated code.
--aspp <assembler and options> (default: determined automatically>
+-aspp <assembler and options> (default: determined automatically)
The assembler to use for assembling the parts of the
run-time system manually written in assembly language.
This assembler must preprocess its input with the C preprocessor.
@@ -126,10 +126,13 @@ Examples:
Installation in /usr, man pages in section "l":
./configure -bindir /usr/bin -libdir /usr/lib/ocaml -mandir /usr/man/manl
- On a MacOSX/Intel Core 2 or MacOSX/PowerPC host, to build a 64-bit version
- of OCaml:
+ On a MacOSX 10.5/Intel Core 2 or MacOSX 10.5/PowerPC host,
+ to build a 64-bit version of OCaml:
./configure -cc "gcc -m64"
+ On a MacOSX 10.6/Intel Core 2, to build a 32-bit version of OCaml:
+ ./configure -cc "gcc -m32" -as "as -arch i386" -aspp "gcc -m32 -c"
+
On a Linux x86/64 bits host, to build a 32-bit version of OCaml:
./configure -cc "gcc -m32" -as "as --32" -aspp "gcc -m32 -c"
@@ -188,9 +191,9 @@ or:
make opt > log.opt 2>&1 # in sh
make opt >& log.opt # in csh
-5- (Optional) If you want to compile fast versions of the Objective
-Caml compilers, you can compile them with the native-code compiler
-(they are compiled to bytecode by default). Just do:
+5- Compile fast versions of the Objective Caml compilers, by
+compiling them with the native-code compiler (you have only compiled
+them to bytecode so far). Just do:
make opt.opt
diff --git a/Makefile b/Makefile
index d524bd5774..3d7c9fcb53 100644
--- a/Makefile
+++ b/Makefile
@@ -584,10 +584,11 @@ alldepend::
# The runtime system for the native-code compiler
-runtimeopt:
+runtimeopt: makeruntimeopt
+ cp asmrun/libasmrun.a stdlib/libasmrun.a
+
+makeruntimeopt:
cd asmrun; $(MAKE) all
- if test -f stdlib/libasmrun.a; then :; else \
- ln -s ../asmrun/libasmrun.a stdlib/libasmrun.a; fi
clean::
cd asmrun; $(MAKE) clean
@@ -778,6 +779,6 @@ distclean:
.PHONY: ocamldoc.opt ocamllex ocamllex.opt ocamltools ocamltools.opt
.PHONY: ocamlyacc opt-core opt opt.opt otherlibraries
.PHONY: otherlibrariesopt package-macosx promote promote-cross
-.PHONY: restore runtime runtimeopt world world.opt
+.PHONY: restore runtime runtimeopt makeruntimeopt world world.opt
include .depend
diff --git a/VERSION b/VERSION
index 2024a5f2ea..773d352e7c 100644
--- a/VERSION
+++ b/VERSION
@@ -1,4 +1,4 @@
-3.11.1
+3.11.2
# The version string is the first line of this file.
# It must be in the format described in stdlib/sys.mli
diff --git a/_tags b/_tags
index 37ba928ef4..bb10f436b5 100644
--- a/_tags
+++ b/_tags
@@ -55,6 +55,7 @@ true: use_stdlib
<otherlibs/num/nums.cm{,x}a> or <otherlibs/dbm/dbm.cm{,x}a>: ocamlmklib
<otherlibs/{,win32}graph/graphics.cm{,x}a>: ocamlmklib
<otherlibs/threads/threads.cm{,x}a>: ocamlmklib
+"otherlibs/threads/unix.cma": ocamlmklib
<otherlibs/bigarray/bigarray.cm{,x}a>: ocamlmklib
<otherlibs/{bigarray,systhreads}/**.ml*>: include_unix
@@ -70,6 +71,7 @@ true: use_stdlib
<otherlibs/bigarray/**>: otherlibs_bigarray
<otherlibs/num/**>: otherlibs_num
<otherlibs/threads/**>: otherlibs_threads
+"otherlibs/threads/unix.cma": -otherlibs_threads
<otherlibs/systhreads/**>: otherlibs_systhreads
<otherlibs/dbm/**>: otherlibs_dbm
<otherlibs/graph/**>: otherlibs_graph
diff --git a/asmcomp/alpha/emit.mlp b/asmcomp/alpha/emit.mlp
index b3890a4482..3c04b7a47a 100644
--- a/asmcomp/alpha/emit.mlp
+++ b/asmcomp/alpha/emit.mlp
@@ -793,9 +793,9 @@ let emit_item = function
long decimal constants *)
` .quad 0x{emit_string(Nativeint.format "%x" n)}\n`
| Csingle f ->
- ` .float {emit_string f}\n`
+ emit_float32_directive ".long" f
| Cdouble f ->
- ` .double {emit_string f}\n`
+ emit_float64_directive ".quad" f
| Csymbol_address s ->
` .quad {emit_symbol s}\n`
| Clabel_address lbl ->
diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp
index e2a53465e5..08745799b0 100644
--- a/asmcomp/amd64/emit.mlp
+++ b/asmcomp/amd64/emit.mlp
@@ -576,33 +576,26 @@ let emit_instr fallthrough i =
end
| Lswitch jumptbl ->
let lbl = new_label() in
- if !pic_code || !Clflags.dlcode then begin
- (* PR#4424: r11 is known to be clobbered by the Lswitch,
- meaning that no variable that is live across the Lswitch
- is assigned to r11. However, the argument to Lswitch
- can still be assigned to r11, so we need to special-case
- this situation. *)
- if i.arg.(0).loc = Reg 9 (* ie r11, cf amd64/proc.ml *) then begin
- ` salq $3, %r11\n`;
- ` pushq %r11\n`;
- ` leaq {emit_label lbl}(%rip), %r11\n`;
- ` addq 0(%rsp), %r11\n`;
- ` addq $8, %rsp\n`;
- ` jmp *(%r11)\n`
- end else begin
- ` leaq {emit_label lbl}(%rip), %r11\n`;
- ` jmp *(%r11, {emit_reg i.arg.(0)}, 8)\n`
- end
- end else begin
- ` jmp *{emit_label lbl}(, {emit_reg i.arg.(0)}, 8)\n`
- end;
+ (* rax and rdx are clobbered by the Lswitch,
+ meaning that no variable that is live across the Lswitch
+ is assigned to rax or rdx. However, the argument to Lswitch
+ can still be assigned to one of these two registers, so
+ we must be careful not to clobber it before use. *)
+ let (tmp1, tmp2) =
+ if i.arg.(0).loc = Reg 0 (* rax *)
+ then (phys_reg 4 (*rdx*), phys_reg 0 (*rax*))
+ else (phys_reg 0 (*rax*), phys_reg 4 (*rdx*)) in
+ ` leaq {emit_label lbl}(%rip), {emit_reg tmp1}\n`;
+ ` movslq ({emit_reg tmp1}, {emit_reg i.arg.(0)}, 4), {emit_reg tmp2}\n`;
+ ` addq {emit_reg tmp2}, {emit_reg tmp1}\n`;
+ ` jmp *{emit_reg tmp1}\n`;
if macosx
then ` .const\n`
else ` .section .rodata\n`;
- emit_align 8;
+ emit_align 4;
`{emit_label lbl}:`;
for i = 0 to Array.length jumptbl - 1 do
- ` .quad {emit_label jumptbl.(i)}\n`
+ ` .long {emit_label jumptbl.(i)} - {emit_label lbl}\n`
done;
` .text\n`
| Lsetuptrap lbl ->
@@ -635,7 +628,8 @@ let rec emit_all fallthrough i =
(* Emission of the floating-point constants *)
let emit_float_constant (lbl, cst) =
- `{emit_label lbl}: .double {emit_string cst}\n`
+ `{emit_label lbl}:`;
+ emit_float64_directive ".quad" cst
(* Emission of the profiling prelude *)
@@ -668,7 +662,9 @@ let fundecl fundecl =
bound_error_call := 0;
` .text\n`;
emit_align 16;
- if macosx && is_generic_function fundecl.fun_name
+ if macosx
+ && not !Clflags.output_c_object
+ && is_generic_function fundecl.fun_name
then (* PR#4690 *)
` .private_extern {emit_symbol fundecl.fun_name}\n`
else
@@ -713,9 +709,9 @@ let emit_item = function
| Cint n ->
` .quad {emit_nativeint n}\n`
| Csingle f ->
- ` .float {emit_string f}\n`
+ emit_float32_directive ".long" f
| Cdouble f ->
- ` .double {emit_string f}\n`
+ emit_float64_directive ".quad" f
| Csymbol_address s ->
` .quad {emit_symbol s}\n`
| Clabel_address lbl ->
diff --git a/asmcomp/amd64/proc.ml b/asmcomp/amd64/proc.ml
index da2f886bbc..c0807b88d4 100644
--- a/asmcomp/amd64/proc.ml
+++ b/asmcomp/amd64/proc.ml
@@ -92,7 +92,6 @@ let phys_reg n =
let rax = phys_reg 0
let rcx = phys_reg 5
let rdx = phys_reg 4
-let r11 = phys_reg 9
let rxmm15 = phys_reg 115
let stack_slot slot ty =
@@ -170,7 +169,7 @@ let destroyed_at_oper = function
| Iop(Istore(Single, _)) -> [| rxmm15 |]
| Iop(Ialloc _ | Iintop(Icomp _) | Iintop_imm((Idiv|Imod|Icomp _), _))
-> [| rax |]
- | Iswitch(_, _) when !pic_code || !Clflags.dlcode -> [| r11 |]
+ | Iswitch(_, _) -> [| rax; rdx |]
| _ -> [||]
let destroyed_at_raise = all_phys_regs
diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp
index 586d477bd1..e1b0af90a8 100644
--- a/asmcomp/arm/emit.mlp
+++ b/asmcomp/arm/emit.mlp
@@ -625,6 +625,9 @@ let emit_item = function
| Csingle f ->
` .float {emit_string f}\n`
| Cdouble f ->
+ (* FIXME: this version of the ARM port is mixed-endian, so we
+ use .double instead of emit_float64_directive. The next
+ version is little-endian, so we'll use emit_float64 then. *)
` .align 0\n`;
` .double {emit_string f}\n`
| Csymbol_address s ->
diff --git a/asmcomp/asmlink.ml b/asmcomp/asmlink.ml
index f02a9b3306..33b3f0d9cb 100644
--- a/asmcomp/asmlink.ml
+++ b/asmcomp/asmlink.ml
@@ -259,6 +259,7 @@ let link_shared ppf objfiles output_name =
(fun (info, file_name, crc) -> check_consistency file_name info crc)
units_tolink;
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
diff --git a/asmcomp/emitaux.ml b/asmcomp/emitaux.ml
index e851c8187d..35338eed9b 100644
--- a/asmcomp/emitaux.ml
+++ b/asmcomp/emitaux.ml
@@ -93,6 +93,27 @@ let emit_bytes_directive directive s =
done;
if !pos > 0 then emit_char '\n'
+(* PR#4813: assemblers do strange things with float literals indeed,
+ so we convert to IEEE representation ourselves and emit float
+ literals as 32- or 64-bit integers. *)
+
+let emit_float64_directive directive f =
+ let x = Int64.bits_of_float (float_of_string f) in
+ emit_printf "\t%s\t0x%Lx\n" directive x
+
+let emit_float64_split_directive directive f =
+ let x = Int64.bits_of_float (float_of_string f) in
+ let lo = Int64.logand x 0xFFFF_FFFFL
+ and hi = Int64.shift_right_logical x 32 in
+ emit_printf "\t%s\t0x%Lx, 0x%Lx\n"
+ directive
+ (if Arch.big_endian then hi else lo)
+ (if Arch.big_endian then lo else hi)
+
+let emit_float32_directive directive f =
+ let x = Int32.bits_of_float (float_of_string f) in
+ emit_printf "\t%s\t0x%lx\n" directive x
+
(* Record live pointers at call points *)
type frame_descr =
diff --git a/asmcomp/emitaux.mli b/asmcomp/emitaux.mli
index 112e276a12..4f666be736 100644
--- a/asmcomp/emitaux.mli
+++ b/asmcomp/emitaux.mli
@@ -25,6 +25,9 @@ val emit_char: char -> unit
val emit_string_literal: string -> unit
val emit_string_directive: string -> string -> unit
val emit_bytes_directive: string -> string -> unit
+val emit_float64_directive: string -> string -> unit
+val emit_float64_split_directive: string -> string -> unit
+val emit_float32_directive: string -> string -> unit
type frame_descr =
{ fd_lbl: int; (* Return address *)
diff --git a/asmcomp/hppa/emit.mlp b/asmcomp/hppa/emit.mlp
index bc28ccc18c..eaaf5ff0b5 100644
--- a/asmcomp/hppa/emit.mlp
+++ b/asmcomp/hppa/emit.mlp
@@ -299,7 +299,9 @@ let emit_float_constants () =
` .text\n`;
emit_align 8;
List.iter
- (fun (lbl, cst) -> `{emit_label lbl}: .double {emit_string cst}\n`)
+ (fun (lbl, cst) ->
+ `{emit_label lbl}:`;
+ emit_float64_split_directive ".long" cst)
!float_constants;
float_constants := []
@@ -972,9 +974,9 @@ let emit_item = function
| Cint n ->
` .long {emit_nativeint n}\n`
| Csingle f ->
- ` .float {emit_string f}\n`
+ emit_float32_directive ".long" f
| Cdouble f ->
- ` .double {emit_string f}\n`
+ emit_float64_split_directive ".long" f
| Csymbol_address s ->
use_symbol s;
` .long {emit_symbol s}\n`
diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp
index 89d6a156d7..75881201ea 100644
--- a/asmcomp/i386/emit.mlp
+++ b/asmcomp/i386/emit.mlp
@@ -815,7 +815,8 @@ let rec emit_all fallthrough i =
let emit_float_constant (lbl, cst) =
` .data\n`;
- `{emit_label lbl}: .double {emit_string cst}\n`
+ `{emit_label lbl}:`;
+ emit_float64_split_directive ".long" cst
(* Emission of external symbol references (for MacOSX) *)
@@ -888,7 +889,9 @@ let fundecl fundecl =
bound_error_call := 0;
` .text\n`;
emit_align 16;
- if macosx && is_generic_function fundecl.fun_name
+ if macosx
+ && not !Clflags.output_c_object
+ && is_generic_function fundecl.fun_name
then (* PR#4690 *)
` .private_extern {emit_symbol fundecl.fun_name}\n`
else
@@ -928,9 +931,9 @@ let emit_item = function
| Cint n ->
` .long {emit_nativeint n}\n`
| Csingle f ->
- ` .float {emit_string f}\n`
+ emit_float32_directive ".long" f
| Cdouble f ->
- ` .double {emit_string f}\n`
+ emit_float64_split_directive ".long" f
| Csymbol_address s ->
` .long {emit_symbol s}\n`
| Clabel_address lbl ->
diff --git a/asmcomp/ia64/emit.mlp b/asmcomp/ia64/emit.mlp
index e59f711bc5..fb84e9e08c 100644
--- a/asmcomp/ia64/emit.mlp
+++ b/asmcomp/ia64/emit.mlp
@@ -1287,9 +1287,9 @@ let emit_item = function
| Cint n ->
` data8 {emit_nativeint n}\n`
| Csingle f ->
- ` real4 {emit_string f}\n`
+ emit_float32_directive "data4" f
| Cdouble f ->
- ` real8 {emit_string f}\n`
+ emit_float64_directive "data8" f
| Csymbol_address s ->
` data8 {emit_symbol s}#\n`
| Clabel_address lbl ->
diff --git a/asmcomp/mips/emit.mlp b/asmcomp/mips/emit.mlp
index 198f6265d7..6908ccfd48 100644
--- a/asmcomp/mips/emit.mlp
+++ b/asmcomp/mips/emit.mlp
@@ -527,10 +527,9 @@ let emit_item = function
| Cint n ->
` .word {emit_nativeint n}\n`
| Csingle f ->
- ` .float {emit_string f}\n`
+ emit_float32_directive ".word" f
| Cdouble f ->
- ` .align 0\n`; (* Prevent alignment on 8-byte boundary *)
- ` .double {emit_string f}\n`
+ emit_float64_split_directive ".word" f
| Csymbol_address s ->
` .word {emit_symbol s}\n`
| Clabel_address lbl ->
diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp
index 4df559f684..df3fa1eaa9 100644
--- a/asmcomp/power/emit.mlp
+++ b/asmcomp/power/emit.mlp
@@ -835,7 +835,9 @@ let fundecl fundecl =
call_gc_label := 0;
float_literals := [];
int_literals := [];
- if Config.system = "rhapsody" && is_generic_function fundecl.fun_name
+ if Config.system = "rhapsody"
+ && not !Clflags.output_c_object
+ && is_generic_function fundecl.fun_name
then (* PR#4690 *)
` .private_extern {emit_symbol fundecl.fun_name}\n`
else
@@ -871,7 +873,10 @@ let fundecl fundecl =
` .align 3\n`;
List.iter
(fun (f, lbl) ->
- `{emit_label lbl}: .double 0d{emit_string f}\n`)
+ `{emit_label lbl}:`;
+ if ppc64
+ then emit_float64_directive ".quad" f
+ else emit_float64_split_directive ".long" f)
!float_literals;
List.iter
(fun (n, lbl) ->
@@ -902,9 +907,11 @@ let emit_item = function
| Cint n ->
` {emit_string datag} {emit_nativeint n}\n`
| Csingle f ->
- ` .float 0d{emit_string f}\n`
+ emit_float32_directive ".long" f
| Cdouble f ->
- ` .double 0d{emit_string f}\n`
+ if ppc64
+ then emit_float64_directive ".quad" f
+ else emit_float64_split_directive ".long" f
| Csymbol_address s ->
` {emit_string datag} {emit_symbol s}\n`
| Clabel_address lbl ->
diff --git a/asmcomp/sparc/emit.mlp b/asmcomp/sparc/emit.mlp
index 3411ac791a..7fb7a03763 100644
--- a/asmcomp/sparc/emit.mlp
+++ b/asmcomp/sparc/emit.mlp
@@ -191,7 +191,8 @@ let float_constants = ref ([] : (int * string) list)
let emit_float_constant (lbl, cst) =
rodata ();
` .align 8\n`;
- `{emit_label lbl}: .double 0r{emit_string cst}\n`
+ `{emit_label lbl}:`;
+ emit_float64_split_directive ".word" cst
(* Emission of the profiling prelude *)
let emit_profile () =
@@ -701,9 +702,9 @@ let emit_item = function
| Cint n ->
` .word {emit_nativeint n}\n`
| Csingle f ->
- ` .single 0r{emit_string f}\n`
+ emit_float32_directive ".word" f
| Cdouble f ->
- ` .double 0r{emit_string f}\n`
+ emit_float64_split_directive ".word" f
| Csymbol_address s ->
` .word {emit_symbol s}\n`
| Clabel_address lbl ->
diff --git a/asmrun/.depend b/asmrun/.depend
index 6b66a0c3a7..dca8ae55a2 100644
--- a/asmrun/.depend
+++ b/asmrun/.depend
@@ -1,1164 +1,732 @@
alloc.o: alloc.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/misc.h ../byterun/custom.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/stacks.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h \
- ../byterun/backtrace.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h stack.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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 \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/weak.h ../byterun/mlvalues.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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
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/config.h \
- ../byterun/misc.h ../byterun/dynlink.h ../byterun/misc.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
../byterun/prims.h
extern.o: extern.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/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/io.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h stack.h ../byterun/roots.h ../byterun/misc.h \
- ../byterun/memory.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
- ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/reverse.h ../byterun/stacks.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.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/config.h \
- ../byterun/misc.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/compact.h ../byterun/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/finalise.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/stacks.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.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 ../byterun/stacks.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/config.h ../byterun/misc.h \
- ../byterun/config.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/roots.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/globroots.h ../byterun/mlvalues.h \
- ../byterun/roots.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/config.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/reverse.h ../byterun/md5.h \
- ../byterun/mlvalues.h ../byterun/io.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/config.h ../byterun/misc.h ../byterun/custom.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.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/config.h \
- ../byterun/misc.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/io.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/sys.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/config.h ../byterun/misc.h \
- ../byterun/stacks.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/sys.h \
- ../byterun/misc.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/config.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/finalise.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/weak.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/md5.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.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/config.h ../byterun/misc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.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/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fix_code.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/interp.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/intext.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/io.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/prims.h \
- ../byterun/stacks.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h
+ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
+ ../byterun/interp.h ../byterun/intext.h ../byterun/io.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 ../byterun/stacks.h ../byterun/memory.h
minor_gc.o: minor_gc.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/config.h \
- ../byterun/misc.h ../byterun/finalise.h ../byterun/roots.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/weak.h ../byterun/mlvalues.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/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/config.h ../byterun/misc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h \
- ../byterun/callback.h ../byterun/mlvalues.h ../byterun/alloc.h \
- ../byterun/misc.h ../byterun/mlvalues.h natdynlink.h \
- ../byterun/osdeps.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/interp.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/prims.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/config.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/alloc.h ../byterun/misc.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 ../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/config.h ../byterun/callback.h \
- ../byterun/mlvalues.h ../byterun/debugger.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/config.h \
- ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/globroots.h ../byterun/mlvalues.h \
- ../byterun/roots.h stack.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/config.h ../byterun/misc.h \
- ../byterun/callback.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals_machdep.h ../byterun/sys.h ../byterun/misc.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_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/config.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/misc.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals_machdep.h signals_osdep.h stack.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.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 \
+ ../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
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/config.h ../byterun/backtrace.h \
- ../byterun/mlvalues.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.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/misc.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/sys.h ../byterun/misc.h natdynlink.h
+ ../byterun/printexc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.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/config.h \
- ../byterun/misc.h ../byterun/debugger.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/instruct.h ../byterun/osdeps.h \
- ../byterun/misc.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/stacks.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/sys.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/config.h \
- ../byterun/misc.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h \
- ../byterun/misc.h ../byterun/config.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
- ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/custom.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/stacks.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h \
- ../byterun/backtrace.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h stack.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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 \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/weak.h ../byterun/mlvalues.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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
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/config.h \
- ../byterun/misc.h ../byterun/dynlink.h ../byterun/misc.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
../byterun/prims.h
extern.d.o: extern.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/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/io.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h stack.h ../byterun/roots.h ../byterun/misc.h \
- ../byterun/memory.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
- ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/reverse.h ../byterun/stacks.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.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/config.h \
- ../byterun/misc.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/compact.h ../byterun/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/finalise.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/stacks.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.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 ../byterun/stacks.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/config.h ../byterun/misc.h \
- ../byterun/config.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/roots.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/globroots.h ../byterun/mlvalues.h \
- ../byterun/roots.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/config.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/reverse.h ../byterun/md5.h \
- ../byterun/mlvalues.h ../byterun/io.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/config.h ../byterun/misc.h ../byterun/custom.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.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/config.h \
- ../byterun/misc.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/io.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/sys.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/config.h ../byterun/misc.h \
- ../byterun/stacks.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/sys.h \
- ../byterun/misc.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/config.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/finalise.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/weak.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/md5.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.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/config.h ../byterun/misc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.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/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fix_code.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/interp.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/intext.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/io.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/prims.h \
- ../byterun/stacks.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h
+ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
+ ../byterun/interp.h ../byterun/intext.h ../byterun/io.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 ../byterun/stacks.h ../byterun/memory.h
minor_gc.d.o: minor_gc.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/config.h \
- ../byterun/misc.h ../byterun/finalise.h ../byterun/roots.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/weak.h ../byterun/mlvalues.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/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/config.h ../byterun/misc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h \
- ../byterun/callback.h ../byterun/mlvalues.h ../byterun/alloc.h \
- ../byterun/misc.h ../byterun/mlvalues.h natdynlink.h \
- ../byterun/osdeps.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/interp.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/prims.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/config.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/alloc.h ../byterun/misc.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 ../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/config.h ../byterun/callback.h \
- ../byterun/mlvalues.h ../byterun/debugger.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/config.h \
- ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/globroots.h ../byterun/mlvalues.h \
- ../byterun/roots.h stack.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/config.h ../byterun/misc.h \
- ../byterun/callback.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals_machdep.h ../byterun/sys.h ../byterun/misc.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_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/config.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/misc.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals_machdep.h signals_osdep.h stack.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.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 \
+ ../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
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/config.h ../byterun/backtrace.h \
- ../byterun/mlvalues.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.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/misc.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/sys.h ../byterun/misc.h natdynlink.h
+ ../byterun/printexc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.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/config.h \
- ../byterun/misc.h ../byterun/debugger.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/instruct.h ../byterun/osdeps.h \
- ../byterun/misc.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/stacks.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/sys.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/config.h \
- ../byterun/misc.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h \
- ../byterun/misc.h ../byterun/config.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
- ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/custom.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/stacks.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h \
- ../byterun/backtrace.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h stack.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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 \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/weak.h ../byterun/mlvalues.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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
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/config.h \
- ../byterun/misc.h ../byterun/dynlink.h ../byterun/misc.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
../byterun/prims.h
extern.p.o: extern.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/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/io.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h stack.h ../byterun/roots.h ../byterun/misc.h \
- ../byterun/memory.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/config.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
- ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/reverse.h ../byterun/stacks.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.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/config.h \
- ../byterun/misc.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/compact.h ../byterun/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/finalise.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/stacks.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.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 ../byterun/stacks.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/config.h ../byterun/misc.h \
- ../byterun/config.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/roots.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/globroots.h ../byterun/mlvalues.h \
- ../byterun/roots.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/config.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h \
- ../byterun/custom.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/reverse.h ../byterun/md5.h \
- ../byterun/mlvalues.h ../byterun/io.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/config.h ../byterun/misc.h ../byterun/custom.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/intext.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.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/config.h \
- ../byterun/misc.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/io.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/sys.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/config.h ../byterun/misc.h \
- ../byterun/stacks.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/sys.h \
- ../byterun/misc.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/config.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/finalise.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc_ctrl.h ../byterun/misc.h ../byterun/weak.h \
- ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/md5.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.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/config.h ../byterun/misc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.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/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fix_code.h \
- ../byterun/config.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/interp.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/intext.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/io.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/prims.h \
- ../byterun/stacks.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/memory.h
+ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
+ ../byterun/interp.h ../byterun/intext.h ../byterun/io.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 ../byterun/stacks.h ../byterun/memory.h
minor_gc.p.o: minor_gc.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/config.h \
- ../byterun/misc.h ../byterun/finalise.h ../byterun/roots.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/weak.h ../byterun/mlvalues.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/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/config.h ../byterun/misc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.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/config.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h \
- ../byterun/callback.h ../byterun/mlvalues.h ../byterun/alloc.h \
- ../byterun/misc.h ../byterun/mlvalues.h natdynlink.h \
- ../byterun/osdeps.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/interp.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/prims.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/config.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/alloc.h ../byterun/misc.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 ../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/config.h ../byterun/callback.h \
- ../byterun/mlvalues.h ../byterun/debugger.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/config.h \
- ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/globroots.h ../byterun/mlvalues.h \
- ../byterun/roots.h stack.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/config.h ../byterun/misc.h \
- ../byterun/callback.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/config.h ../byterun/gc.h ../byterun/mlvalues.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/minor_gc.h \
- ../byterun/misc.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/roots.h ../byterun/misc.h ../byterun/memory.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals_machdep.h ../byterun/sys.h ../byterun/misc.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_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/config.h ../byterun/misc.h \
- ../byterun/memory.h ../byterun/config.h ../byterun/gc.h \
- ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/misc.h \
- ../byterun/signals.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/signals_machdep.h signals_osdep.h stack.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.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 \
+ ../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
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/config.h ../byterun/backtrace.h \
- ../byterun/mlvalues.h ../byterun/custom.h ../byterun/mlvalues.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/gc_ctrl.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.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/misc.h ../byterun/printexc.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/sys.h ../byterun/misc.h natdynlink.h
+ ../byterun/printexc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.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/config.h \
- ../byterun/misc.h ../byterun/debugger.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/instruct.h ../byterun/osdeps.h \
- ../byterun/misc.h ../byterun/signals.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/stacks.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/sys.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/config.h \
- ../byterun/misc.h ../byterun/fail.h ../byterun/misc.h \
- ../byterun/mlvalues.h ../byterun/io.h ../byterun/misc.h \
- ../byterun/mlvalues.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/config.h \
- ../byterun/misc.h ../byterun/config.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/minor_gc.h ../byterun/misc.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
- ../byterun/misc.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/config.h ../byterun/misc.h ../byterun/fail.h \
- ../byterun/misc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h \
- ../byterun/misc.h ../byterun/memory.h ../byterun/config.h \
- ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
- ../byterun/minor_gc.h ../byterun/misc.h ../byterun/misc.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/ia64.S b/asmrun/ia64.S
index 876526f2fd..025e064a5e 100644
--- a/asmrun/ia64.S
+++ b/asmrun/ia64.S
@@ -12,7 +12,7 @@
/* $Id$ */
-/* Asm part of the runtime system, Alpha processor */
+/* Asm part of the runtime system, IA64 processor */
#undef BROKEN_POSTINCREMENT
@@ -68,15 +68,8 @@ caml_allocN:
sub r4 = r4, r2 ;;
cmp.ltu p0, p6 = r4, r5
(p6) br.ret.sptk b0 ;;
- /* Stash return address at sp (in stack scratch area) */
- mov r3 = b0 ;;
- st8 [sp] = r3
- /* Call GC */
- br.call.sptk b0 = caml_call_gc# ;;
- /* Return to caller */
- ld8 r3 = [sp] ;;
- mov b0 = r3 ;;
- br.ret.sptk b0
+ /* Fall through caml_call_gc */
+ br.sptk.many caml_call_gc#
.endp caml_allocN#
diff --git a/boot/.cvsignore b/boot/.cvsignore
index a0a2356c9a..5eeaef32ea 100644
--- a/boot/.cvsignore
+++ b/boot/.cvsignore
@@ -4,3 +4,4 @@ ocamlyacc
camlheader
myocamlbuild
myocamlbuild.native
+libcamlrun.a
diff --git a/boot/ocamlc b/boot/ocamlc
index af762efa3b..4098c9aab8 100755
--- a/boot/ocamlc
+++ b/boot/ocamlc
Binary files differ
diff --git a/boot/ocamldep b/boot/ocamldep
index 4d1adaa9f5..d052f48e9a 100755
--- a/boot/ocamldep
+++ b/boot/ocamldep
Binary files differ
diff --git a/boot/ocamllex b/boot/ocamllex
index 8eb679b5df..e5d359b19b 100755
--- a/boot/ocamllex
+++ b/boot/ocamllex
Binary files differ
diff --git a/build/boot-c-parts-windows.sh b/build/boot-c-parts-windows.sh
index 45193d338e..3e2ca3dc8e 100755
--- a/build/boot-c-parts-windows.sh
+++ b/build/boot-c-parts-windows.sh
@@ -13,7 +13,6 @@ set -ex
mkdir -p _build/boot
cp -f byterun/ocamlrun.exe \
byterun/libcamlrun.$A \
- byterun/ocamlrun.dll \
asmrun/libasmrun.$A \
yacc/ocamlyacc.exe \
boot/ocamlc \
@@ -21,5 +20,4 @@ cp -f byterun/ocamlrun.exe \
boot/ocamldep \
_build/boot
mkdir -p _build/byterun
-cp -f byterun/ocamlrun.exe byterun/ocamlrun.dll boot
-cp -f byterun/ocamlrun.$A _build/byterun
+cp -f byterun/ocamlrun.exe boot
diff --git a/build/install.sh b/build/install.sh
index 4c38740c53..2197069c5b 100755
--- a/build/install.sh
+++ b/build/install.sh
@@ -132,7 +132,6 @@ cd ..
WIN32=""
if [ "x$EXE" = "x.exe" ]; then
installbin win32caml/ocamlwin.exe $PREFIX/OCamlWin.exe
- installdir byterun/ocamlrun.dll $BINDIR
WIN32=win32
fi
@@ -140,7 +139,7 @@ installdir otherlibs/"$WIN32"unix/unixsupport.h \
otherlibs/bigarray/bigarray.h \
$LIBDIR/caml
-installdir yacc/ocamlyacc byterun/ocamlrun $BINDIR
+installdir yacc/ocamlyacc$EXE byterun/ocamlrun$EXE $BINDIR
installdir config/Makefile $LIBDIR/Makefile.config
installdir byterun/ld.conf $LIBDIR
diff --git a/build/mkmyocamlbuild_config.sh b/build/mkmyocamlbuild_config.sh
index e48f5b0e0b..9c7eebd3c3 100755
--- a/build/mkmyocamlbuild_config.sh
+++ b/build/mkmyocamlbuild_config.sh
@@ -19,6 +19,7 @@ cd `dirname $0`/..
sed \
-e 's/^.*FLEXDIR.*$//g' \
-e 's/^#ml \(.*\)/\1/' \
+ -e 's/^\([^"][^"]*\("[^"]*"[^"]*\)*\)#.*$/\1/' \
-e 's/^\(#.*\)$/(* \1 *)/' \
-e 's/^\(.*\$([0-9]).*\)$/(* \1 *)/' \
-e 's/^\([^(=]*\)=\([^"]*\)$/let <:lower<\1>> = "\2";;/' \
diff --git a/bytecomp/bytelink.ml b/bytecomp/bytelink.ml
index 97df99b17f..566626b7ca 100644
--- a/bytecomp/bytelink.ml
+++ b/bytecomp/bytelink.ml
@@ -377,24 +377,53 @@ let output_data_string outchan data =
end
done
+(* Output a debug stub *)
+
+let output_cds_file outfile =
+ Misc.remove_file outfile;
+ let outchan =
+ open_out_gen [Open_wronly; Open_trunc; Open_creat; Open_binary]
+ 0o777 outfile in
+ try
+ Bytesections.init_record outchan;
+ (* The map of global identifiers *)
+ Symtable.output_global_map outchan;
+ Bytesections.record outchan "SYMB";
+ (* Debug info *)
+ output_debug_info outchan;
+ Bytesections.record outchan "DBUG";
+ (* The table of contents and the trailer *)
+ Bytesections.write_toc_and_trailer outchan;
+ close_out outchan
+ with x ->
+ close_out outchan;
+ remove_file outfile;
+ raise x
+
(* Output a bytecode executable as a C file *)
let link_bytecode_as_c tolink outfile =
let outchan = open_out outfile in
- try
+ begin try
(* The bytecode *)
- output_string outchan "#include <caml/mlvalues.h>\n";
output_string outchan "\
-CAMLextern void caml_startup_code(
- code_t code, asize_t code_size,
- char *data, asize_t data_size,
- char *section_table, asize_t section_table_size,
+#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";
output_string outchan "static int caml_code[] = {\n";
Symtable.init();
Consistbl.clear crc_interfaces;
- let output_fun = output_code_string outchan
- and currpos_fun () = 0 in
+ let currpos = ref 0 in
+ let output_fun code =
+ output_code_string outchan code;
+ currpos := !currpos + String.length code
+ and currpos_fun () = !currpos in
List.iter (link_file output_fun currpos_fun) tolink;
(* The final STOP instruction *)
Printf.fprintf outchan "\n0x%x};\n\n" Opcodes.opSTOP;
@@ -415,25 +444,31 @@ CAMLextern void caml_startup_code(
(* The table of primitives *)
Symtable.output_primitive_table outchan;
(* The entry point *)
- output_string outchan "\n
-void caml_startup(char ** argv)
-{
- caml_startup_code(caml_code, sizeof(caml_code),
- caml_data, sizeof(caml_data),
- caml_sections, sizeof(caml_sections),
- argv);
-}\n";
+ 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";
close_out outchan
with x ->
close_out outchan;
raise x
+ end;
+ if !Clflags.debug then
+ output_cds_file ((Filename.chop_extension outfile) ^ ".cds")
(* Build a custom runtime *)
let build_custom_runtime prim_name exec_name =
- Ccomp.call_linker Ccomp.Exe exec_name
+ Ccomp.call_linker Ccomp.Exe exec_name
([prim_name] @ List.rev !Clflags.ccobjs @ ["-lcamlrun"])
- Config.bytecomp_c_libraries
+ (Clflags.std_include_flag "-I" ^ " " ^ Config.bytecomp_c_libraries)
let append_bytecode_and_cleanup bytecode_name exec_name prim_name =
let oc = open_out_gen [Open_wronly; Open_append; Open_binary] 0 exec_name in
@@ -475,7 +510,20 @@ let link objfiles output_name =
try
link_bytecode tolink bytecode_name false;
let poc = open_out prim_name in
+ output_string poc "\
+ #ifdef __cplusplus\n\
+ extern \"C\" {\n\
+ #endif\n\
+ #ifdef _WIN64\n\
+ typedef __int64 value;\n\
+ #else\n\
+ typedef long value;\n\
+ #endif\n";
Symtable.output_primitive_table poc;
+ output_string poc "\
+ #ifdef __cplusplus\n\
+ }\n\
+ #endif\n";
close_out poc;
let exec_name = fix_exec_name output_name in
if not (build_custom_runtime prim_name exec_name)
diff --git a/bytecomp/symtable.ml b/bytecomp/symtable.ml
index 1538451634..bad39a2135 100644
--- a/bytecomp/symtable.ml
+++ b/bytecomp/symtable.ml
@@ -114,14 +114,10 @@ open Printf
let output_primitive_table outchan =
let prim = all_primitives() in
- fprintf outchan "\
- #ifdef __cplusplus\n\
- extern \"C\" {\n\
- #endif\n";
for i = 0 to Array.length prim - 1 do
- fprintf outchan "extern long %s();\n" prim.(i)
+ fprintf outchan "extern value %s();\n" prim.(i)
done;
- fprintf outchan "typedef long (*primitive)();\n";
+ fprintf outchan "typedef value (*primitive)();\n";
fprintf outchan "primitive caml_builtin_cprim[] = {\n";
for i = 0 to Array.length prim - 1 do
fprintf outchan " %s,\n" prim.(i)
@@ -131,11 +127,7 @@ let output_primitive_table outchan =
for i = 0 to Array.length prim - 1 do
fprintf outchan " \"%s\",\n" prim.(i)
done;
- fprintf outchan " (char *) 0 };\n";
- fprintf outchan "\
- #ifdef __cplusplus\n\
- }\n\
- #endif\n"
+ fprintf outchan " (char *) 0 };\n"
(* Initialization for batch linking *)
diff --git a/bytecomp/typeopt.ml b/bytecomp/typeopt.ml
index 8a49ea16ba..e1c6a86a3b 100644
--- a/bytecomp/typeopt.ml
+++ b/bytecomp/typeopt.ml
@@ -22,18 +22,17 @@ open Types
open Typedtree
open Lambda
+let scrape env ty =
+ (Ctype.repr (Ctype.expand_head_opt env (Ctype.correct_levels ty))).desc
+
let has_base_type exp base_ty_path =
- let exp_ty =
- Ctype.expand_head_opt exp.exp_env (Ctype.correct_levels exp.exp_type) in
- match Ctype.repr exp_ty with
- {desc = Tconstr(p, _, _)} -> Path.same p base_ty_path
+ match scrape exp.exp_env exp.exp_type with
+ | Tconstr(p, _, _) -> Path.same p base_ty_path
| _ -> false
let maybe_pointer exp =
- let exp_ty =
- Ctype.expand_head_opt exp.exp_env (Ctype.correct_levels exp.exp_type) in
- match (Ctype.repr exp_ty).desc with
- Tconstr(p, args, abbrev) ->
+ match scrape exp.exp_env exp.exp_type with
+ | Tconstr(p, args, abbrev) ->
not (Path.same p Predef.path_int) &&
not (Path.same p Predef.path_char) &&
begin try
@@ -50,9 +49,8 @@ let maybe_pointer exp =
| _ -> true
let array_element_kind env ty =
- let ty = Ctype.repr (Ctype.expand_head_opt env ty) in
- match ty.desc with
- Tvar | Tunivar ->
+ match scrape env ty with
+ | Tvar | Tunivar ->
Pgenarray
| Tconstr(p, args, abbrev) ->
if Path.same p Predef.path_int || Path.same p Predef.path_char then
@@ -85,9 +83,8 @@ let array_element_kind env ty =
Paddrarray
let array_kind_gen ty env =
- let array_ty = Ctype.expand_head_opt env (Ctype.correct_levels ty) in
- match (Ctype.repr array_ty).desc with
- Tconstr(p, [elt_ty], _) | Tpoly({desc = Tconstr(p, [elt_ty], _)}, _)
+ match scrape env ty with
+ | Tconstr(p, [elt_ty], _) | Tpoly({desc = Tconstr(p, [elt_ty], _)}, _)
when Path.same p Predef.path_array ->
array_element_kind env elt_ty
| _ ->
@@ -98,9 +95,9 @@ let array_kind exp = array_kind_gen exp.exp_type exp.exp_env
let array_pattern_kind pat = array_kind_gen pat.pat_type pat.pat_env
-let bigarray_decode_type ty tbl dfl =
- match (Ctype.repr ty).desc with
- Tconstr(Pdot(Pident mod_id, type_name, _), [], _)
+let bigarray_decode_type env ty tbl dfl =
+ match scrape env ty with
+ | Tconstr(Pdot(Pident mod_id, type_name, _), [], _)
when Ident.name mod_id = "Bigarray" ->
begin try List.assoc type_name tbl with Not_found -> dfl end
| _ ->
@@ -125,11 +122,10 @@ let layout_table =
"fortran_layout", Pbigarray_fortran_layout]
let bigarray_kind_and_layout exp =
- let ty = Ctype.repr (Ctype.expand_head_opt exp.exp_env exp.exp_type) in
- match ty.desc with
- Tconstr(p, [caml_type; elt_type; layout_type], abbrev) ->
- (bigarray_decode_type elt_type kind_table Pbigarray_unknown,
- bigarray_decode_type layout_type layout_table Pbigarray_unknown_layout)
+ match scrape exp.exp_env exp.exp_type with
+ | Tconstr(p, [caml_type; elt_type; layout_type], abbrev) ->
+ (bigarray_decode_type exp.exp_env elt_type kind_table Pbigarray_unknown,
+ bigarray_decode_type exp.exp_env layout_type layout_table Pbigarray_unknown_layout)
| _ ->
(Pbigarray_unknown, Pbigarray_unknown_layout)
diff --git a/byterun/.cvsignore b/byterun/.cvsignore
index 9020f408e2..b4714b0506 100644
--- a/byterun/.cvsignore
+++ b/byterun/.cvsignore
@@ -15,3 +15,5 @@ interp.a.lst
*.[sd]obj
*.lib
.gdb_history
+*.so
+*.a
diff --git a/byterun/.depend b/byterun/.depend
index b92cc6de2a..4ff7c0c693 100644
--- a/byterun/.depend
+++ b/byterun/.depend
@@ -105,13 +105,13 @@ printexc.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
roots.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
freelist.h minor_gc.h globroots.h stacks.h
+signals_byt.o: signals_byt.c config.h ../config/m.h ../config/s.h \
+ compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
+ minor_gc.h osdeps.h signals.h signals_machdep.h
signals.o: signals.c alloc.h compatibility.h misc.h config.h \
../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
sys.h
-signals_byt.o: signals_byt.c config.h ../config/m.h ../config/s.h \
- compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
- minor_gc.h osdeps.h signals.h signals_machdep.h
stacks.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
minor_gc.h
@@ -243,13 +243,13 @@ printexc.d.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
roots.d.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
freelist.h minor_gc.h globroots.h stacks.h
+signals_byt.d.o: signals_byt.c config.h ../config/m.h ../config/s.h \
+ compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
+ minor_gc.h osdeps.h signals.h signals_machdep.h
signals.d.o: signals.c alloc.h compatibility.h misc.h config.h \
../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
sys.h
-signals_byt.d.o: signals_byt.c config.h ../config/m.h ../config/s.h \
- compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
- minor_gc.h osdeps.h signals.h signals_machdep.h
stacks.d.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
minor_gc.h
@@ -379,13 +379,13 @@ printexc.pic.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
roots.pic.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
freelist.h minor_gc.h globroots.h stacks.h
+signals_byt.pic.o: signals_byt.c config.h ../config/m.h ../config/s.h \
+ compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
+ minor_gc.h osdeps.h signals.h signals_machdep.h
signals.pic.o: signals.c alloc.h compatibility.h misc.h config.h \
../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
sys.h
-signals_byt.pic.o: signals_byt.c config.h ../config/m.h ../config/s.h \
- compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
- minor_gc.h osdeps.h signals.h signals_machdep.h
stacks.pic.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
minor_gc.h
diff --git a/byterun/backtrace.c b/byterun/backtrace.c
index 2e645ab512..1afce8ae2a 100644
--- a/byterun/backtrace.c
+++ b/byterun/backtrace.c
@@ -39,6 +39,7 @@ CAMLexport int caml_backtrace_active = 0;
CAMLexport int caml_backtrace_pos = 0;
CAMLexport code_t * caml_backtrace_buffer = NULL;
CAMLexport value caml_backtrace_last_exn = Val_unit;
+CAMLexport char * caml_cds_file = NULL;
#define BACKTRACE_BUFFER_SIZE 1024
/* Location of fields in the Instruct.debug_event record */
@@ -135,7 +136,11 @@ static value read_debug_info(void)
uint32 num_events, orig, i;
value evl, l;
- exec_name = caml_exe_name;
+ if (caml_cds_file != NULL) {
+ exec_name = caml_cds_file;
+ } else {
+ exec_name = caml_exe_name;
+ }
fd = caml_attempt_open(&exec_name, &trail, 1);
if (fd < 0) CAMLreturn(Val_false);
caml_read_section_descriptors(fd, &trail);
diff --git a/byterun/backtrace.h b/byterun/backtrace.h
index c2a21c2088..2d9c202eaa 100644
--- a/byterun/backtrace.h
+++ b/byterun/backtrace.h
@@ -22,6 +22,7 @@ CAMLextern int caml_backtrace_active;
CAMLextern int caml_backtrace_pos;
CAMLextern code_t * caml_backtrace_buffer;
CAMLextern value caml_backtrace_last_exn;
+CAMLextern char * caml_cds_file;
CAMLprim value caml_record_backtrace(value vflag);
#ifndef NATIVE_CODE
diff --git a/byterun/gc_ctrl.c b/byterun/gc_ctrl.c
index ec9c82ab12..0083f36734 100644
--- a/byterun/gc_ctrl.c
+++ b/byterun/gc_ctrl.c
@@ -41,7 +41,7 @@ intnat caml_stat_minor_collections = 0,
caml_stat_compactions = 0,
caml_stat_heap_chunks = 0;
-extern asize_t caml_major_heap_increment; /* bytes; see major_gc.c */
+extern uintnat caml_major_heap_increment; /* bytes; see major_gc.c */
extern uintnat caml_percent_free; /* see major_gc.c */
extern uintnat caml_percent_max; /* see compact.c */
extern uintnat caml_allocation_policy; /* see freelist.c */
@@ -419,7 +419,7 @@ static void test_and_compact (void)
fp = 100.0 * caml_fl_cur_size
/ (Wsize_bsize (caml_stat_heap_size) - caml_fl_cur_size);
- if (fp > 1000000.0) fp = 1000000.0;
+ if (fp > 999999.0) fp = 999999.0;
caml_gc_message (0x200, "Estimated overhead (lower bound) = %"
ARCH_INTNAT_PRINTF_FORMAT "u%%\n",
(uintnat) fp);
diff --git a/byterun/interp.c b/byterun/interp.c
index bbd8367e8a..a162a1327d 100644
--- a/byterun/interp.c
+++ b/byterun/interp.c
@@ -157,7 +157,8 @@ sp is a local copy of the global variable caml_extern_sp. */
#define SP_REG asm("a4")
#define ACCU_REG asm("d7")
#endif
-#ifdef __arm__
+/* PR#4953: these specific registers not available in Thumb mode */
+#if defined (__arm__) && !defined(__thumb__)
#define PC_REG asm("r9")
#define SP_REG asm("r8")
#define ACCU_REG asm("r7")
diff --git a/byterun/major_gc.c b/byterun/major_gc.c
index 1298498f48..b9ec8cbfe0 100644
--- a/byterun/major_gc.c
+++ b/byterun/major_gc.c
@@ -30,7 +30,7 @@
#include "weak.h"
uintnat caml_percent_free;
-intnat caml_major_heap_increment;
+uintnat caml_major_heap_increment;
CAMLexport char *caml_heap_start;
char *caml_gc_sweep_hp;
int caml_gc_phase; /* always Phase_mark, Phase_sweep, or Phase_idle */
diff --git a/byterun/obj.c b/byterun/obj.c
index ded8416b1e..5e15c47dae 100644
--- a/byterun/obj.c
+++ b/byterun/obj.c
@@ -165,6 +165,10 @@ CAMLprim value caml_obj_truncate (value v, value newsize)
return Val_unit;
}
+CAMLprim value caml_obj_add_offset (value v, value offset)
+{
+ return v + Int32_val (offset);
+}
/* The following functions are used in stdlib/lazy.ml.
They are not written in O'Caml because they must be atomic with respect
diff --git a/byterun/startup.c b/byterun/startup.c
index 34d6f315c9..419d49be60 100644
--- a/byterun/startup.c
+++ b/byterun/startup.c
@@ -439,12 +439,18 @@ CAMLexport void caml_startup_code(
char **argv)
{
value res;
+ char* cds_file;
caml_init_ieee_floats();
caml_init_custom_operations();
#ifdef DEBUG
caml_verb_gc = 63;
#endif
+ cds_file = getenv("CAML_DEBUG_FILE");
+ if (cds_file != NULL) {
+ caml_cds_file = caml_stat_alloc(strlen(cds_file) + 1);
+ strcpy(caml_cds_file, cds_file);
+ }
parse_camlrunparam();
caml_external_raise = NULL;
/* Initialize the abstract machine */
@@ -454,8 +460,17 @@ CAMLexport void caml_startup_code(
init_atoms();
/* Initialize the interpreter */
caml_interprete(NULL, 0);
+ /* Initialize the debugger, if needed */
+ caml_debugger_init();
/* Load the code */
caml_start_code = code;
+ caml_code_size = code_size;
+ if (caml_debugger_in_use) {
+ int len, i;
+ len = code_size / sizeof(opcode_t);
+ caml_saved_code = (unsigned char *) caml_stat_alloc(len);
+ for (i = 0; i < len; i++) caml_saved_code[i] = caml_start_code[i];
+ }
#ifdef THREADED_CODE
caml_thread_code(caml_start_code, code_size);
#endif
@@ -469,10 +484,19 @@ CAMLexport void caml_startup_code(
/* Record the sections (for caml_get_section_table in meta.c) */
caml_section_table = section_table;
caml_section_table_size = section_table_size;
- /* Run the code */
+ /* Initialize system libraries */
caml_init_exceptions();
caml_sys_init("", argv);
- res = caml_interprete(caml_start_code, code_size);
- if (Is_exception_result(res))
- caml_fatal_uncaught_exception(Extract_exception(res));
+ /* Execute the program */
+ caml_debugger(PROGRAM_START);
+ res = caml_interprete(caml_start_code, caml_code_size);
+ if (Is_exception_result(res)) {
+ caml_exn_bucket = Extract_exception(res);
+ if (caml_debugger_in_use) {
+ caml_extern_sp = &caml_exn_bucket; /* The debugger needs the
+ exception value.*/
+ caml_debugger(UNCAUGHT_EXC);
+ }
+ caml_fatal_uncaught_exception(caml_exn_bucket);
+ }
}
diff --git a/config/Makefile-templ b/config/Makefile-templ
index c77c585681..30170423b9 100644
--- a/config/Makefile-templ
+++ b/config/Makefile-templ
@@ -78,10 +78,14 @@ SHARPBANGSCRIPTS=true
# Under FreeBSD:
#CPP=cpp -P
+### Magic declarations for ocamlbuild -- leave unchanged
+#ml let syslib x = "-l"^x;;
+#ml let mklib out files opts = Printf.sprintf "ar rc %s %s %s; ranlib %s" out opts files out;;
+
### How to invoke ranlib
-# BSD-style:
-#RANLIB=ranlib
-#RANLIBCMD=ranlib
+RANLIB=ranlib
+RANLIBCMD=ranlib
+
# If ranlib is not needed:
#RANLIB=ar rs
#RANLIBCMD=
diff --git a/config/Makefile.mingw b/config/Makefile.mingw
index 3e755f99a6..f72c2eaa99 100644
--- a/config/Makefile.mingw
+++ b/config/Makefile.mingw
@@ -145,11 +145,11 @@ BNG_ARCH=ia32
BNG_ASM_LEVEL=1
### Configuration for LablTk
-# Set TK_ROOT to the directory where you installed TCL/TK 8.4
+# Set TK_ROOT to the directory where you installed TCL/TK 8.5
# There must be no spaces or special characters in $(TK_ROOT)
TK_ROOT=c:/tcl
TK_DEFS=-I$(TK_ROOT)/include
-TK_LINK=$(TK_ROOT)/bin/tk84.dll $(TK_ROOT)/bin/tcl84.dll -lws2_32
+TK_LINK=$(TK_ROOT)/bin/tk85.dll $(TK_ROOT)/bin/tcl85.dll -lws2_32
############# Aliases for common commands
diff --git a/config/Makefile.msvc b/config/Makefile.msvc
index c9a42b6212..351503001a 100644
--- a/config/Makefile.msvc
+++ b/config/Makefile.msvc
@@ -80,7 +80,7 @@ BYTECC=cl /nologo -D_CRT_SECURE_NO_DEPRECATE
BYTECCCOMPOPTS=/Ox /MD
### Additional link-time options for $(BYTECC). (For static linking.)
-BYTECCLINKOPTS=/MD /F16777216
+BYTECCLINKOPTS=
### Additional compile-time options for $(BYTECC). (For building a DLL.)
DLLCCCOMPOPTS=/Ox /MD
@@ -131,7 +131,7 @@ NATIVECC=cl /nologo -D_CRT_SECURE_NO_DEPRECATE
NATIVECCCOMPOPTS=/Ox /MD
### Additional link-time options for $(NATIVECC)
-NATIVECCLINKOPTS=/MD /F16777216
+NATIVECCLINKOPTS=
### Build partially-linked object file
PACKLD=link /lib /nologo /out:# there must be no space after this '/out:'
@@ -145,17 +145,17 @@ BNG_ARCH=generic
BNG_ASM_LEVEL=0
### Configuration for LablTk
-# Set TK_ROOT to the directory where you installed TCL/TK 8.3
+# Set TK_ROOT to the directory where you installed TCL/TK 8.5
TK_ROOT=c:/tcl
TK_DEFS=-I$(TK_ROOT)/include
# The following definition avoids hard-wiring $(TK_ROOT) in the libraries
# produced by OCaml, and is therefore required for binary distribution
# of these libraries. However, $(TK_ROOT)/lib must be added to the LIB
# environment variable, as described in README.win32.
-TK_LINK=tk84.lib tcl84.lib ws2_32.lib
+TK_LINK=tk85.lib tcl85.lib ws2_32.lib
# An alternative definition that avoids mucking with the LIB variable,
# but hard-wires the Tcl/Tk location in the binaries
-# TK_LINK=$(TK_ROOT)/tk84.lib $(TK_ROOT)/tcl84.lib ws2_32.lib
+# TK_LINK=$(TK_ROOT)/tk85.lib $(TK_ROOT)/tcl85.lib ws2_32.lib
############# Aliases for common commands
diff --git a/config/Makefile.msvc64 b/config/Makefile.msvc64
index a067fd0653..a9f2309b6c 100644
--- a/config/Makefile.msvc64
+++ b/config/Makefile.msvc64
@@ -83,7 +83,7 @@ BYTECCCOMPOPTS=/Ox /MD
BYTECCDBGCOMPOPTS=-DDEBUG /Zi /W3 /Wp64
### Additional link-time options for $(BYTECC). (For static linking.)
-BYTECCLINKOPTS=/MD /F33554432
+BYTECCLINKOPTS=
### Additional compile-time options for $(BYTECC). (For building a DLL.)
DLLCCCOMPOPTS=/Ox /MD
@@ -135,7 +135,7 @@ NATIVECC=cl /nologo
NATIVECCCOMPOPTS=/Ox /MD
### Additional link-time options for $(NATIVECC)
-NATIVECCLINKOPTS=/MD /F33554432
+NATIVECCLINKOPTS=
### Build partially-linked object file
PACKLD=link /lib /nologo /machine:AMD64 /out:# there must be no space after this '/out:'
diff --git a/configure b/configure
index bab1de691a..511f473b81 100755
--- a/configure
+++ b/configure
@@ -337,14 +337,16 @@ case "$bytecc,$host" in
gcc*,*-*-cygwin*)
bytecccompopts="-fno-defer-pop $gcc_warnings -U_WIN32"
dllccompopts="-D_WIN32 -DCAML_DLL"
- flexlink="flexlink -chain cygwin -merge-manifest"
- flexdir=`$flexlink -where | dos2unix`
- if test -z "$flexdir"; then
- echo "flexlink not found: native shared libraries won't be available"
- withsharedlibs=no
- else
- iflexdir="-I\"$flexdir\""
- mkexe="$flexlink -exe"
+ if test $withsharedlibs = yes; then
+ flexlink="flexlink -chain cygwin -merge-manifest"
+ flexdir=`$flexlink -where | dos2unix`
+ if test -z "$flexdir"; then
+ echo "flexlink not found: native shared libraries won't be available"
+ withsharedlibs=no
+ else
+ iflexdir="-I\"$flexdir\""
+ mkexe="$flexlink -exe"
+ fi
fi
exe=".exe"
ostype="Cygwin";;
diff --git a/emacs/caml-types.el b/emacs/caml-types.el
index 44f09a031e..05b1a2c0a6 100644
--- a/emacs/caml-types.el
+++ b/emacs/caml-types.el
@@ -256,9 +256,9 @@ See `caml-types-location-re' for annotation file format.
(let* ((loc-re (concat caml-types-position-re " "
caml-types-position-re))
(end-re (concat caml-types-position-re " --"))
- (def-re (concat "def \\([^ ]\\)* " loc-re))
- (def-end-re (concat "def \\([^ ]\\)* " end-re))
- (internal-re (concat "int_ref \\([^ ]\\)* " loc-re))
+ (def-re (concat "def \\([^ ]*\\) " loc-re))
+ (def-end-re (concat "def \\([^ ]*\\) " end-re))
+ (internal-re (concat "int_ref \\([^ ]*\\) " loc-re))
(external-re "ext_ref \\(.*\\)"))
(cond
((string-match def-re kind)
@@ -359,7 +359,7 @@ See `caml-types-location-re' for annotation file format.
(expand-file-name "_build" project-dir)))))
(if (equal project-dir (parent-dir project-dir))
(error (concat "No annotation file. "
- "You should compile with option \"-dtypes\".")))
+ "You should compile with option \"-annot\".")))
(setq project-dir (parent-dir project-dir)))
type-path))))
diff --git a/lex/Makefile b/lex/Makefile
index ac68f5539a..1a81ecdd90 100644
--- a/lex/Makefile
+++ b/lex/Makefile
@@ -19,8 +19,8 @@ CAMLOPT=../boot/ocamlrun ../ocamlopt -nostdlib -I ../stdlib $(NOJOIN)
COMPFLAGS=-warn-error A
CAMLYACC=../boot/ocamlyacc
YACCFLAGS=-v
-CAMLLEX=../boot/ocamlrun ../boot/ocamllex
-CAMLDEP=../boot/ocamlrun ../tools/ocamldep
+CAMLLEX=../boot/ocamlrun ../boot/ocamllex $(NOJOIN)
+CAMLDEP=../boot/ocamlrun ../tools/ocamldep $(NOJOIN)
OBJS=cset.cmo syntax.cmo parser.cmo lexer.cmo table.cmo lexgen.cmo compact.cmo common.cmo output.cmo outputbis.cmo main.cmo
diff --git a/lex/Makefile.nt b/lex/Makefile.nt
index ab2a42a109..cb1ef94a5d 100644
--- a/lex/Makefile.nt
+++ b/lex/Makefile.nt
@@ -14,6 +14,8 @@
# The lexer generator
+include ../config/Makefile
+
CAMLC=../boot/ocamlrun ../boot/ocamlc -I ../boot
CAMLOPT=../boot/ocamlrun ../ocamlopt -I ../stdlib
COMPFLAGS=-warn-error A
diff --git a/ocamldoc/.cvsignore b/ocamldoc/.cvsignore
index 720ee641a5..0372a09821 100644
--- a/ocamldoc/.cvsignore
+++ b/ocamldoc/.cvsignore
@@ -14,3 +14,4 @@ stdlib_man
test_stdlib
test_latex
test
+*.a
diff --git a/ocamldoc/odoc.ml b/ocamldoc/odoc.ml
index dbc7a7d007..b24f325826 100644
--- a/ocamldoc/odoc.ml
+++ b/ocamldoc/odoc.ml
@@ -81,11 +81,11 @@ let _ =
prerr_endline (Odoc_messages.load_file_error file "Not_found");
exit 1
| Sys_error s
- | Failure s ->
+ | Failure s ->
prerr_endline (Odoc_messages.load_file_error file s);
exit 1
-let _ = print_DEBUG "Fin du chargement dynamique éventuel"
+let _ = print_DEBUG "Fin du chargement dynamique eventuel"
let default_html_generator = new Odoc_html.html
let default_latex_generator = new Odoc_latex.latex
diff --git a/ocamldoc/odoc_ast.ml b/ocamldoc/odoc_ast.ml
index e282e32654..62c82be05c 100644
--- a/ocamldoc/odoc_ast.ml
+++ b/ocamldoc/odoc_ast.ml
@@ -335,7 +335,7 @@ module Analyser =
in
(new_param, func_body2)
| _ ->
- print_DEBUG3 "Pas le bon filtre pour le paramètre optionnel avec valeur par défaut.";
+ print_DEBUG3 "Pas le bon filtre pour le parametre optionnel avec valeur par defaut.";
(parameter, func_body)
)
)
@@ -480,7 +480,7 @@ module Analyser =
in
(new_param, body2)
| _ ->
- print_DEBUG3 "Pas le bon filtre pour le paramètre optionnel avec valeur par défaut.";
+ print_DEBUG3 "Pas le bon filtre pour le parametre optionnel avec valeur par defaut.";
(parameter, body)
)
)
diff --git a/ocamldoc/remove_DEBUG b/ocamldoc/remove_DEBUG
index 7233afbac0..78b11e6128 100755
--- a/ocamldoc/remove_DEBUG
+++ b/ocamldoc/remove_DEBUG
@@ -18,4 +18,5 @@
# respecting the cpp # line annotation conventions
echo "# 1 \"$1\""
-LC_ALL=C sed -e '/DEBUG/s/.*//' "$1"
+LC_ALL=C sed -e '/DEBUG/c\
+(* DEBUG statement removed *)' "$1"
diff --git a/otherlibs/dynlink/.cvsignore b/otherlibs/dynlink/.cvsignore
index 5ea9775e1d..29b3102d19 100644
--- a/otherlibs/dynlink/.cvsignore
+++ b/otherlibs/dynlink/.cvsignore
@@ -1 +1,2 @@
extract_crc
+*.a
diff --git a/otherlibs/graph/.cvsignore b/otherlibs/graph/.cvsignore
index 074dd28a45..29fea47264 100644
--- a/otherlibs/graph/.cvsignore
+++ b/otherlibs/graph/.cvsignore
@@ -1 +1,3 @@
so_locations
+*.so
+*.a
diff --git a/otherlibs/systhreads/.cvsignore b/otherlibs/systhreads/.cvsignore
index b175e39d68..1f1e6a3877 100644
--- a/otherlibs/systhreads/.cvsignore
+++ b/otherlibs/systhreads/.cvsignore
@@ -1,3 +1,5 @@
*.x
thread.ml
so_locations
+*.so
+*.a
diff --git a/otherlibs/threads/.cvsignore b/otherlibs/threads/.cvsignore
index fb2df562de..c17596c7d0 100644
--- a/otherlibs/threads/.cvsignore
+++ b/otherlibs/threads/.cvsignore
@@ -1,3 +1,5 @@
marshal.mli
pervasives.mli
unix.mli
+*.so
+*.a
diff --git a/otherlibs/threads/.depend b/otherlibs/threads/.depend
index 8d262a6a1f..38f2d528d2 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/unix/.cvsignore b/otherlibs/unix/.cvsignore
index 074dd28a45..29fea47264 100644
--- a/otherlibs/unix/.cvsignore
+++ b/otherlibs/unix/.cvsignore
@@ -1 +1,3 @@
so_locations
+*.so
+*.a
diff --git a/otherlibs/unix/socketaddr.c b/otherlibs/unix/socketaddr.c
index 0ee1cf5ee1..f285d15a7b 100644
--- a/otherlibs/unix/socketaddr.c
+++ b/otherlibs/unix/socketaddr.c
@@ -80,6 +80,9 @@ void get_sockaddr(value mladr,
adr->s_inet6.sin6_family = AF_INET6;
adr->s_inet6.sin6_addr = GET_INET6_ADDR(Field(mladr, 0));
adr->s_inet6.sin6_port = htons(Int_val(Field(mladr, 1)));
+#ifdef SIN6_LEN
+ adr->s_inet6.sin6_len = sizeof(struct sockaddr_in6);
+#endif
*adr_len = sizeof(struct sockaddr_in6);
break;
}
@@ -88,6 +91,9 @@ void get_sockaddr(value mladr,
adr->s_inet.sin_family = AF_INET;
adr->s_inet.sin_addr = GET_INET_ADDR(Field(mladr, 0));
adr->s_inet.sin_port = htons(Int_val(Field(mladr, 1)));
+#ifdef SIN6_LEN
+ adr->s_inet.sin_len = sizeof(struct sockaddr_in);
+#endif
*adr_len = sizeof(struct sockaddr_in);
break;
}
diff --git a/parsing/parser.mly b/parsing/parser.mly
index 8f0d69a0d9..a2a2a7b4c0 100644
--- a/parsing/parser.mly
+++ b/parsing/parser.mly
@@ -1423,7 +1423,13 @@ signed_constant:
| MINUS INT32 { Const_int32(Int32.neg $2) }
| MINUS INT64 { Const_int64(Int64.neg $2) }
| MINUS NATIVEINT { Const_nativeint(Nativeint.neg $2) }
+ | PLUS INT { Const_int $2 }
+ | PLUS FLOAT { Const_float $2 }
+ | PLUS INT32 { Const_int32 $2 }
+ | PLUS INT64 { Const_int64 $2 }
+ | PLUS NATIVEINT { Const_nativeint $2 }
;
+
/* Identifiers and long identifiers */
ident:
diff --git a/stdlib/.cvsignore b/stdlib/.cvsignore
index 343f6abd6a..6aa0cd421b 100644
--- a/stdlib/.cvsignore
+++ b/stdlib/.cvsignore
@@ -4,3 +4,4 @@ labelled-*
caml
*.annot
sys.ml
+*.a
diff --git a/stdlib/.depend b/stdlib/.depend
index faa3382181..5e8aefbba4 100644
--- a/stdlib/.depend
+++ b/stdlib/.depend
@@ -1,6 +1,6 @@
arg.cmi:
-array.cmi:
arrayLabels.cmi:
+array.cmi:
buffer.cmi:
callback.cmi:
camlinternalLazy.cmi:
@@ -10,7 +10,7 @@ char.cmi:
complex.cmi:
digest.cmi:
filename.cmi:
-format.cmi: buffer.cmi
+format.cmi: pervasives.cmi buffer.cmi
gc.cmi:
genlex.cmi: stream.cmi
hashtbl.cmi:
@@ -18,8 +18,8 @@ int32.cmi:
int64.cmi:
lazy.cmi:
lexing.cmi:
-list.cmi:
listLabels.cmi:
+list.cmi:
map.cmi:
marshal.cmi:
moreLabels.cmi: set.cmi map.cmi hashtbl.cmi
@@ -38,16 +38,16 @@ sort.cmi:
stack.cmi:
stdLabels.cmi:
stream.cmi:
-string.cmi:
stringLabels.cmi:
+string.cmi:
sys.cmi:
weak.cmi: hashtbl.cmi
arg.cmo: sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi arg.cmi
arg.cmx: sys.cmx string.cmx printf.cmx list.cmx buffer.cmx array.cmx arg.cmi
-array.cmo: array.cmi
-array.cmx: array.cmi
arrayLabels.cmo: array.cmi arrayLabels.cmi
arrayLabels.cmx: array.cmx arrayLabels.cmi
+array.cmo: array.cmi
+array.cmx: array.cmi
buffer.cmo: sys.cmi string.cmi buffer.cmi
buffer.cmx: sys.cmx string.cmx buffer.cmi
callback.cmo: obj.cmi callback.cmi
@@ -86,10 +86,10 @@ lazy.cmo: obj.cmi camlinternalLazy.cmi lazy.cmi
lazy.cmx: obj.cmx camlinternalLazy.cmx lazy.cmi
lexing.cmo: sys.cmi string.cmi array.cmi lexing.cmi
lexing.cmx: sys.cmx string.cmx array.cmx lexing.cmi
-list.cmo: list.cmi
-list.cmx: list.cmi
listLabels.cmo: list.cmi listLabels.cmi
listLabels.cmx: list.cmx listLabels.cmi
+list.cmo: list.cmi
+list.cmx: list.cmi
map.cmo: map.cmi
map.cmx: map.cmi
marshal.cmo: string.cmi marshal.cmi
@@ -98,8 +98,8 @@ moreLabels.cmo: set.cmi map.cmi hashtbl.cmi moreLabels.cmi
moreLabels.cmx: set.cmx map.cmx hashtbl.cmx moreLabels.cmi
nativeint.cmo: sys.cmi pervasives.cmi nativeint.cmi
nativeint.cmx: sys.cmx pervasives.cmx nativeint.cmi
-obj.cmo: marshal.cmi obj.cmi
-obj.cmx: marshal.cmx obj.cmi
+obj.cmo: marshal.cmi array.cmi obj.cmi
+obj.cmx: marshal.cmx array.cmx obj.cmi
oo.cmo: camlinternalOO.cmi oo.cmi
oo.cmx: camlinternalOO.cmx oo.cmi
parsing.cmo: obj.cmi lexing.cmi array.cmi parsing.cmi
@@ -108,10 +108,10 @@ pervasives.cmo: pervasives.cmi
pervasives.cmx: pervasives.cmi
printexc.cmo: printf.cmi obj.cmi buffer.cmi array.cmi printexc.cmi
printexc.cmx: printf.cmx obj.cmx buffer.cmx array.cmx printexc.cmi
-printf.cmo: string.cmi obj.cmi list.cmi char.cmi buffer.cmi array.cmi \
- printf.cmi
-printf.cmx: string.cmx obj.cmx list.cmx char.cmx buffer.cmx array.cmx \
- printf.cmi
+printf.cmo: string.cmi pervasives.cmi obj.cmi list.cmi char.cmi buffer.cmi \
+ array.cmi printf.cmi
+printf.cmx: string.cmx pervasives.cmx obj.cmx list.cmx char.cmx buffer.cmx \
+ array.cmx printf.cmi
queue.cmo: obj.cmi queue.cmi
queue.cmx: obj.cmx queue.cmi
random.cmo: string.cmi pervasives.cmi nativeint.cmi int64.cmi int32.cmi \
@@ -128,16 +128,16 @@ sort.cmo: array.cmi sort.cmi
sort.cmx: array.cmx sort.cmi
stack.cmo: list.cmi stack.cmi
stack.cmx: list.cmx stack.cmi
-stdLabels.cmo: stringLabels.cmi listLabels.cmi arrayLabels.cmi stdLabels.cmi
-stdLabels.cmx: stringLabels.cmx listLabels.cmx arrayLabels.cmx stdLabels.cmi
std_exit.cmo:
std_exit.cmx:
+stdLabels.cmo: stringLabels.cmi listLabels.cmi arrayLabels.cmi stdLabels.cmi
+stdLabels.cmx: stringLabels.cmx listLabels.cmx arrayLabels.cmx stdLabels.cmi
stream.cmo: string.cmi obj.cmi list.cmi lazy.cmi stream.cmi
stream.cmx: string.cmx obj.cmx list.cmx lazy.cmx stream.cmi
-string.cmo: pervasives.cmi list.cmi char.cmi string.cmi
-string.cmx: pervasives.cmx list.cmx char.cmx string.cmi
stringLabels.cmo: string.cmi stringLabels.cmi
stringLabels.cmx: string.cmx stringLabels.cmi
+string.cmo: pervasives.cmi list.cmi char.cmi string.cmi
+string.cmx: pervasives.cmx list.cmx char.cmx string.cmi
sys.cmo: sys.cmi
sys.cmx: sys.cmi
weak.cmo: sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi
diff --git a/stdlib/buffer.ml b/stdlib/buffer.ml
index 8dfe875993..0888409813 100644
--- a/stdlib/buffer.ml
+++ b/stdlib/buffer.ml
@@ -39,6 +39,14 @@ let sub b ofs len =
end
;;
+let blit src srcoff dst dstoff len =
+ if len < 0 || srcoff < 0 || srcoff > src.position - len
+ || dstoff < 0 || dstoff > (String.length dst) - len
+ then invalid_arg "Buffer.blit"
+ else
+ String.blit src.buffer srcoff dst dstoff len
+;;
+
let nth b ofs =
if ofs < 0 || ofs >= b.position then
invalid_arg "Buffer.nth"
diff --git a/stdlib/buffer.mli b/stdlib/buffer.mli
index d7afbb1833..32d15349e4 100644
--- a/stdlib/buffer.mli
+++ b/stdlib/buffer.mli
@@ -48,6 +48,15 @@ current contents of the buffer [b] starting at offset [off] of length
[len] bytes. May raise [Invalid_argument] if out of bounds request. The
buffer itself is unaffected. *)
+val blit : t -> int -> string -> int -> int -> unit
+(** [Buffer.blit src srcoff dst dstoff len] copies [len] characters from
+ the current contents of the buffer [src], starting at offset [srcoff]
+ to string [dst], starting at character [dstoff].
+
+ Raise [Invalid_argument] if [srcoff] and [len] do not designate a valid
+ substring of [src], or if [dstoff] and [len] do not designate a valid
+ substring of [dst]. *)
+
val nth : t -> int -> char
(** get the n-th character of the buffer. Raise [Invalid_argument] if
index out of bounds *)
diff --git a/stdlib/filename.ml b/stdlib/filename.ml
index d3a68cf632..e11f1e3304 100644
--- a/stdlib/filename.ml
+++ b/stdlib/filename.ml
@@ -194,14 +194,14 @@ external close_desc: int -> unit = "caml_sys_close"
let prng = Random.State.make_self_init ();;
-let temp_file_name prefix suffix =
+let temp_file_name temp_dir prefix suffix =
let rnd = (Random.State.bits prng) land 0xFFFFFF in
- concat temp_dir_name (Printf.sprintf "%s%06x%s" prefix rnd suffix)
+ concat temp_dir (Printf.sprintf "%s%06x%s" prefix rnd suffix)
;;
-let temp_file prefix suffix =
+let temp_file ?(temp_dir=temp_dir_name) prefix suffix =
let rec try_name counter =
- let name = temp_file_name prefix suffix in
+ let name = temp_file_name temp_dir prefix suffix in
try
close_desc(open_desc name [Open_wronly; Open_creat; Open_excl] 0o600);
name
@@ -209,9 +209,9 @@ let temp_file prefix suffix =
if counter >= 1000 then raise e else try_name (counter + 1)
in try_name 0
-let open_temp_file ?(mode = [Open_text]) prefix suffix =
+let open_temp_file ?(mode = [Open_text]) ?(temp_dir=temp_dir_name) prefix suffix =
let rec try_name counter =
- let name = temp_file_name prefix suffix in
+ let name = temp_file_name temp_dir prefix suffix in
try
(name,
open_out_gen (Open_wronly::Open_creat::Open_excl::mode) 0o600 name)
diff --git a/stdlib/filename.mli b/stdlib/filename.mli
index 3a968e0a1f..e016609527 100644
--- a/stdlib/filename.mli
+++ b/stdlib/filename.mli
@@ -22,6 +22,9 @@ val parent_dir_name : string
(** The conventional name for the parent of the current directory
(e.g. [..] in Unix). *)
+val dir_sep : string
+(** The directory separator (e.g. [/] in Unix). *)
+
val concat : string -> string -> string
(** [concat dir file] returns a file name that designates file
[file] in directory [dir]. *)
@@ -68,11 +71,13 @@ val basename : string -> string
val dirname : string -> string
(** See {!Filename.basename}. *)
-val temp_file : string -> string -> string
+val temp_file : ?temp_dir: string -> string -> string -> string
(** [temp_file prefix suffix] returns the name of a
fresh temporary file in the temporary directory.
The base name of the temporary file is formed by concatenating
[prefix], then a suitably chosen integer number, then [suffix].
+ The optional argument [temp_dir] indicates the temporary directory
+ to use, defaulting to {!Filename.temp_dir_name}.
The temporary file is created empty, with permissions [0o600]
(readable and writable only by the file owner). The file is
guaranteed to be different from any other file that existed when
@@ -80,7 +85,7 @@ val temp_file : string -> string -> string
*)
val open_temp_file :
- ?mode: open_flag list -> string -> string -> string * out_channel
+ ?mode: open_flag list -> ?temp_dir: string -> string -> string -> string * out_channel
(** Same as {!Filename.temp_file}, but returns both the name of a fresh
temporary file, and an output channel opened (atomically) on
this file. This function is more secure than [temp_file]: there
diff --git a/stdlib/format.mli b/stdlib/format.mli
index dcb2ad4700..e805d83ce0 100644
--- a/stdlib/format.mli
+++ b/stdlib/format.mli
@@ -72,7 +72,6 @@
the evaluation order of printing commands.
*)
-
(** {6 Boxes} *)
val open_box : int -> unit;;
@@ -112,7 +111,6 @@ val print_char : char -> unit;;
val print_bool : bool -> unit;;
(** Prints a boolean in the current box. *)
-
(** {6 Break hints} *)
val print_space : unit -> unit;;
@@ -156,7 +154,6 @@ val print_if_newline : unit -> unit;;
has just been split. Otherwise, ignore the next formatting
command. *)
-
(** {6 Margin} *)
val set_margin : int -> unit;;
@@ -170,7 +167,6 @@ val set_margin : int -> unit;;
val get_margin : unit -> int;;
(** Returns the position of the right margin. *)
-
(** {6 Maximum indentation limit} *)
val set_max_indent : int -> unit;;
@@ -201,7 +197,6 @@ val get_max_boxes : unit -> int;;
val over_max_boxes : unit -> bool;;
(** Tests if the maximum number of boxes allowed have already been opened. *)
-
(** {6 Advanced formatting} *)
val open_hbox : unit -> unit;;
@@ -235,7 +230,6 @@ val open_hovbox : int -> unit;;
When a new line is printed in the box, [d] is added to the
current indentation. *)
-
(** {6 Tabulations} *)
val open_tbox : unit -> unit;;
@@ -260,8 +254,7 @@ val set_tab : unit -> unit;;
(** Sets a tabulation mark at the current insertion point. *)
val print_tab : unit -> unit;;
-(** [print_tab ()] is equivalent to [print_tbreak (0,0)]. *)
-
+(** [print_tab ()] is equivalent to [print_tbreak 0 0]. *)
(** {6 Ellipsis} *)
@@ -272,14 +265,13 @@ val set_ellipsis_text : string -> unit;;
val get_ellipsis_text : unit -> string;;
(** Return the text of the ellipsis. *)
-
-(** {6 Tags} *)
+(** {6 Semantics Tags} *)
type tag = string;;
-(** Tags are used to decorate printed entities for user's defined
- purposes, e.g. setting font and giving size indications for a
- display device, or marking delimitations of semantics entities
+(** {i Semantics tags} (or simply {e tags}) are used to decorate printed
+ entities for user's defined purposes, e.g. setting font and giving size
+ indications for a display device, or marking delimitation of semantics entities
(e.g. HTML or TeX elements or terminal escape sequences).
By default, those tags do not influence line breaking calculation:
@@ -293,7 +285,7 @@ type tag = string;;
material or richer decorated output depending on the treatment of
tags. By default, tags are not active, hence the output is not
decorated with tag information. Once [set_tags] is set to [true],
- the pretty printer engine honors tags and decorates the output
+ the pretty printer engine honours tags and decorates the output
accordingly.
When a tag has been opened (or closed), it is both and successively
@@ -345,10 +337,9 @@ val get_print_tags : unit -> bool;;
val get_mark_tags : unit -> bool;;
(** Return the current status of tags printing and tags marking. *)
+(** {6 Redirecting the standard formatter output} *)
-(** {6 Redirecting formatter output} *)
-
-val set_formatter_out_channel : out_channel -> unit;;
+val set_formatter_out_channel : Pervasives.out_channel -> unit;;
(** Redirect the pretty-printer output to the given channel. *)
val set_formatter_output_functions :
@@ -356,17 +347,56 @@ val set_formatter_output_functions :
(** [set_formatter_output_functions out flush] redirects the
pretty-printer output to the functions [out] and [flush].
- The [out] function performs the pretty-printer output. It is called
+ The [out] function performs the pretty-printer string output. It is called
with a string [s], a start position [p], and a number of characters
[n]; it is supposed to output characters [p] to [p + n - 1] of
[s]. The [flush] function is called whenever the pretty-printer is
- flushed using [print_flush] or [print_newline]. *)
+ flushed (via conversion [%!], pretty-printing indications [@?] or [@.],
+ or using low level function [print_flush] or [print_newline]). *)
val get_formatter_output_functions :
unit -> (string -> int -> int -> unit) * (unit -> unit);;
(** Return the current output functions of the pretty-printer. *)
-(** {6 Changing the meaning of printing tags} *)
+(** {6 Changing the meaning of standard formatter pretty printing} *)
+
+(** The [Format] module is versatile enough to let you completely redefine
+ the meaning of pretty printing: you may provide your own functions to define
+ how to handle indentation, line breaking, and even printing of all the
+ characters that have to be printed! *)
+
+val set_all_formatter_output_functions :
+ out:(string -> int -> int -> unit) ->
+ flush:(unit -> unit) ->
+ newline:(unit -> unit) ->
+ spaces:(int -> unit) ->
+ unit;;
+(** [set_all_formatter_output_functions out flush outnewline outspace]
+ redirects the pretty-printer output to the functions [out] and
+ [flush] as described in [set_formatter_output_functions]. In
+ addition, the pretty-printer function that outputs a newline is set
+ to the function [outnewline] and the function that outputs
+ indentation spaces is set to the function [outspace].
+
+ This way, you can change the meaning of indentation (which can be
+ something else than just printing space characters) and the
+ meaning of new lines opening (which can be connected to any other
+ action needed by the application at hand). The two functions
+ [outspace] and [outnewline] are normally connected to [out] and
+ [flush]: respective default values for [outspace] and [outnewline]
+ are [out (String.make n ' ') 0 n] and [out "\n" 0 1]. *)
+
+val get_all_formatter_output_functions :
+ unit ->
+ (string -> int -> int -> unit) *
+ (unit -> unit) *
+ (unit -> unit) *
+ (int -> unit);;
+(** Return the current output functions of the pretty-printer,
+ including line breaking and indentation functions. Useful to record the
+ current setting and restore it afterwards. *)
+
+(** {6 Changing the meaning of printing semantics tags} *)
type formatter_tag_functions = {
mark_open_tag : tag -> string;
@@ -403,56 +433,22 @@ val get_formatter_tag_functions :
unit -> formatter_tag_functions;;
(** Return the current tag functions of the pretty-printer. *)
-(** {6 Changing the meaning of pretty printing (indentation, line breaking,
- and printing material)} *)
-
-val set_all_formatter_output_functions :
- out:(string -> int -> int -> unit) ->
- flush:(unit -> unit) ->
- newline:(unit -> unit) ->
- spaces:(int -> unit) ->
- unit;;
-(** [set_all_formatter_output_functions out flush outnewline outspace]
- redirects the pretty-printer output to the functions [out] and
- [flush] as described in [set_formatter_output_functions]. In
- addition, the pretty-printer function that outputs a newline is set
- to the function [outnewline] and the function that outputs
- indentation spaces is set to the function [outspace].
-
- This way, you can change the meaning of indentation (which can be
- something else than just printing space characters) and the
- meaning of new lines opening (which can be connected to any other
- action needed by the application at hand). The two functions
- [outspace] and [outnewline] are normally connected to [out] and
- [flush]: respective default values for [outspace] and [outnewline]
- are [out (String.make n ' ') 0 n] and [out "\n" 0 1]. *)
-
-val get_all_formatter_output_functions :
- unit ->
- (string -> int -> int -> unit) *
- (unit -> unit) *
- (unit -> unit) *
- (int -> unit);;
-(** Return the current output functions of the pretty-printer,
- including line breaking and indentation functions. *)
-
-
(** {6 Multiple formatted output} *)
type formatter;;
(** Abstract data type corresponding to a pretty-printer (also called a
- formatter) and all its machinery.
- Defining new pretty-printers permits the output of
- material in parallel on several channels.
- Parameters of a pretty-printer are local to this pretty-printer:
- margin, maximum indentation limit, maximum number of boxes
- simultaneously opened, ellipsis, and so on, are specific to
- each pretty-printer and may be fixed independently.
- Given an output channel [oc], a new formatter writing to
- that channel is obtained by calling [formatter_of_out_channel oc].
- Alternatively, the [make_formatter] function allocates a new
- formatter with explicit output and flushing functions
- (convenient to output material to strings for instance). *)
+ formatter) and all its machinery.
+ Defining new pretty-printers permits the output of
+ material in parallel on several channels.
+ Parameters of a pretty-printer are local to this pretty-printer:
+ margin, maximum indentation limit, maximum number of boxes
+ simultaneously opened, ellipsis, and so on, are specific to
+ each pretty-printer and may be fixed independently.
+ Given an output channel [oc], a new formatter writing to
+ that channel is obtained by calling [formatter_of_out_channel oc].
+ Alternatively, the [make_formatter] function allocates a new
+ formatter with explicit output and flushing functions
+ (convenient to output material to strings for instance). *)
val formatter_of_out_channel : out_channel -> formatter;;
(** [formatter_of_out_channel oc] returns a new formatter that
diff --git a/stdlib/obj.ml b/stdlib/obj.ml
index 9685be38ff..922febd65c 100644
--- a/stdlib/obj.ml
+++ b/stdlib/obj.ml
@@ -27,9 +27,12 @@ external set_tag : t -> int -> unit = "caml_obj_set_tag"
external size : t -> int = "%obj_size"
external field : t -> int -> t = "%obj_field"
external set_field : t -> int -> t -> unit = "%obj_set_field"
+let double_field x i = Array.get (obj x : float array) i
+let set_double_field x i v = Array.set (obj x : float array) i v
external new_block : int -> int -> t = "caml_obj_block"
external dup : t -> t = "caml_obj_dup"
external truncate : t -> int -> unit = "caml_obj_truncate"
+external add_offset : t -> int -> t = "caml_obj_add_offset"
let marshal (obj : t) =
Marshal.to_string obj []
diff --git a/stdlib/obj.mli b/stdlib/obj.mli
index a35b119bde..34b78fdb4a 100644
--- a/stdlib/obj.mli
+++ b/stdlib/obj.mli
@@ -28,11 +28,14 @@ external is_int : t -> bool = "%obj_is_int"
external tag : t -> int = "caml_obj_tag"
external set_tag : t -> int -> unit = "caml_obj_set_tag"
external size : t -> int = "%obj_size"
-external truncate : t -> int -> unit = "caml_obj_truncate"
external field : t -> int -> t = "%obj_field"
external set_field : t -> int -> t -> unit = "%obj_set_field"
+val double_field : t -> int -> float
+val set_double_field : t -> int -> float -> unit
external new_block : int -> int -> t = "caml_obj_block"
external dup : t -> t = "caml_obj_dup"
+external truncate : t -> int -> unit = "caml_obj_truncate"
+external add_offset : t -> int -> t = "caml_obj_add_offset"
val lazy_tag : int
val closure_tag : int
diff --git a/stdlib/pervasives.ml b/stdlib/pervasives.ml
index 9e34cf2fd4..7cc4ba6144 100644
--- a/stdlib/pervasives.ml
+++ b/stdlib/pervasives.ml
@@ -398,7 +398,7 @@ external incr: int ref -> unit = "%incr"
external decr: int ref -> unit = "%decr"
(* Formats *)
-type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6
+type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6
type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4
@@ -416,7 +416,8 @@ let (( ^^ ) :
('f, 'b, 'c, 'e, 'g, 'h) format6 ->
('a, 'b, 'c, 'd, 'g, 'h) format6) =
fun fmt1 fmt2 ->
- string_to_format (format_to_string fmt1 ^ format_to_string fmt2);;
+ string_to_format (format_to_string fmt1 ^ "%," ^ format_to_string fmt2)
+;;
let string_of_format fmt =
let s = format_to_string fmt in
diff --git a/stdlib/pervasives.mli b/stdlib/pervasives.mli
index 97ee3c94b8..c788901ce0 100644
--- a/stdlib/pervasives.mli
+++ b/stdlib/pervasives.mli
@@ -71,7 +71,7 @@ external ( >= ) : 'a -> 'a -> bool = "%greaterequal"
The ordering is compatible with [(=)]. As in the case
of [(=)], mutable structures are compared by contents.
Comparison between functional values raises [Invalid_argument].
- Comparison between cyclic structures does not terminate. *)
+ Comparison between cyclic structures may not terminate. *)
external compare : 'a -> 'a -> int = "%compare"
(** [compare x y] returns [0] if [x] is equal to [y],
@@ -93,10 +93,14 @@ external compare : 'a -> 'a -> int = "%compare"
the {!List.sort} and {!Array.sort} functions. *)
val min : 'a -> 'a -> 'a
-(** Return the smaller of the two arguments. *)
+(** Return the smaller of the two arguments.
+ The result is unspecified if one of the arguments contains
+ the float value [nan]. *)
val max : 'a -> 'a -> 'a
-(** Return the greater of the two arguments. *)
+(** Return the greater of the two arguments.
+ The result is unspecified if one of the arguments contains
+ the float value [nan]. *)
external ( == ) : 'a -> 'a -> bool = "%eq"
(** [e1 == e2] tests for physical equality of [e1] and [e2].
@@ -226,8 +230,8 @@ external ( asr ) : int -> int -> int = "%asrint"
[neg_infinity] for [-1.0 /. 0.0], and [nan] (``not a number'')
for [0.0 /. 0.0]. These special numbers then propagate through
floating-point computations as expected: for instance,
- [1.0 /. infinity] is [0.0], and any operation with [nan] as
- argument returns [nan] as result.
+ [1.0 /. infinity] is [0.0], and any arithmetic operation with [nan]
+ as argument returns [nan] as result.
*)
external ( ~-. ) : float -> float = "%negfloat"
diff --git a/stdlib/printexc.ml b/stdlib/printexc.ml
index f06717c274..11e7d4fd6e 100644
--- a/stdlib/printexc.ml
+++ b/stdlib/printexc.ml
@@ -15,6 +15,8 @@
open Printf;;
+let printers = ref []
+
let locfmt = format_of_string "File \"%s\", line %d, characters %d-%d: %s";;
let field x i =
@@ -48,9 +50,16 @@ let to_string = function
| Assert_failure(file, line, char) ->
sprintf locfmt file line char (char+6) "Assertion failed"
| x ->
- let x = Obj.repr x in
- let constructor = (Obj.magic(Obj.field (Obj.field x 0) 0) : string) in
- constructor ^ (fields x)
+ let rec conv = function
+ | hd :: tl ->
+ (match try hd x with _ -> None with
+ | Some s -> s
+ | None -> conv tl)
+ | [] ->
+ let x = Obj.repr x in
+ let constructor = (Obj.magic(Obj.field (Obj.field x 0) 0) : string) in
+ constructor ^ (fields x) in
+ conv !printers
;;
let print fct arg =
@@ -125,3 +134,5 @@ let get_backtrace () =
external record_backtrace: bool -> unit = "caml_record_backtrace"
external backtrace_status: unit -> bool = "caml_backtrace_status"
+let register_printer fn =
+ printers := fn :: !printers
diff --git a/stdlib/printexc.mli b/stdlib/printexc.mli
index a3ae6ba7b4..99729e10fd 100644
--- a/stdlib/printexc.mli
+++ b/stdlib/printexc.mli
@@ -57,3 +57,13 @@ val record_backtrace: bool -> unit
val backtrace_status: unit -> bool
(** [Printexc.backtrace_status()] returns [true] if exception
backtraces are currently recorded, [false] if not. *)
+
+val register_printer : (exn -> string option) -> unit
+(** [Printexc.register_printer fn] registers [fn] as an exception printer.
+ The printer should return [None] if it does not know how to convert
+ the passed exception, and [Some s] with [s] the resulting string if
+ it can convert the passed exception.
+ When converting an exception into a string, the printers will be invoked
+ in the reverse order of their registrations, until a printer returns
+ a [Some s] value (if no such printer exists, the runtime will use a
+ generic printer). *)
diff --git a/stdlib/printf.ml b/stdlib/printf.ml
index a061af7359..6bdd1c15a8 100644
--- a/stdlib/printf.ml
+++ b/stdlib/printf.ml
@@ -39,8 +39,8 @@ module Sformat = struct
let add_int_index i idx = index_of_int (i + int_of_index idx);;
let succ_index = add_int_index 1;;
- (* Litteral position are one-based (hence pred p instead of p). *)
- let index_of_litteral_position p = index_of_int (pred p);;
+ (* Literal position are one-based (hence pred p instead of p). *)
+ let index_of_literal_position p = index_of_int (pred p);;
external length : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> int
= "%string_length"
@@ -122,12 +122,12 @@ let extract_format fmt start stop widths =
let skip_positional_spec start =
match Sformat.unsafe_get fmt start with
| '0'..'9' ->
- let rec skip_int_litteral i =
+ let rec skip_int_literal i =
match Sformat.unsafe_get fmt i with
- | '0'..'9' -> skip_int_litteral (succ i)
+ | '0'..'9' -> skip_int_literal (succ i)
| '$' -> succ i
| _ -> start in
- skip_int_litteral (succ start)
+ skip_int_literal (succ start)
| _ -> start in
let start = skip_positional_spec (succ start) in
let b = Buffer.create (stop - start + 10) in
@@ -140,7 +140,7 @@ let extract_format fmt start stop widths =
let i = skip_positional_spec (succ i) in
fill_format i t
| ('*', []) ->
- assert false (* should not happen *)
+ assert false (* Should not happen since this is ill-typed. *)
| (c, _) ->
Buffer.add_char b c;
fill_format (succ i) widths in
@@ -161,7 +161,7 @@ let extract_format_float conv fmt start stop widths =
let sfmt = extract_format fmt start stop widths in
match conv with
| 'F' ->
- sfmt.[String.length sfmt - 1] <- 'f';
+ sfmt.[String.length sfmt - 1] <- 'g';
sfmt
| _ -> sfmt
;;
@@ -169,7 +169,7 @@ let extract_format_float conv fmt start stop widths =
(* Returns the position of the next character following the meta format
string, starting from position [i], inside a given format [fmt].
According to the character [conv], the meta format string is
- enclosed by the delimitors %{ and %} (when [conv = '{']) or %( and
+ enclosed by the delimiters %{ and %} (when [conv = '{']) or %( and
%) (when [conv = '(']). Hence, [sub_format] returns the index of
the character following the [')'] or ['}'] that ends the meta format,
according to the character [conv]. *)
@@ -215,7 +215,7 @@ let iter_on_format_args fmt add_conv add_char =
and scan_conv skip i =
if i > lim then incomplete_format fmt else
match Sformat.unsafe_get fmt i with
- | '%' | '!' -> succ i
+ | '%' | '!' | ',' -> succ i
| 's' | 'S' | '[' -> add_conv skip i 's'
| 'c' | 'C' -> add_conv skip i 'c'
| 'd' | 'i' |'o' | 'u' | 'x' | 'X' | 'N' -> add_conv skip i 'i'
@@ -307,6 +307,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. *)
ac.ac_rglr
;;
@@ -384,7 +385,7 @@ type positional_specification =
Unfortunately, the type of a parameter specified via a [*$] positional
specification should be the type of the corresponding argument to
- [printf], hence this sould be the type of the $n$-th argument to [printf]
+ [printf], hence this should be the type of the $n$-th argument to [printf]
with $n$ being the {\em value} of the integer argument defining [*]; we
clearly cannot statically guess the value of this parameter in the general
case. Put it another way: this means type dependency, which is completely
@@ -393,19 +394,19 @@ type positional_specification =
let scan_positional_spec fmt got_spec n i =
match Sformat.unsafe_get fmt i with
| '0'..'9' as d ->
- let rec get_int_litteral accu j =
+ let rec get_int_literal accu j =
match Sformat.unsafe_get fmt j with
| '0'..'9' as d ->
- get_int_litteral (10 * accu + (int_of_char d - 48)) (succ j)
+ get_int_literal (10 * accu + (int_of_char d - 48)) (succ j)
| '$' ->
if accu = 0 then
failwith "printf: bad positional specification (0)." else
- got_spec (Spec_index (Sformat.index_of_litteral_position accu)) (succ j)
+ got_spec (Spec_index (Sformat.index_of_literal_position accu)) (succ j)
(* Not a positional specification: tell so the caller, and go back to
scanning the format from the original [i] position we were called at
first. *)
| _ -> got_spec Spec_none i in
- get_int_litteral (int_of_char d - 48) (succ i)
+ get_int_literal (int_of_char d - 48) (succ i)
(* No positional specification: tell so the caller, and go back to scanning
the format from the original [i] position. *)
| _ -> got_spec Spec_none i
@@ -427,15 +428,12 @@ let get_index spec n =
| Spec_index p -> p
;;
-(* Format a float argument as a valid Caml lexem. *)
-let format_float_lexem =
- let valid_float_lexem sfmt s =
+(* Format a float argument as a valid Caml lexeme. *)
+let format_float_lexeme =
+ let valid_float_lexeme sfmt s =
let l = String.length s in
if l = 0 then "nan" else
- let add_dot sfmt s =
- if s.[0] = ' ' || s.[0] = '+' || s.[0] = '0'
- then String.sub s 1 (l - 1) ^ "."
- else String.sub s 0 (l - 1) ^ "." in
+ let add_dot sfmt s = s ^ "." in
let rec loop i =
if i >= l then add_dot sfmt s else
@@ -448,7 +446,7 @@ let format_float_lexem =
(fun sfmt x ->
let s = format_float sfmt x in
match classify_float x with
- | FP_normal | FP_subnormal | FP_zero -> valid_float_lexem sfmt s
+ | FP_normal | FP_subnormal | FP_zero -> valid_float_lexeme sfmt s
| FP_nan | FP_infinite -> s)
;;
@@ -470,8 +468,8 @@ let format_float_lexem =
(* Note: here, rather than test explicitly against [Sformat.length fmt]
to detect the end of the format, we use [Sformat.unsafe_get] and
- rely on the fact that we'll get a "nul" character if we access
- one past the end of the string. These "nul" characters are then
+ rely on the fact that we'll get a "null" character if we access
+ one past the end of the string. These "null" characters are then
caught by the [_ -> bad_conversion] clauses below.
Don't do this at home, kids. *)
let scan_format fmt args n pos cont_s cont_a cont_t cont_f cont_m =
@@ -502,7 +500,7 @@ let scan_format fmt args n pos cont_s cont_a cont_t cont_f cont_m =
let (x : string) = get_arg spec n in
let x = if conv = 's' then x else "\"" ^ String.escaped x ^ "\"" in
let s =
- (* optimize for common case %s *)
+ (* Optimize for common case %s *)
if i = succ pos then x else
format_string (extract_format fmt pos i widths) x in
cont_s (next_index spec n) s (succ i)
@@ -523,7 +521,8 @@ let scan_format fmt args n pos cont_s cont_a cont_t cont_f cont_m =
| 'F' as conv ->
let (x : float) = get_arg spec n in
let s =
- format_float_lexem (extract_format_float conv fmt pos i widths) x in
+ if widths = [] then Pervasives.string_of_float x else
+ format_float_lexeme (extract_format_float conv fmt pos i widths) x in
cont_s (next_index spec n) s (succ i)
| 'B' | 'b' ->
let (x : bool) = get_arg spec n in
@@ -560,6 +559,7 @@ let scan_format fmt args n pos cont_s cont_a cont_t cont_f cont_m =
let s = format_int (extract_format_int 'n' fmt pos i widths) x in
cont_s (next_index spec n) s (succ i)
end
+ | ',' -> cont_s n "" (succ i)
| '!' -> cont_f n (succ i)
| '{' | '(' as conv (* ')' '}' *) ->
let (xf : ('a, 'b, 'c, 'd, 'e, 'f) format6) = get_arg spec n in
diff --git a/stdlib/printf.mli b/stdlib/printf.mli
index 059779922b..43106505a3 100644
--- a/stdlib/printf.mli
+++ b/stdlib/printf.mli
@@ -78,6 +78,7 @@ val fprintf : out_channel -> ('a, out_channel, unit) format -> 'a
type as [fmt].
- [!]: take no argument and flush the output.
- [%]: take no argument and output one [%] character.
+ - [,]: the no-op delimiter for conversion specifications.
The optional [flags] are:
- [-]: left-justify the output (default is right justification).
diff --git a/stdlib/scanf.ml b/stdlib/scanf.ml
index 88a0f97f82..7cd018d3fb 100644
--- a/stdlib/scanf.ml
+++ b/stdlib/scanf.ml
@@ -47,16 +47,16 @@ val checked_peek_char : scanbuf -> char;;
input buffer has reached an end of file, the function raises exception
[End_of_file]. *)
-val store_char : scanbuf -> char -> int -> int;;
-(* [Scanning.store_char ib c lim] adds [c] to the token buffer
+val store_char : int -> scanbuf -> char -> int;;
+(* [Scanning.store_char lim ib c] adds [c] to the token buffer
of the scanning buffer. It also advances the scanning buffer for one
character and returns [lim - 1], indicating the new limit
for the length of the current token. *)
-val skip_char : scanbuf -> int -> int;;
-(* [Scanning.skip_char ib lim] ignores the current character. *)
+val skip_char : int -> scanbuf -> int;;
+(* [Scanning.skip_char lim ib] ignores the current character. *)
-val ignore_char : scanbuf -> int -> int;;
+val ignore_char : int -> scanbuf -> int;;
(* [Scanning.ignore_char ib lim] ignores the current character and
decrements the limit. *)
@@ -186,16 +186,16 @@ let token ib =
let token_count ib = ib.token_count;;
-let skip_char ib max =
+let skip_char max ib =
invalidate_current_char ib;
max
;;
-let ignore_char ib max = skip_char ib (max - 1);;
+let ignore_char max ib = skip_char (max - 1) ib;;
-let store_char ib c max =
+let store_char max ib c =
Buffer.add_char ib.tokbuf c;
- ignore_char ib max
+ ignore_char max ib
;;
let default_token_buffer_size = 1024;;
@@ -379,8 +379,8 @@ let incomplete_format fmt =
(Sformat.to_string fmt))
;;
-let bad_float () = bad_input "no dot or exponent part found in
-float token"
+let bad_float () =
+ bad_input "no dot or exponent part found in float token"
;;
let character_mismatch_err c ci =
@@ -407,11 +407,18 @@ let compatible_format_type fmt1 fmt2 =
In this case, the character c has been explicitely specified in the
format as being mandatory in the input; hence we should fail with
End_of_file in case of end_of_input.
- That's why we use checked_peek_char here. *)
-let check_char ib c =
+ That's why we use checked_peek_char here.
+ We are also careful to treat "\r\n" in the input as a end of line marker: it
+ always matches a '\n' specification in the input format string.
+ *)
+let rec check_char ib c =
let ci = Scanning.checked_peek_char ib in
- if ci = c then Scanning.invalidate_current_char ib else
- character_mismatch c ci
+ if ci = c then Scanning.invalidate_current_char ib else begin
+ match ci with
+ | '\r' when c = '\n' ->
+ Scanning.invalidate_current_char ib; check_char ib '\n'
+ | _ -> character_mismatch c ci
+ end
;;
(* Checks that the current char is indeed one of the stopper characters,
@@ -500,10 +507,10 @@ let rec scan_decimal_digits max ib =
if Scanning.eof ib then max else
match c with
| '0' .. '9' as c ->
- let max = Scanning.store_char ib c max in
+ let max = Scanning.store_char max ib c in
scan_decimal_digits max ib
| '_' ->
- let max = Scanning.ignore_char ib max in
+ let max = Scanning.ignore_char max ib in
scan_decimal_digits max ib
| _ -> max
;;
@@ -512,7 +519,7 @@ let scan_decimal_digits_plus max ib =
let c = Scanning.checked_peek_char ib in
match c with
| '0' .. '9' ->
- let max = Scanning.store_char ib c max in
+ let max = Scanning.store_char max ib c in
scan_decimal_digits max ib
| c -> bad_input_char c
;;
@@ -526,16 +533,16 @@ let scan_digits_plus digitp max ib =
if Scanning.eof ib then max else
match c with
| c when digitp c ->
- let max = Scanning.store_char ib c max in
+ let max = Scanning.store_char max ib c in
scan_digits max
| '_' ->
- let max = Scanning.ignore_char ib max in
+ let max = Scanning.ignore_char max ib in
scan_digits max
| _ -> max in
let c = Scanning.checked_peek_char ib in
if digitp c then
- let max = Scanning.store_char ib c max in
+ let max = Scanning.store_char max ib c in
scan_digits max
else bad_input_char c
;;
@@ -567,8 +574,8 @@ let scan_unsigned_decimal_int = scan_decimal_digits_plus;;
let scan_sign max ib =
let c = Scanning.checked_peek_char ib in
match c with
- | '+' -> Scanning.store_char ib c max
- | '-' -> Scanning.store_char ib c max
+ | '+' -> Scanning.store_char max ib c
+ | '-' -> Scanning.store_char max ib c
| c -> max
;;
@@ -584,14 +591,14 @@ let scan_optionally_signed_decimal_int max ib =
let scan_unsigned_int max ib =
match Scanning.checked_peek_char ib with
| '0' as c ->
- let max = Scanning.store_char ib c max in
+ let max = Scanning.store_char max ib c in
if max = 0 then max else
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
begin match c with
- | 'x' | 'X' -> scan_hexadecimal_int (Scanning.store_char ib c max) ib
- | 'o' -> scan_octal_int (Scanning.store_char ib c max) ib
- | 'b' -> scan_binary_int (Scanning.store_char ib c max) ib
+ | 'x' | 'X' -> scan_hexadecimal_int (Scanning.store_char max ib c) ib
+ | 'o' -> scan_octal_int (Scanning.store_char max ib c) ib
+ | 'b' -> scan_binary_int (Scanning.store_char max ib c) ib
| c -> scan_decimal_digits max ib end
| c -> scan_unsigned_decimal_int max ib
;;
@@ -620,7 +627,7 @@ let scan_frac_part max ib =
if Scanning.eof ib then max else
match c with
| '0' .. '9' as c ->
- scan_decimal_digits (Scanning.store_char ib c max) ib
+ scan_decimal_digits (Scanning.store_char max ib c) ib
| _ -> max
;;
@@ -631,7 +638,7 @@ let scan_exp_part max ib =
if Scanning.eof ib then max else
match c with
| 'e' | 'E' as c ->
- scan_optionally_signed_decimal_int (Scanning.store_char ib c max) ib
+ scan_optionally_signed_decimal_int (Scanning.store_char max ib c) ib
| _ -> max
;;
@@ -651,7 +658,7 @@ let scan_float max ib =
if Scanning.eof ib then max else
match c with
| '.' ->
- let max = Scanning.store_char ib c max in
+ let max = Scanning.store_char max ib c in
let max = scan_frac_part max ib in
scan_exp_part max ib
| c -> scan_exp_part max ib
@@ -664,7 +671,7 @@ let scan_Float max ib =
if Scanning.eof ib then bad_float () else
match c with
| '.' ->
- let max = Scanning.store_char ib c max in
+ let max = Scanning.store_char max ib c in
let max = scan_frac_part max ib in
scan_exp_part max ib
| 'e' | 'E' ->
@@ -683,15 +690,15 @@ let scan_string stp max ib =
if stp = [] then
match c with
| ' ' | '\t' | '\n' | '\r' -> max
- | c -> loop (Scanning.store_char ib c max) else
- if List.memq c stp then Scanning.skip_char ib max else
- loop (Scanning.store_char ib c max) in
+ | c -> loop (Scanning.store_char max ib c) else
+ if List.memq c stp then Scanning.skip_char max ib else
+ loop (Scanning.store_char max ib c) in
loop max
;;
(* Scan a char: peek strictly one character in the input, whatsoever. *)
let scan_char max ib =
- Scanning.store_char ib (Scanning.checked_peek_char ib) max
+ Scanning.store_char max ib (Scanning.checked_peek_char ib)
;;
let char_for_backslash = function
@@ -704,27 +711,58 @@ let char_for_backslash = function
(* The integer value corresponding to the facial value of a valid
decimal digit character. *)
-let int_value_of_char c = int_of_char c - 48;;
+let decimal_value_of_char c = int_of_char c - int_of_char '0';;
let char_for_decimal_code c0 c1 c2 =
let c =
- 100 * int_value_of_char c0 +
- 10 * int_value_of_char c1 +
- int_value_of_char c2 in
+ 100 * decimal_value_of_char c0 +
+ 10 * decimal_value_of_char c1 +
+ decimal_value_of_char c2 in
if c < 0 || c > 255
then bad_input (Printf.sprintf "bad char \\%c%c%c" c0 c1 c2)
else char_of_int c
;;
+(* The integer value corresponding to the facial value of a valid
+ hexadecimal digit character. *)
+let hexadecimal_value_of_char c =
+ let d = int_of_char c in
+ (* Could also be:
+ if d <= int_of_char '9' then d - int_of_char '0' else
+ if d <= int_of_char 'F' then 10 + d - int_of_char 'A' else
+ if d <= int_of_char 'f' then 10 + d - int_of_char 'a' else assert false
+ *)
+ if d >= int_of_char 'a' then
+ d - 87 (* 10 + int_of_char c - int_of_char 'a' *) else
+ if d >= int_of_char 'A' then
+ d - 55 (* 10 + int_of_char c - int_of_char 'A' *) else
+ d - int_of_char '0'
+;;
+
+let char_for_hexadecimal_code c1 c2 =
+ let c =
+ 16 * hexadecimal_value_of_char c1 +
+ hexadecimal_value_of_char c2 in
+ if c < 0 || c > 255
+ then bad_input (Printf.sprintf "bad char \\%c%c" c1 c2)
+ else char_of_int c
+;;
+
(* Called when encountering '\\' as starter of a char.
Stops before the corresponding '\''. *)
-let scan_backslash_char max ib =
- if max = 0 then bad_input "a char" else
+let check_next_char message max ib =
+ if max = 0 then bad_input message else
let c = Scanning.peek_char ib in
- if Scanning.eof ib then bad_input "a char" else
- match c with
- | '\\' | '\'' | '"' | 'n' | 't' | 'b' | 'r' (* '"' helping Emacs *) ->
- Scanning.store_char ib (char_for_backslash c) max
+ if Scanning.eof ib then bad_input message else c
+;;
+
+let check_next_char_for_char = check_next_char "a char";;
+let check_next_char_for_string = check_next_char "a string";;
+
+let scan_backslash_char max ib =
+ match check_next_char_for_char max ib with
+ | '\\' | '\'' | '\"' | 'n' | 't' | 'b' | 'r' as c ->
+ Scanning.store_char max ib (char_for_backslash c)
| '0' .. '9' as c ->
let get_digit () =
let c = Scanning.next_char ib in
@@ -734,57 +772,69 @@ let scan_backslash_char max ib =
let c0 = c in
let c1 = get_digit () in
let c2 = get_digit () in
- Scanning.store_char ib (char_for_decimal_code c0 c1 c2) (max - 2)
+ Scanning.store_char (max - 2) ib (char_for_decimal_code c0 c1 c2)
+ | 'x' ->
+ let get_digit () =
+ let c = Scanning.next_char ib in
+ match c with
+ | '0' .. '9' | 'A' .. 'F' | 'a' .. 'f' as c -> c
+ | c -> bad_input_escape c in
+ let c1 = get_digit () in
+ let c2 = get_digit () in
+ Scanning.store_char (max - 2) ib (char_for_hexadecimal_code c1 c2)
| c -> bad_input_char c
;;
let scan_Char max ib =
- let rec loop s max =
- if max = 0 then bad_input "a char" else
- let c = Scanning.checked_peek_char ib in
- if Scanning.eof ib then bad_input "a char" else
- match c, s with
- (* Looking for the '\'' at the beginning of the delimited char. *)
- | '\'', 3 -> loop 2 (Scanning.ignore_char ib max)
- (* Looking for the '\'' at the end of the delimited char. *)
- | '\'', 1 -> Scanning.ignore_char ib max
- (* Any other char at the beginning or end of the delimited char should be
- '\''. *)
- | c, (3 | 1) -> character_mismatch '\'' c
- (* Found a '\\': check and read this escape char. *)
- | '\\', 2 -> loop 1 (scan_backslash_char (Scanning.ignore_char ib max) ib)
- (* The regular case, remember the char, then look for the terminal '\\'. *)
- | c, 2 -> loop 1 (Scanning.store_char ib c max)
- (* Any other case is an error, *)
- | c, _ -> bad_input_char c in
- loop 3 max
+
+ let rec find_start max =
+ match check_next_char_for_char max ib with
+ | '\'' -> find_char (Scanning.ignore_char max ib)
+ | c -> character_mismatch '\'' c
+
+ and find_char max =
+ match check_next_char_for_char max ib with
+ | '\\' -> find_stop (scan_backslash_char (Scanning.ignore_char max ib) ib)
+ | c -> find_stop (Scanning.store_char max ib c)
+
+ and find_stop max =
+ match check_next_char_for_char max ib with
+ | '\'' -> Scanning.ignore_char max ib
+ | c -> character_mismatch '\'' c in
+
+ find_start max
;;
let scan_String max ib =
- let rec loop s max =
- if max = 0 then bad_input "a string" else
- let c = Scanning.checked_peek_char ib in
- if Scanning.eof ib then bad_input "a string" else
- match c, s with
- | '"', true (* '"' helping Emacs *) ->
- loop false (Scanning.ignore_char ib max)
- | '"', false (* '"' helping Emacs *) ->
- Scanning.ignore_char ib max
- | '\\', false ->
- skip_spaces true (Scanning.ignore_char ib max)
- | c, false -> loop false (Scanning.store_char ib c max)
- | c, _ -> bad_input_char c
- and skip_spaces s max =
- if max = 0 then bad_input "a string" else
- let c = Scanning.checked_peek_char ib in
- if Scanning.eof ib then bad_input "a string" else
- match c, s with
- | '\n', true
- | ' ', false ->
- skip_spaces false (Scanning.ignore_char ib max)
- | c, false -> loop false max
- | _, _ -> loop false (scan_backslash_char (max - 1) ib) in
- loop true max
+
+ let rec find_start max =
+ match check_next_char_for_string max ib with
+ | '\"' -> find_stop (Scanning.ignore_char max ib)
+ | c -> character_mismatch '\"' c
+
+ and find_stop max =
+ match check_next_char_for_string max ib with
+ | '\"' -> Scanning.ignore_char max ib
+ | '\\' -> scan_backslash (Scanning.ignore_char max ib)
+ | c -> find_stop (Scanning.store_char max ib c)
+
+ and scan_backslash max =
+ match check_next_char_for_string max ib with
+ | '\r' -> skip_newline (Scanning.ignore_char max ib)
+ | '\n' -> skip_spaces (Scanning.ignore_char max ib)
+ | c -> find_stop (scan_backslash_char max ib)
+
+ and skip_newline max =
+ match check_next_char_for_string max ib with
+ | '\n' -> skip_spaces (Scanning.ignore_char max ib)
+ | _ -> find_stop (Scanning.store_char max ib '\r')
+
+ and skip_spaces max =
+ match check_next_char_for_string max ib with
+ | ' ' -> skip_spaces (Scanning.ignore_char max ib)
+ | _ -> find_stop max in
+
+ find_start max
;;
let scan_bool max ib =
@@ -964,49 +1014,49 @@ let scan_chars_in_char_set stp char_set max ib =
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
if c == cp1
- then loop_pos1 cp1 (Scanning.store_char ib c max)
+ then loop_pos1 cp1 (Scanning.store_char max ib c)
else max
and loop_pos2 cp1 cp2 max =
if max = 0 then max else
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
if c == cp1 || c == cp2
- then loop_pos2 cp1 cp2 (Scanning.store_char ib c max)
+ then loop_pos2 cp1 cp2 (Scanning.store_char max ib c)
else max
and loop_pos3 cp1 cp2 cp3 max =
if max = 0 then max else
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
if c == cp1 || c == cp2 || c == cp3
- then loop_pos3 cp1 cp2 cp3 (Scanning.store_char ib c max)
+ then loop_pos3 cp1 cp2 cp3 (Scanning.store_char max ib c)
else max
and loop_neg1 cp1 max =
if max = 0 then max else
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
if c != cp1
- then loop_neg1 cp1 (Scanning.store_char ib c max)
+ then loop_neg1 cp1 (Scanning.store_char max ib c)
else max
and loop_neg2 cp1 cp2 max =
if max = 0 then max else
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
if c != cp1 && c != cp2
- then loop_neg2 cp1 cp2 (Scanning.store_char ib c max)
+ then loop_neg2 cp1 cp2 (Scanning.store_char max ib c)
else max
and loop_neg3 cp1 cp2 cp3 max =
if max = 0 then max else
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
if c != cp1 && c != cp2 && c != cp3
- then loop_neg3 cp1 cp2 cp3 (Scanning.store_char ib c max)
+ then loop_neg3 cp1 cp2 cp3 (Scanning.store_char max ib c)
else max
and loop setp max =
if max = 0 then max else
let c = Scanning.peek_char ib in
if Scanning.eof ib then max else
if setp c == 1
- then loop setp (Scanning.store_char ib c max)
+ then loop setp (Scanning.store_char max ib c)
else max in
let max =
@@ -1175,25 +1225,27 @@ let scan_format ib ef fmt rv f =
if ir > limr then assert false else
let token = Obj.magic rv.(ir) ib in
scan_fmt (succ ir) (stack f token) (succ i)
- | 'l' | 'n' | 'L' as conv ->
+ | 'l' | 'n' | 'L' as conv0 ->
let i = succ i in
- if i > lim then scan_fmt ir (stack f (get_count conv ib)) i else begin
+ if i > lim then scan_fmt ir (stack f (get_count conv0 ib)) i else begin
match Sformat.get fmt i with
(* This is in fact an integer conversion (e.g. %ld, %ni, or %Lo). *)
- | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' as conv ->
- let _x = scan_int_conv conv max ib in
+ | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' as conv1 ->
+ let _x = scan_int_conv conv1 max ib in
(* Look back to the character that triggered the integer conversion
- (this character is either 'l', 'n' or 'L'), to find the
+ (this character is either 'l', 'n' or 'L') to find the
conversion to apply to the integer token read. *)
- begin match Sformat.get fmt (i - 1) with
- | 'l' -> scan_fmt ir (stack f (token_int32 conv ib)) (succ i)
- | 'n' -> scan_fmt ir (stack f (token_nativeint conv ib)) (succ i)
- | _ -> scan_fmt ir (stack f (token_int64 conv ib)) (succ i) end
+ begin match conv0 with
+ | 'l' -> scan_fmt ir (stack f (token_int32 conv1 ib)) (succ i)
+ | 'n' -> scan_fmt ir (stack f (token_nativeint conv1 ib)) (succ i)
+ | _ -> scan_fmt ir (stack f (token_int64 conv1 ib)) (succ i) end
(* This is not an integer conversion, but a regular %l, %n or %L. *)
- | _ -> scan_fmt ir (stack f (get_count conv ib)) i end
+ | _ -> scan_fmt ir (stack f (get_count conv0 ib)) i end
| '!' ->
if Scanning.end_of_input ib then scan_fmt ir f (succ i)
else bad_input "end of input not found"
+ | ',' ->
+ scan_fmt ir f (succ i)
| '_' ->
if i > lim then incomplete_format fmt else
scan_conversion true max ir f (succ i)
@@ -1202,10 +1254,10 @@ let scan_format ib ef fmt rv f =
if i > lim then accu, i else
match Sformat.get fmt i with
| '0' .. '9' as c ->
- let accu = 10 * accu + int_value_of_char c in
+ let accu = 10 * accu + decimal_value_of_char c in
read_width accu (succ i)
| _ -> accu, i in
- let max, i = read_width (int_value_of_char conv) (succ i) in
+ let max, i = read_width (decimal_value_of_char conv) (succ i) in
if i > lim then incomplete_format fmt else begin
match Sformat.get fmt i with
| '.' ->
diff --git a/stdlib/scanf.mli b/stdlib/scanf.mli
index f3049f91eb..65217fc393 100644
--- a/stdlib/scanf.mli
+++ b/stdlib/scanf.mli
@@ -69,7 +69,7 @@
However, it is also largely different, simpler, and yet more powerful:
the formatted input functions are higher-order functionals and the
parameter passing mechanism is just the regular function application not
- the variable assigment based mechanism which is typical for formatted
+ the variable assignment based mechanism which is typical for formatted
input in imperative languages; the Caml format strings also feature
useful additions to easily define complex tokens; as expected within a
functional programming language, the formatted input functions also
@@ -197,16 +197,19 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;;
(** {7 The space character in format strings} *)
(** As mentioned above, a plain character in the format string is just
- matched with the characters of the input; however, one character is a
- special exception to this simple rule: the space character (ASCII code
- 32) does not match a single space character, but any amount of
+ matched with the next character of the input; however, two characters are
+ special exceptions to this rule: the space character ([' '] or ASCII code
+ 32) and the line feed character (['\n'] or ASCII code 10).
+ A space does not match a single space character, but any amount of
``whitespace'' in the input. More precisely, a space inside the format
string matches {e any number} of tab, space, line feed and carriage
- return characters.
+ return characters. Similarly, a line feed character in the format string
+ matches either a single line feed or a carriage return followed by a line
+ feed.
Matching {e any} amount of whitespace, a space in the format string
also matches no amount of whitespace at all; hence, the call [bscanf ib
- "Price = %d $" (fun p -> p)] succeds and returns [1] when reading an
+ "Price = %d $" (fun p -> p)] succeeds and returns [1] when reading an
input with various whitespace in it, such as [Price = 1 $],
[Price = 1 $], or even [Price=1$]. *)
@@ -287,6 +290,7 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;;
- [N] or [L]: returns the number of tokens read so far.
- [!]: matches the end of input condition.
- [%]: matches one [%] character in the input.
+ - [,]: the no-op delimiter for conversion specifications.
Following the [%] character that introduces a conversion, there may be
the special flag [_]: the conversion that follows occurs as usual,
@@ -303,7 +307,7 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;;
Notes:
- - as mentioned above, a [%s] convertion always succeeds, even if there is
+ - as mentioned above, a [%s] conversion always succeeds, even if there is
nothing to read in the input: it simply returns [""].
- in addition to the relevant digits, ['_'] characters may appear
@@ -361,7 +365,7 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;;
[End_of_file]: if the end of input is reached the conversion succeeds and
simply returns the characters read so far, or [""] if none were read. *)
-(** {6 Specialized formatted input functions} *)
+(** {6 Specialised formatted input functions} *)
val fscanf : in_channel -> ('a, 'b, 'c, 'd) scanner;;
(** Same as {!Scanf.bscanf}, but reads from the given channel.
@@ -373,7 +377,7 @@ val fscanf : in_channel -> ('a, 'b, 'c, 'd) scanner;;
primitives on the channel (reading characters, seeking the reading
position, and so on).
- As a consequence, never mixt direct low level reading and high level
+ As a consequence, never mix direct low level reading and high level
scanning from the same input channel. *)
val sscanf : string -> ('a, 'b, 'c, 'd) scanner;;
@@ -397,7 +401,7 @@ val kscanf :
val bscanf_format :
Scanning.scanbuf -> ('a, 'b, 'c, 'd, 'e, 'f) format6 ->
(('a, 'b, 'c, 'd, 'e, 'f) format6 -> 'g) -> 'g;;
-(** [bscanf_format ib fmt f] reads a format string token from the scannning
+(** [bscanf_format ib fmt f] reads a format string token from the scanning
buffer [ib], according to the given format string [fmt], and applies [f] to
the resulting format string value.
Raise [Scan_failure] if the format string value read does not have the
diff --git a/stdlib/stdlib.mllib b/stdlib/stdlib.mllib
index 9f835c6fa6..91265e5da9 100644
--- a/stdlib/stdlib.mllib
+++ b/stdlib/stdlib.mllib
@@ -1,48 +1,49 @@
-# This file lists all standard library modules.
+# This file lists all standard library modules
+# (in the same order as Makefile.shared).
# It is used in particular to know what to expunge in toplevels.
# $Id$
Pervasives
-Arg
Array
-ArrayLabels
-Buffer
-Callback
-CamlinternalLazy
-CamlinternalMod
-CamlinternalOO
+List
Char
-Complex
-Digest
-Filename
-Format
-Gc
-Genlex
+String
+Sys
Hashtbl
+Sort
+Marshal
+Obj
Int32
Int64
-Lazy
-Lexing
-List
-ListLabels
-Map
-Marshal
-MoreLabels
Nativeint
-Obj
-Oo
+Lexing
Parsing
-Printexc
-Printf
-Queue
-Random
-Scanf
Set
-Sort
+Map
Stack
-StdLabels
+Queue
+CamlinternalLazy
+Lazy
Stream
-String
-StringLabels
-Sys
+Buffer
+Printf
+Format
+Scanf
+Arg
+Printexc
+Gc
+Digest
+Random
+Callback
+CamlinternalOO
+Oo
+CamlinternalMod
+Genlex
Weak
+Filename
+Complex
+ArrayLabels
+ListLabels
+StringLabels
+MoreLabels
+StdLabels
diff --git a/tools/.cvsignore b/tools/.cvsignore
index da394be959..6adfbf20f8 100644
--- a/tools/.cvsignore
+++ b/tools/.cvsignore
@@ -6,6 +6,7 @@ dumpobj
dumpapprox
objinfo
cvt_emit
+cvt_emit.bak
cvt_emit.ml
ocamlcp
ocamlmktop
diff --git a/tools/.depend b/tools/.depend
index b51459b67e..f4eb6794b9 100644
--- a/tools/.depend
+++ b/tools/.depend
@@ -24,8 +24,6 @@ dumpobj.cmx: ../utils/tbl.cmx opnames.cmx ../bytecomp/opcodes.cmx \
../typing/ident.cmx ../bytecomp/emitcode.cmx ../utils/config.cmx \
../bytecomp/cmo_format.cmi ../bytecomp/bytesections.cmx \
../parsing/asttypes.cmi
-lexer301.cmo: ../utils/warnings.cmi ../utils/misc.cmi ../parsing/location.cmi
-lexer301.cmx: ../utils/warnings.cmx ../utils/misc.cmx ../parsing/location.cmx
myocamlbuild_config.cmo:
myocamlbuild_config.cmx:
objinfo.cmo: ../utils/config.cmi ../bytecomp/cmo_format.cmi
@@ -60,5 +58,5 @@ primreq.cmo: ../utils/config.cmi ../bytecomp/cmo_format.cmi
primreq.cmx: ../utils/config.cmx ../bytecomp/cmo_format.cmi
profiling.cmo: profiling.cmi
profiling.cmx: profiling.cmi
-scrapelabels.cmo: lexer301.cmo
-scrapelabels.cmx: lexer301.cmx
+scrapelabels.cmo:
+scrapelabels.cmx:
diff --git a/tools/ocamlmklib.mlp b/tools/ocamlmklib.mlp
index 39aac11ff1..71e4836e5f 100644
--- a/tools/ocamlmklib.mlp
+++ b/tools/ocamlmklib.mlp
@@ -15,19 +15,25 @@
open Printf
open Myocamlbuild_config
-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, .libfiles to pass to mksharedlib and ar *)
-and caml_libs = ref [] (* -cclib to pass to jocamlc, jocamlopt *)
-and caml_opts = ref [] (* -ccopt to pass to jocamlc, jocamlopt *)
+(* PR#4783: under Windows, don't use absolute paths because we do
+ not know where the binary distribution will be installed. *)
+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 *)
+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 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 *)
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 (Filename.concat bindir "jocamlc")
-and jocamlopt = ref (Filename.concat bindir "jocamlopt")
+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 *)
@@ -124,9 +130,8 @@ let parse_arguments argv =
done;
List.iter
(fun r -> r := List.rev !r)
- [ bytecode_objs; native_objs; c_objs; caml_libs; caml_opts;
+ [ bytecode_objs; native_objs; caml_libs; caml_opts;
c_libs; c_objs; c_opts; ld_opts; rpath ];
- (* On retourne deux fois c_objs ?? -- AF *)
if !output_c = "" then output_c := !output
@@ -188,7 +193,7 @@ let make_rpath flag =
else flag ^ String.concat ":" (make_set !rpath)
let make_rpath_ccopt flag =
- if !rpath = [] || flag = ""
+ if !rpath = [] || flag = ""
then ""
else "-ccopt " ^ flag ^ String.concat ":" (make_set !rpath)
@@ -204,10 +209,10 @@ let prepostfix pre name post =
let transl_path s =
match Sys.os_type with
| "Win32" ->
- let rec aux i =
- if i = String.length s || s.[i] = ' ' then s
- else (if s.[i] = '/' then s.[i] <- '\\'; aux (i + 1))
- in aux 0
+ let rec aux i =
+ if i = String.length s || s.[i] = ' ' then s
+ else (if s.[i] = '/' then s.[i] <- '\\'; aux (i + 1))
+ in aux 0
| _ -> s
let build_libs () =
diff --git a/typing/ctype.ml b/typing/ctype.ml
index ceb3fe04b9..95d0783dfc 100644
--- a/typing/ctype.ml
+++ b/typing/ctype.ml
@@ -3381,39 +3381,29 @@ let nondep_type env id ty =
let nondep_type_decl env mid id is_covariant decl =
try
let params = List.map (nondep_type_rec env mid) decl.type_params in
- let decl =
- { type_params = params;
- type_arity = decl.type_arity;
- type_kind =
- begin try
- match decl.type_kind with
- Type_abstract ->
- Type_abstract
- | Type_variant cstrs ->
- Type_variant(List.map
- (fun (c, tl) -> (c, List.map (nondep_type_rec env mid) tl))
- cstrs)
- | Type_record(lbls, rep) ->
- Type_record(
- List.map
- (fun (c, mut, t) -> (c, mut, nondep_type_rec env mid t))
- lbls,
- rep)
- with Not_found when is_covariant ->
- Type_abstract
- end;
- type_manifest =
- begin try
- match decl.type_manifest with
- None -> None
- | Some ty ->
- Some (unroll_abbrev id params (nondep_type_rec env mid ty))
- with Not_found when is_covariant ->
- None
- end;
- type_private = decl.type_private;
- type_variance = decl.type_variance;
- }
+ let tk =
+ try match decl.type_kind with
+ Type_abstract ->
+ Type_abstract
+ | Type_variant cstrs ->
+ Type_variant
+ (List.map
+ (fun (c, tl) -> (c, List.map (nondep_type_rec env mid) tl))
+ cstrs)
+ | Type_record(lbls, rep) ->
+ Type_record
+ (List.map
+ (fun (c, mut, t) -> (c, mut, nondep_type_rec env mid t))
+ lbls,
+ rep)
+ with Not_found when is_covariant -> Type_abstract
+ and tm =
+ try match decl.type_manifest with
+ None -> None
+ | Some ty ->
+ Some (unroll_abbrev id params (nondep_type_rec env mid ty))
+ with Not_found when is_covariant ->
+ None
in
cleanup_types ();
List.iter unmark_type decl.type_params;
@@ -3428,7 +3418,18 @@ let nondep_type_decl env mid id is_covariant decl =
None -> ()
| Some ty -> unmark_type ty
end;
- decl
+ let priv =
+ match tm with
+ | Some ty when Btype.has_constr_row ty -> Private
+ | _ -> decl.type_private
+ in
+ { type_params = params;
+ type_arity = decl.type_arity;
+ type_kind = tk;
+ type_manifest = tm;
+ type_private = priv;
+ type_variance = decl.type_variance;
+ }
with Not_found ->
cleanup_types ();
raise Not_found
diff --git a/typing/includecore.ml b/typing/includecore.ml
index 1550488721..16c048b5c3 100644
--- a/typing/includecore.ml
+++ b/typing/includecore.ml
@@ -40,7 +40,8 @@ let value_descriptions env vd1 vd2 =
let private_flags decl1 decl2 =
match decl1.type_private, decl2.type_private with
| Private, Public ->
- decl2.type_kind = Type_abstract && decl2.type_manifest = None
+ decl2.type_kind = Type_abstract &&
+ (decl2.type_manifest = None || decl1.type_kind <> Type_abstract)
| _, _ -> true
(* Inclusion between manifest types (particularly for private row types) *)
diff --git a/typing/typecore.ml b/typing/typecore.ml
index 694c68519e..57f793c7e0 100644
--- a/typing/typecore.ml
+++ b/typing/typecore.ml
@@ -938,7 +938,7 @@ let type_format loc fmt =
and scan_conversion i j =
if j >= len then incomplete_format fmt else
match fmt.[j] with
- | '%' | '!' -> scan_format (j + 1)
+ | '%' | '!' | ',' -> scan_format (j + 1)
| 's' | 'S' -> conversion j Predef.type_string
| '[' ->
let j = range_closing_index fmt j in
diff --git a/typing/typedecl.ml b/typing/typedecl.ml
index 8bad0ef504..b69a2f8cf6 100644
--- a/typing/typedecl.ml
+++ b/typing/typedecl.ml
@@ -184,11 +184,7 @@ let transl_declaration env (name, sdecl) id =
None -> None
| Some sty ->
let no_row = not (is_fixed_type sdecl) in
- let ty =
- transl_simple_type env no_row sty in
- if Ctype.cyclic_abbrev env id ty then
- raise(Error(sdecl.ptype_loc, Recursive_abbrev name));
- Some ty
+ Some (transl_simple_type env no_row sty)
end;
type_variance = List.map (fun _ -> true, true, true) params;
} in
@@ -200,12 +196,19 @@ let transl_declaration env (name, sdecl) id =
raise(Error(loc, Unconsistent_constraint tr)))
cstrs;
Ctype.end_def ();
+ (* Add abstract row *)
if is_fixed_type sdecl then begin
let (p, _) =
try Env.lookup_type (Longident.Lident(Ident.name id ^ "#row")) env
with Not_found -> assert false in
set_fixed_row env sdecl.ptype_loc p decl
end;
+ (* Check for cyclic abbreviations *)
+ begin match decl.type_manifest with None -> ()
+ | Some ty ->
+ if Ctype.cyclic_abbrev env id ty then
+ raise(Error(sdecl.ptype_loc, Recursive_abbrev name));
+ end;
(id, decl)
(* Generalize a type declaration *)
diff --git a/typing/typetexp.ml b/typing/typetexp.ml
index ec2b7ed8df..52046b661e 100644
--- a/typing/typetexp.ml
+++ b/typing/typetexp.ml
@@ -39,6 +39,7 @@ type error =
| Variant_tags of string * string
| Invalid_variable_name of string
| Cannot_quantify of string * type_expr
+ | Repeated_method_label of string
exception Error of Location.t * error
@@ -156,7 +157,7 @@ let rec transl_type env policy styp =
end;
constr
| Ptyp_object fields ->
- newobj (transl_fields env policy fields)
+ newobj (transl_fields env policy [] fields)
| Ptyp_class(lid, stl, present) ->
let (path, decl, is_variant) =
try
@@ -384,15 +385,16 @@ let rec transl_type env policy styp =
unify_var env (newvar()) ty';
ty'
-and transl_fields env policy =
+and transl_fields env policy seen =
function
[] ->
newty Tnil
| {pfield_desc = Pfield_var}::_ ->
if policy = Univars then new_pre_univar () else newvar ()
- | {pfield_desc = Pfield(s, e)}::l ->
+ | {pfield_desc = Pfield(s, e); pfield_loc = loc}::l ->
+ if List.mem s seen then raise (Error (loc, Repeated_method_label s));
let ty1 = transl_type env policy e in
- let ty2 = transl_fields env policy l in
+ let ty2 = transl_fields env policy (s::seen) l in
newty (Tfield (s, Fpresent, ty1, ty2))
@@ -557,3 +559,6 @@ let report_error ppf = function
(if v.desc = Tvar then "it escapes this scope" else
if v.desc = Tunivar then "it is aliased to another variable"
else "it is not a variable")
+ | Repeated_method_label s ->
+ fprintf ppf "@[This is the second method `%s' of this object type.@ %s@]"
+ s "Multiple occurences are not allowed."
diff --git a/typing/typetexp.mli b/typing/typetexp.mli
index ba3abaa412..49a280f768 100644
--- a/typing/typetexp.mli
+++ b/typing/typetexp.mli
@@ -54,6 +54,7 @@ type error =
| Variant_tags of string * string
| Invalid_variable_name of string
| Cannot_quantify of string * Types.type_expr
+ | Repeated_method_label of string
exception Error of Location.t * error