summaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1995-07-10 09:48:27 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1995-07-10 09:48:27 +0000
commitc226d5efeb43f25c7086e89733ec8073262aa2e0 (patch)
tree481cda5fe83465c0acf991782d8848ec867bd946 /stdlib
parentbbbf6d016497de98d776934e20fbac905d48d6a1 (diff)
downloadocaml-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/.depend33
-rw-r--r--stdlib/Makefile17
-rw-r--r--stdlib/array.ml16
-rw-r--r--stdlib/array.mli5
-rw-r--r--stdlib/string.ml28
-rw-r--r--stdlib/string.mli6
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