diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1995-07-10 09:48:27 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1995-07-10 09:48:27 +0000 |
commit | c226d5efeb43f25c7086e89733ec8073262aa2e0 (patch) | |
tree | 481cda5fe83465c0acf991782d8848ec867bd946 /stdlib | |
parent | bbbf6d016497de98d776934e20fbac905d48d6a1 (diff) | |
download | ocaml-c226d5efeb43f25c7086e89733ec8073262aa2e0.tar.gz |
Branchement du GC de la version bytecode sur le compilateur natif
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@72 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/.depend | 33 | ||||
-rw-r--r-- | stdlib/Makefile | 17 | ||||
-rw-r--r-- | stdlib/array.ml | 16 | ||||
-rw-r--r-- | stdlib/array.mli | 5 | ||||
-rw-r--r-- | stdlib/string.ml | 28 | ||||
-rw-r--r-- | stdlib/string.mli | 6 |
6 files changed, 57 insertions, 48 deletions
diff --git a/stdlib/.depend b/stdlib/.depend index a225576552..b1ae6b0c64 100644 --- a/stdlib/.depend +++ b/stdlib/.depend @@ -1,26 +1,45 @@ format.cmi: list.cmi -gc.cmi: lexing.cmi: obj.cmi parsing.cmi: lexing.cmi obj.cmi -printexc.cmi: arg.cmo: arg.cmi sys.cmi string.cmi list.cmi array.cmi printf.cmi -array.cmo: array.cmi list.cmi array.cmi -char.cmo: char.cmi char.cmi string.cmi +arg.cmx: arg.cmi sys.cmx string.cmx list.cmx array.cmx printf.cmx +array.cmo: array.cmi list.cmi +array.cmx: array.cmi list.cmx +char.cmo: char.cmi string.cmi +char.cmx: char.cmi string.cmx filename.cmo: filename.cmi string.cmi +filename.cmx: filename.cmi string.cmx format.cmo: format.cmi queue.cmi string.cmi list.cmi +format.cmx: format.cmi queue.cmx string.cmx list.cmx gc.cmo: gc.cmi printf.cmi +gc.cmx: gc.cmi printf.cmx hashtbl.cmo: hashtbl.cmi array.cmi +hashtbl.cmx: hashtbl.cmi array.cmx lexing.cmo: lexing.cmi string.cmi obj.cmi -list.cmo: list.cmi list.cmi -map.cmo: map.cmi +lexing.cmx: lexing.cmi string.cmx obj.cmx +list.cmo: list.cmi +list.cmx: list.cmi +map.cmo: map.cmi set.cmi +map.cmx: map.cmi set.cmx obj.cmo: obj.cmi +obj.cmx: obj.cmi parsing.cmo: parsing.cmi array.cmi lexing.cmi obj.cmi +parsing.cmx: parsing.cmi array.cmx lexing.cmx obj.cmx pervasives.cmo: pervasives.cmi +pervasives.cmx: pervasives.cmi printexc.cmo: printexc.cmi obj.cmi +printexc.cmx: printexc.cmi obj.cmx printf.cmo: printf.cmi string.cmi list.cmi obj.cmi +printf.cmx: printf.cmi string.cmx list.cmx obj.cmx queue.cmo: queue.cmi +queue.cmx: queue.cmi set.cmo: set.cmi +set.cmx: set.cmi sort.cmo: sort.cmi +sort.cmx: sort.cmi stack.cmo: stack.cmi list.cmi -string.cmo: string.cmi char.cmi string.cmi list.cmi +stack.cmx: stack.cmi list.cmx +string.cmo: string.cmi list.cmi +string.cmx: string.cmi list.cmx sys.cmo: sys.cmi +sys.cmx: sys.cmi diff --git a/stdlib/Makefile b/stdlib/Makefile index b01545fcc5..34ee1df97b 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -3,6 +3,8 @@ include ../Makefile.config RUNTIME=../boot/camlrun COMPILER=../camlc CAMLC=$(RUNTIME) $(COMPILER) +OPTCOMPILER=../camlopt +CAMLOPT=$(RUNTIME) $(OPTCOMPILER) CAMLDEP=../tools/camldep OBJS=pervasives.cmo list.cmo string.cmo char.cmo array.cmo sys.cmo \ @@ -18,6 +20,10 @@ install: stdlib.cma: $(OBJS) $(CAMLC) -a -o stdlib.cma $(OBJS) +# stdlib.cmxa: $(OBJS:.cmo=.cmx) +# $(CAMLOPT) -a -o stdlib.cmxa $(OBJS:.cmo=.cmx) +optlib: $(OBJS:.cmo=.cmx) + cslheader: header.c ../Makefile.config if $(SHARPBANGSCRIPTS); \ then echo "#!$(BINDIR)/cslrun" > cslheader; \ @@ -30,7 +36,10 @@ pervasives.cmi: pervasives.mli pervasives.cmo: pervasives.ml $(CAMLC) -nopervasives -c pervasives.ml -.SUFFIXES: .mli .ml .cmi .cmo +pervasives.cmx: pervasives.ml + $(CAMLOPT) -nopervasives -c pervasives.ml + +.SUFFIXES: .mli .ml .cmi .cmo .cmx .mli.cmi: $(CAMLC) $(COMPFLAGS) -c $< @@ -38,13 +47,17 @@ pervasives.cmo: pervasives.ml .ml.cmo: $(CAMLC) $(COMPFLAGS) -c $< +.ml.cmx: + $(CAMLOPT) $(COMPFLAGS) -c $< + $(OBJS): pervasives.cmi $(OBJS): $(COMPILER) $(OBJS:.cmo=.cmi): $(COMPILER) +$(OBJS:.cmo=.cmx): $(OPTCOMPILER) clean: - rm -f *.cm[ioa] + rm -f *.cm* rm -f cslheader rm -f *~ diff --git a/stdlib/array.ml b/stdlib/array.ml index d539d76c60..62c475d22f 100644 --- a/stdlib/array.ml +++ b/stdlib/array.ml @@ -1,23 +1,11 @@ (* Array operations *) external length : 'a array -> int = "%array_length" +external get: 'a array -> int -> 'a = "%array_safe_get" +external set: 'a array -> int -> 'a -> unit = "%array_safe_set" external unsafe_get: 'a array -> int -> 'a = "%array_unsafe_get" external unsafe_set: 'a array -> int -> 'a -> unit = "%array_unsafe_set" external new: int -> 'a -> 'a array = "make_vect" -external get: 'a array -> int -> 'a = "array_get" -external set: 'a array -> int -> 'a -> unit = "array_set" - -(***** -let get a n = - if n < 0 or n >= length a - then invalid_arg "Array.get" - else unsafe_get a n - -let set a n v = - if n < 0 or n >= length a - then invalid_arg "Array.set" - else unsafe_set a n v -*****) let new_matrix sx sy init = let res = new sx [||] in diff --git a/stdlib/array.mli b/stdlib/array.mli index e0d9983d7d..04968bce97 100644 --- a/stdlib/array.mli +++ b/stdlib/array.mli @@ -1,9 +1,8 @@ (* Array operations *) external length : 'a array -> int = "%array_length" - -external get: 'a array -> int -> 'a = "array_get" -external set: 'a array -> int -> 'a -> unit = "array_set" +external get: 'a array -> int -> 'a = "%array_safe_get" +external set: 'a array -> int -> 'a -> unit = "%array_safe_set" external new: int -> 'a -> 'a array = "make_vect" val new_matrix: int -> int -> 'a -> 'a array array val append: 'a array -> 'a array -> 'a array diff --git a/stdlib/string.ml b/stdlib/string.ml index d26ff55a55..77ed8a7bb4 100644 --- a/stdlib/string.ml +++ b/stdlib/string.ml @@ -1,27 +1,15 @@ (* String operations *) -external length : string -> int = "ml_string_length" +external length : string -> int = "%string_length" +external get : string -> int -> char = "%string_safe_get" +external set : string -> int -> char -> unit = "%string_safe_set" external create: int -> string = "create_string" external unsafe_get : string -> int -> char = "%string_unsafe_get" external unsafe_set : string -> int -> char -> unit = "%string_unsafe_set" -external get : string -> int -> char = "string_get" -external set : string -> int -> char -> unit = "string_set" external unsafe_blit : string -> int -> string -> int -> int -> unit = "blit_string" external unsafe_fill : string -> int -> int -> char -> unit = "fill_string" -(****** -let get s n = - if n < 0 or n >= length s - then invalid_arg "String.get" - else unsafe_get s n - -let set s n c = - if n < 0 or n >= length s - then invalid_arg "String.set" - else unsafe_set s n c -*******) - let make n c = let s = create n in unsafe_fill s 0 n c; @@ -72,6 +60,8 @@ let concat sep l = r external is_printable: char -> bool = "is_printable" +external char_code: char -> int = "%identity" +external char_chr: int -> char = "%identity" let escaped s = let n = ref 0 in @@ -97,14 +87,14 @@ let escaped s = if is_printable c then unsafe_set s' !n c else begin - let a = Char.code c in + let a = char_code c in unsafe_set s' !n '\\'; incr n; - unsafe_set s' !n (Char.unsafe_chr (48 + a / 100)); + unsafe_set s' !n (char_chr (48 + a / 100)); incr n; - unsafe_set s' !n (Char.unsafe_chr (48 + (a / 10) mod 10)); + unsafe_set s' !n (char_chr (48 + (a / 10) mod 10)); incr n; - unsafe_set s' !n (Char.unsafe_chr (48 + a mod 10)) + unsafe_set s' !n (char_chr (48 + a mod 10)) end end; incr n diff --git a/stdlib/string.mli b/stdlib/string.mli index ddf2df1bda..fa1c35c4e2 100644 --- a/stdlib/string.mli +++ b/stdlib/string.mli @@ -1,9 +1,9 @@ (* String operations *) -external length : string -> int = "ml_string_length" +external length : string -> int = "%string_length" -external get : string -> int -> char = "string_get" -external set : string -> int -> char -> unit = "string_set" +external get : string -> int -> char = "%string_safe_get" +external set : string -> int -> char -> unit = "%string_safe_set" external create : int -> string = "create_string" val make : int -> char -> string |