[Pkg-ocaml-maint-commits] [js-of-ocaml] 05/15: Imported Upstream version 2.4.1
Mehdi Dogguy
mehdi at moszumanska.debian.org
Sun Oct 18 08:48:22 UTC 2015
This is an automated email from the git hooks/post-receive script.
mehdi pushed a commit to branch master
in repository js-of-ocaml.
commit 58dcce3ebe3d555c752093374fdc9d29f3b8bc69
Author: Mehdi Dogguy <mehdi at debian.org>
Date: Sun Oct 18 09:52:06 2015 +0200
Imported Upstream version 2.4.1
---
CHANGES | 8 ++++++++
Makefile | 4 ++--
Makefile.toplevel | 4 ++--
README.md | 1 +
VERSION | 2 +-
compiler/compile.ml | 2 ++
compiler/generate.ml | 2 --
compiler/instr.ml | 47 +++++++++++++++++++++++++-------------------
compiler/instr.mli | 10 +++++++---
compiler/parse_bytecode.ml | 4 ++++
compiler/specialize.ml | 18 +++++++++--------
lib/xmlHttpRequest.ml | 2 +-
opam | 2 +-
runtime/fs.js | 12 +++++------
runtime/graphics.js | 6 ++++--
runtime/io.js | 22 ++++++++++-----------
runtime/jslib_js_of_ocaml.js | 7 ++-----
runtime/marshal.js | 11 ++++++-----
runtime/md5.js | 8 ++++----
runtime/mlString.js | 46 ++++++++++++++++++++++---------------------
runtime/stdlib.js | 46 +++++++++++++++++++++++++------------------
runtime/toplevel.js | 4 ++--
toplevel/Makefile | 7 +++++--
23 files changed, 157 insertions(+), 118 deletions(-)
diff --git a/CHANGES b/CHANGES
index aa2a57f..65dfe35 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,11 @@
+===== 2.4.1 (2014-08-28) =====
+
+ * BugFixes
+ ** Compiler: restore compatibility with ocaml 4.02
+ ** Runtime: fix caml_hash, Math.imul may give wrong results (#215)
+ ** Lib: Graphics_js, update text drawing baseline
+ ** Lib: Fix overuse of FormData in XmlHttpRequest (Tomohiro Matsuyama #214)
+
===== 2.4 (2014-08-08) =====
* Features/Changes
diff --git a/Makefile b/Makefile
index 2227ec8..d3e3612 100644
--- a/Makefile
+++ b/Makefile
@@ -13,9 +13,9 @@ compiler:
$(MAKE) -C compiler
compiler_lib: compiler
$(MAKE) -C compiler lib
-jsoo_tools:
+jsoo_tools: compiler_lib
$(MAKE) -C jsoo_tools
-library:
+library: compiler_lib
$(MAKE) -C lib
ocamlbuild:
$(MAKE) -C ocamlbuild
diff --git a/Makefile.toplevel b/Makefile.toplevel
index b157ef2..4ecdeb1 100644
--- a/Makefile.toplevel
+++ b/Makefile.toplevel
@@ -29,7 +29,7 @@ v-4.02.%:
opam switch "4.02.$*"
eval `opam config env`
opam install $(BASE)
- $(MAKE)
- $(MAKE) toplevel
+ $(MAKE) NO_SYNTAXES=1
+ $(MAKE) NO_SYNTAXES=1 toplevel
mkdir -p toplevel/4.02.$*/
cp toplevel/*.cmis.js toplevel/toplevel.js toplevel/4.02.$*/
diff --git a/README.md b/README.md
index 2ea6dd7..47e283d 100644
--- a/README.md
+++ b/README.md
@@ -91,6 +91,7 @@ functions can yield results different from usual:
## Toplevel
* [Ocaml 4.01.0](http://ocsigen.github.io/js_of_ocaml/#version=4.01.0)
* [Ocaml 4.01.0+BER](http://ocsigen.github.io/js_of_ocaml/#version=4.01.0+BER) : MetaOcaml
+ * [Ocaml 4.02.0](http://ocsigen.github.io/js_of_ocaml/#version=4.02.0+trunk)
## Contents of the distribution
| Filename | Description |
diff --git a/VERSION b/VERSION
index 6b4950e..005119b 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.4
+2.4.1
diff --git a/compiler/compile.ml b/compiler/compile.ml
index 3b15c73..8d982cf 100644
--- a/compiler/compile.ml
+++ b/compiler/compile.ml
@@ -224,5 +224,7 @@ let _ =
Format.eprintf "%s: Error: %s at ." Sys.argv.(0) s;
exit 1
| exc ->
+ let backtrace = Printexc.get_backtrace () in
Format.eprintf "%s: Error: %s at ." Sys.argv.(0) (Printexc.to_string exc);
+ prerr_string backtrace;
exit 1
diff --git a/compiler/generate.ml b/compiler/generate.ml
index 769f182..53a4b8f 100644
--- a/compiler/generate.ml
+++ b/compiler/generate.ml
@@ -791,8 +791,6 @@ let _ =
register_un_prim "caml_js_to_bool" `Pure to_int;
register_un_prim "caml_js_from_string" `Mutable
(fun cx -> J.ECall (J.EDot (cx, "toString"), []));
- register_un_prim "caml_js_to_string" `Mutable
- (fun cx -> J.ENew (s_var "MlWrappedString", Some [cx]));
register_tern_prim "caml_js_set"
(fun cx cy cz -> J.EBin (J.Eq, J.EAccess (cx, cy), cz));
register_bin_prim "caml_js_get" `Mutable
diff --git a/compiler/instr.ml b/compiler/instr.ml
index 641456a..ee238cc 100644
--- a/compiler/instr.ml
+++ b/compiler/instr.ml
@@ -19,7 +19,7 @@
*)
type t =
- ACC0
+ | ACC0
| ACC1
| ACC2
| ACC3
@@ -111,8 +111,6 @@ type t =
| PUSHTRAP
| POPTRAP
| RAISE
- | RERAISE
- | RAISE_NOTRACE
| CHECK_SIGNALS
| C_CALL1
| C_CALL2
@@ -165,6 +163,12 @@ type t =
| GETPUBMET
| GETDYNMET
| STOP
+ | EVENT
+ | BREAK
+ | RERAISE
+ | RAISE_NOTRACE
+ | FIRST_UNIMPLEMENTED_OP
+
type kind =
| KNullary
@@ -177,12 +181,18 @@ type kind =
| KClosurerec
| KClosure
| KStop of int
+ | K_will_not_happen
type desc = { code : t; kind : kind; name : string; opcode : int }
let ops,ops_rev =
let ops_rev = Hashtbl.create 17 in
- let block1 =
+ let if_v4 =
+ match Util.Version.v with
+ `V3 -> (fun _ default -> default)
+ | `V4_02 -> (fun k _ -> k)
+ in
+ let instrs =
[| ACC0, KNullary, "ACC0";
ACC1, KNullary, "ACC1";
ACC2, KNullary, "ACC2";
@@ -274,12 +284,8 @@ let ops,ops_rev =
BOOLNOT, KNullary, "BOOLNOT";
PUSHTRAP, KCond_jump, "PUSHTRAP";
POPTRAP, KNullary, "POPTRAP";
- RAISE, KStop 0, "RAISE" |]
- and block2 =
- [| RERAISE, KStop 0, "RERAISE";
- RAISE_NOTRACE, KStop 0, "RAISE_NOTRACE" |]
- and block3 =
- [| CHECK_SIGNALS, KNullary, "CHECK_SIGNALS";
+ RAISE, KStop 0, "RAISE";
+ CHECK_SIGNALS, KNullary, "CHECK_SIGNALS";
C_CALL1, KUnary, "C_CALL1";
C_CALL2, KUnary, "C_CALL2";
C_CALL3, KUnary, "C_CALL3";
@@ -330,19 +336,18 @@ let ops,ops_rev =
BUGEINT, KCmp_jump, "BUGEINT";
GETPUBMET, KBinary, "GETPUBMET";
GETDYNMET, KNullary, "GETDYNMET";
- STOP, KStop 0, "STOP"|]
- in
- let instrs =
- match Util.Version.v with
- `V3 -> [block1; block3]
- | `V4_02 -> [block1; block2; block3]
- in
+ STOP, KStop 0, "STOP";
+ EVENT, K_will_not_happen, "EVENT";
+ BREAK, K_will_not_happen, "BREAK";
+ RERAISE, if_v4 (KStop 0) K_will_not_happen, "RERAISE";
+ RAISE_NOTRACE, if_v4 (KStop 0) K_will_not_happen, "RAISE_NOTRACE";
+ FIRST_UNIMPLEMENTED_OP, K_will_not_happen, "FIRST_UNIMPLEMENTED_OP"|] in
let ops =
Array.mapi
(fun i (c, k, n) ->
Hashtbl.add ops_rev c i;
- {code = c; kind = k; name = n; opcode = i})
- (Array.concat instrs)
+ {code = c; kind = k; name = n; opcode = i}
+ ) instrs
in
ops,ops_rev
@@ -391,7 +396,9 @@ exception Bad_instruction of int
let get_instr code pc =
let i = getu code pc in
if i < 0 || i >= Array.length ops then raise (Bad_instruction i);
- ops.(i)
+ let ins = ops.(i) in
+ if ins.kind = K_will_not_happen then raise (Bad_instruction i);
+ ins
(****)
diff --git a/compiler/instr.mli b/compiler/instr.mli
index ee6eab2..7d7858a 100644
--- a/compiler/instr.mli
+++ b/compiler/instr.mli
@@ -19,7 +19,7 @@
*)
type t =
- ACC0
+ | ACC0
| ACC1
| ACC2
| ACC3
@@ -111,8 +111,6 @@ type t =
| PUSHTRAP
| POPTRAP
| RAISE
- | RERAISE
- | RAISE_NOTRACE
| CHECK_SIGNALS
| C_CALL1
| C_CALL2
@@ -165,6 +163,11 @@ type t =
| GETPUBMET
| GETDYNMET
| STOP
+ | EVENT
+ | BREAK
+ | RERAISE
+ | RAISE_NOTRACE
+ | FIRST_UNIMPLEMENTED_OP
type kind =
| KNullary
@@ -177,6 +180,7 @@ type kind =
| KClosurerec
| KClosure
| KStop of int
+ | K_will_not_happen
type desc = { code : t; kind : kind; name : string; opcode : int }
diff --git a/compiler/parse_bytecode.ml b/compiler/parse_bytecode.ml
index 1075611..91c6190 100644
--- a/compiler/parse_bytecode.ml
+++ b/compiler/parse_bytecode.ml
@@ -73,6 +73,7 @@ end = struct
scan blocks code (pc + 3) len
| KStop n ->
scan blocks code (pc + n + 1) len
+ | K_will_not_happen -> assert false
end
else blocks
@@ -1577,6 +1578,9 @@ and compile blocks code limit pc state instrs =
Let (meths, Field (obj, 0)) :: instrs)
| STOP ->
(instrs, Stop, state)
+ | EVENT
+ | BREAK
+ | FIRST_UNIMPLEMENTED_OP -> assert false
end
(****)
diff --git a/compiler/specialize.ml b/compiler/specialize.ml
index f97ef69..8a48c78 100644
--- a/compiler/specialize.ml
+++ b/compiler/specialize.ml
@@ -21,22 +21,24 @@
open Code
open Flow
-let rec function_cardinality info x =
+let rec function_cardinality info x acc =
get_approx info
(fun x ->
match info.info_defs.(Var.idx x) with
| Expr (Closure (l, _)) ->
Some (List.length l)
| Expr (Apply (f, l, _)) ->
- begin match function_cardinality info f with
+ if List.mem f acc
+ then None
+ else begin match function_cardinality info f (f::acc) with
Some n ->
- let diff = n - List.length l in
- if diff > 0 then Some diff else None
+ let diff = n - List.length l in
+ if diff > 0 then Some diff else None
| None ->
- None
- end
+ None
+ end
| _ ->
- None)
+ None)
None
(fun u v -> match u, v with Some n, Some m when n = m -> u | _ -> None)
x
@@ -45,7 +47,7 @@ let specialize_instr info (acc,free_pc,extra) i =
match i with
| Let (x, Apply (f, l, _)) when Option.Optim.optcall () -> begin
let n' = List.length l in
- match function_cardinality info f with
+ match function_cardinality info f [] with
| None -> i::acc,free_pc,extra
| Some n when n = n' -> Let (x, Apply (f, l, true))::acc,free_pc,extra
| Some n when n < n' ->
diff --git a/lib/xmlHttpRequest.ml b/lib/xmlHttpRequest.ml
index f62484b..14af2ea 100644
--- a/lib/xmlHttpRequest.ml
+++ b/lib/xmlHttpRequest.ml
@@ -171,7 +171,7 @@ let perform_raw_url
(match post_args with
| None -> None
| Some post_args ->
- let contents = Form.empty_form_contents () in
+ let contents = `Fields (ref []) in
List.iter (fun (name, value) ->
Form.append contents (name, value))
post_args;
diff --git a/opam b/opam
index a7e658c..bfe01ac 100644
--- a/opam
+++ b/opam
@@ -21,5 +21,5 @@ depopts: ["deriving" "tyxml" "reactiveData" ]
conflicts: [
"deriving" {< "0.6"}
"lwt" {< "2.4"}
- "tyxml" {< "3.2"}
+ "tyxml" {< "3.2.1"}
]
diff --git a/runtime/fs.js b/runtime/fs.js
index 7cf8d34..939bf1d 100644
--- a/runtime/fs.js
+++ b/runtime/fs.js
@@ -52,8 +52,8 @@ MlFile.prototype = {
//Provides: caml_sys_getcwd
-//Requires: caml_current_dir, MlString
-function caml_sys_getcwd() { return new MlString(caml_current_dir); }
+//Requires: caml_current_dir, caml_new_string
+function caml_sys_getcwd() { return caml_new_string(caml_current_dir); }
//Provides: caml_sys_chdir
//Requires: caml_current_dir, caml_make_path
//Requires: caml_sys_file_exists, caml_sys_is_directory,caml_raise_no_such_file
@@ -105,7 +105,7 @@ function caml_make_path (name) {
//Provides: caml_fs_register
//Requires: MlDir, MlFile, caml_root_dir, MlString, caml_make_path, caml_raise_sys_error
-//Requires: caml_invalid_argument
+//Requires: caml_invalid_argument, caml_new_string
// content can be : MlDIr,MlFile,MlString,Array, string
function caml_fs_register(name,content) {
var path = caml_make_path(name);
@@ -124,7 +124,7 @@ function caml_fs_register(name,content) {
else if(content instanceof MlFile) dir.mk(d,content);
else if(content instanceof MlString) dir.mk(d,new MlFile(content.getArray()));
else if(content instanceof Array) dir.mk(d,new MlFile(content));
- else if(content.toString) dir.mk(d,new MlFile((new MlString(content.toString())).getArray()));
+ else if(content.toString) dir.mk(d,new MlFile((caml_new_string(content.toString())).getArray()));
else caml_invalid_argument("caml_fs_register");
return 0;
}
@@ -202,7 +202,7 @@ function caml_fs_register_autoload(path,f){
}
//Provides: caml_sys_read_directory
-//Requires: MlString, MlDir
+//Requires: caml_new_string, MlDir
//Requires: caml_fs_content, caml_make_path, caml_raise_not_a_dir
function caml_sys_read_directory(name){
var dir = caml_fs_content(caml_make_path(name));
@@ -212,7 +212,7 @@ function caml_sys_read_directory(name){
var l = [0];
var list = dir.list();
for(var i=0;i<list.length;i++)
- l.push(new MlString(list[i]));
+ l.push(caml_new_string(list[i]));
return l;
}
diff --git a/runtime/graphics.js b/runtime/graphics.js
index db75741..0b09541 100644
--- a/runtime/graphics.js
+++ b/runtime/graphics.js
@@ -21,12 +21,12 @@ var caml_gr_state;
//Provides: caml_gr_state_get
//Requires: caml_gr_state
-//Requires: caml_named_value, MlString
+//Requires: caml_named_value, caml_new_string
function caml_gr_state_get() {
if(caml_gr_state) {
return caml_gr_state;
}
- throw [0,caml_named_value("Graphics.Graphic_failure"), new MlString("Not initialized")]
+ throw [0,caml_named_value("Graphics.Graphic_failure"), caml_new_string("Not initialized")]
}
//Provides: caml_gr_state_set
//Requires: caml_gr_state,caml_gr_state_init
@@ -92,6 +92,8 @@ function caml_gr_state_init(){
caml_gr_set_font(caml_gr_state.font);
caml_gr_set_color(caml_gr_state.color);
caml_gr_set_window_title(caml_gr_state.title);
+ //caml_gr_resize_window might reset some canvas' properties
+ caml_gr_state.context.textBaseline = 'bottom';
}
//Provides: caml_gr_state_create
diff --git a/runtime/io.js b/runtime/io.js
index 2155a8f..d141399 100644
--- a/runtime/io.js
+++ b/runtime/io.js
@@ -102,9 +102,9 @@ function caml_ml_out_channels_list () {
//Provides: caml_ml_open_descriptor_out
//Requires: js_print_stderr, js_print_stdout, caml_ml_out_channels, caml_global_data,caml_sys_open
-//Requires: caml_raise_sys_error,MlString
+//Requires: caml_raise_sys_error,caml_new_string
function caml_std_output(chan,s){
- var str = new MlString(s),slen = str.getLen();
+ var str = caml_new_string(s),slen = str.getLen();
for(var i = 0;i<slen;i++){
chan.data.array[chan.data.offset + i] = str.get(i);
}
@@ -185,30 +185,30 @@ function caml_ml_set_channel_output(chan,f) {
}
//Provides: caml_ml_input
-//Requires: caml_blit_string, MlStringFromArray
+//Requires: caml_blit_string, caml_string_of_array
function caml_ml_input (chan, s, i, l) {
var l2 = chan.data.array.length - chan.data.offset;
if (l2 < l) l = l2;
- caml_blit_string(new MlStringFromArray(chan.data.array), chan.data.offset, s, i, l);
+ caml_blit_string(caml_string_of_array(chan.data.array), chan.data.offset, s, i, l);
chan.data.offset += l;
return l;
}
//Provides: caml_fs_file_content
-//Requires: MlStringFromArray, caml_fs_content, caml_make_path, MlFile
+//Requires: caml_string_of_array, caml_fs_content, caml_make_path, MlFile
//Requires: caml_raise_not_found
function caml_fs_file_content(name) {
var path = caml_make_path(name);
var f = caml_fs_content(path);
if(f instanceof MlFile)
- return new MlStringFromArray(f.content());
+ return caml_string_of_array(f.content());
caml_raise_not_found();
}
//Provides: caml_input_value
-//Requires: caml_marshal_data_size, caml_input_value_from_string, MlStringFromArray
+//Requires: caml_marshal_data_size, caml_input_value_from_string, caml_string_of_array
function caml_input_value (chan) {
- var str = new MlStringFromArray(chan.data.array);
+ var str = caml_string_of_array(chan.data.array);
var _len = caml_marshal_data_size (str, chan.data.offset);
var res = caml_input_value_from_string(str, chan.data.offset);
chan.data.offset = str.offset;
@@ -290,7 +290,7 @@ function caml_ml_flush (oc) {
//Provides: caml_ml_output
//Requires: caml_ml_flush
-//Requires: MlString, caml_create_string, caml_blit_string, caml_raise_sys_error
+//Requires: caml_create_string, caml_blit_string, caml_raise_sys_error
function caml_ml_output (oc,buffer,offset,len) {
if(! oc.opened) caml_raise_sys_error("Cannot output to a closed channel");
var string;
@@ -353,10 +353,10 @@ function caml_ml_pos_out_64(chan) {
//Provides: caml_ml_output_int
//Requires: caml_ml_output
-//Requires: MlStringFromArray
+//Requires: caml_string_of_array
function caml_ml_output_int (oc,i) {
var arr = [(i>>24) & 0xFF,(i>>16) & 0xFF,(i>>8) & 0xFF,i & 0xFF ];
- var s = new MlStringFromArray(arr);
+ var s = caml_string_of_array(arr);
caml_ml_output(oc,s,0,4);
return 0
}
diff --git a/runtime/jslib_js_of_ocaml.js b/runtime/jslib_js_of_ocaml.js
index 913f1da..c7e7f89 100644
--- a/runtime/jslib_js_of_ocaml.js
+++ b/runtime/jslib_js_of_ocaml.js
@@ -30,9 +30,6 @@ function caml_js_to_float(x) { return x; }
//Provides: caml_js_from_string mutable
//Requires: MlString
function caml_js_from_string(s) { return s.toString(); }
-//Provides: caml_js_to_string const
-//Requires: MlWrappedString
-function caml_js_to_string(s) { return new MlWrappedString(s); }
//Provides: caml_js_from_array mutable
function caml_js_from_array(a) { return a.slice(1); }
//Provides: caml_js_to_array mutable
@@ -99,8 +96,8 @@ function caml_js_equals (x, y) { return +(x == y); }
//Requires: MlString
function caml_js_from_byte_string (s) {return s.getFullBytes();}
//Provides: caml_js_to_byte_string const
-//Requires: MlString
-function caml_js_to_byte_string (s) {return new MlString (s);}
+//Requires: caml_new_string
+function caml_js_to_byte_string (s) {return caml_new_string (s);}
//Provides: caml_js_eval_string
//Requires: MlString
diff --git a/runtime/marshal.js b/runtime/marshal.js
index 67a4e8e..6cbb496 100644
--- a/runtime/marshal.js
+++ b/runtime/marshal.js
@@ -33,7 +33,8 @@ var caml_marshal_constants = {
}
//Provides: caml_input_value_from_string mutable
-//Requires: caml_failwith, MlStringFromArray, MlString, caml_marshal_constants
+//Requires: caml_failwith, caml_string_of_array, caml_new_string
+//Requires: caml_marshal_constants
//Requires: caml_int64_float_of_bits, caml_int64_of_bytes
var caml_input_value_from_string = function (){
function ArrayReader (a, i) { this.a = a; this.i = i; }
@@ -63,7 +64,7 @@ var caml_input_value_from_string = function (){
readstr:function (len) {
var i = this.i;
this.i = i + len;
- return new MlStringFromArray(this.a.slice(i, i + len));
+ return caml_string_of_array(this.a.slice(i, i + len));
}
}
function StringReader (s, i) { this.s = s; this.i = i; }
@@ -95,7 +96,7 @@ var caml_input_value_from_string = function (){
readstr:function (len) {
var i = this.i;
this.i = i + len;
- return new MlString(this.s.substring(i, i + len));
+ return caml_new_string(this.s.substring(i, i + len));
}
}
function caml_float_of_bytes (a) {
@@ -396,10 +397,10 @@ var caml_output_val = function (){
} ();
//Provides: caml_output_value_to_string mutable
-//Requires: caml_output_val, MlStringFromArray
+//Requires: caml_output_val, caml_string_of_array
function caml_output_value_to_string (v, _fl) {
/* ignores flags... */
- return new MlStringFromArray (caml_output_val (v));
+ return caml_string_of_array (caml_output_val (v));
}
//Provides: caml_output_value_to_buffer
diff --git a/runtime/md5.js b/runtime/md5.js
index e40bc74..e73fed4 100644
--- a/runtime/md5.js
+++ b/runtime/md5.js
@@ -19,16 +19,16 @@
//Provides: caml_md5_chan
-//Requires: caml_md5_string, MlStringFromArray
+//Requires: caml_md5_string, caml_string_of_array
function caml_md5_chan(chan,len){
if(len<0){
len=chan.data.array.length - chan.data.offset;
}
- return caml_md5_string(new MlStringFromArray(chan.data.array),chan.data.offset,len);
+ return caml_md5_string(caml_string_of_array(chan.data.array),chan.data.offset,len);
}
//Provides: caml_md5_string
-//Requires: MlString, MlStringFromArray
+//Requires: caml_string_of_array
var caml_md5_string =
function () {
function add (x, y) { return (x + y) | 0; }
@@ -160,6 +160,6 @@ function () {
}
for (; i < len; i++) buf[i>>2] |= b.charCodeAt(i + ofs) << (8 * (i & 3));
}
- return new MlStringFromArray(md5(buf, len));
+ return caml_string_of_array(md5(buf, len));
}
} ();
diff --git a/runtime/mlString.js b/runtime/mlString.js
index ddbae66..1dcf1c5 100644
--- a/runtime/mlString.js
+++ b/runtime/mlString.js
@@ -41,9 +41,13 @@ function caml_str_repeat(n, s) {
//Provides: MlString
//Requires: caml_raise_with_arg, js_print_stderr, caml_global_data, caml_str_repeat
function MlString(param) {
- if (param != null) {
+ this.string = this.array = null;
+ if (param !== undefined) {
this.bytes = this.fullBytes = param;
this.last = this.len = param.length;
+ } else {
+ this.bytes = this.fullBytes = null;
+ this.len = null; this.last = 0;
}
}
//This is here to avoid circular deps
@@ -52,16 +56,16 @@ function mlstring_bound_error () {
}
MlString.prototype = {
// JS string : Utf16
- string:null,
+ // string:null,
// byte string
- bytes:null,
- fullBytes:null,
+ // bytes:null,
+ // fullBytes:null,
// byte array
- array:null,
+ // array:null,
// length
- len:null,
+ // len:null,
// last initialized byte
- last:0,
+ // last:0,
toJsString:function() {
// assumes this.string == null
@@ -242,30 +246,28 @@ MlString.prototype = {
// Conversion Javascript -> Caml
-//Provides: MlWrappedString
+//Provides: caml_js_to_string const
//Requires: MlString
-function MlWrappedString (s) { this.string = s; }
-MlWrappedString.prototype = new MlString();
-
-// Uninitialized Caml string
-//Provides: MlMakeString
-//Requires: MlString
-function MlMakeString (l) { this.bytes = ""; this.len = l; }
-MlMakeString.prototype = new MlString ();
+function caml_js_to_string(s) {
+ var x = new MlString (); x.string = s; return x;
+}
// Caml string initialized form an array of bytes
-//Provides: MlStringFromArray
+//Provides: caml_string_of_array
//Requires: MlString
-function MlStringFromArray (a) {
- var len = a.length; this.array = a; this.len = this.last = len;
+function caml_string_of_array (a) {
+ var s = new MlString ();
+ var len = a.length; s.array = a; s.len = s.last = len;
+ return s;
}
-MlStringFromArray.prototype = new MlString ();
//Provides: caml_create_string const
-//Requires: MlMakeString,caml_invalid_argument
+//Requires: MlString,caml_invalid_argument
function caml_create_string(len) {
if (len < 0) caml_invalid_argument("String.create");
- return new MlMakeString(len);
+ var s = new MlString();
+ s.bytes = ""; s.len = len;
+ return s;
}
//Provides: caml_fill_string
//Requires: MlString
diff --git a/runtime/stdlib.js b/runtime/stdlib.js
index 72f7628..658ff00 100644
--- a/runtime/stdlib.js
+++ b/runtime/stdlib.js
@@ -74,9 +74,9 @@ function caml_raise_constant (tag) { throw tag; }
function caml_raise_with_arg (tag, arg) { throw [0, tag, arg]; }
//Provides: caml_raise_with_string
-//Requires: caml_raise_with_arg,MlWrappedString
+//Requires: caml_raise_with_arg,caml_new_string
function caml_raise_with_string (tag, msg) {
- caml_raise_with_arg (tag, new MlWrappedString (msg));
+ caml_raise_with_arg (tag, caml_new_string (msg));
}
//Provides: caml_raise_sys_error
@@ -91,7 +91,7 @@ function caml_failwith (msg) {
caml_raise_with_string(caml_global_data[3], msg);
}
//Provides: caml_wrap_exception
-//Requires: caml_global_data,MlWrappedString,caml_named_value
+//Requires: caml_global_data,caml_js_to_string,caml_named_value
function caml_wrap_exception(e) {
if(e instanceof Array) return e;
//Stack_overflow: chrome, safari
@@ -110,7 +110,7 @@ function caml_wrap_exception(e) {
if(e instanceof joo_global_object.Error)
return [0,caml_named_value("jsError"),e];
//fallback: wrapped in Failure
- return [0,caml_global_data[3],new MlWrappedString (String(e))];
+ return [0,caml_global_data[3],caml_js_to_string (String(e))];
}
//Provides: caml_invalid_argument
@@ -457,7 +457,7 @@ function caml_parse_format (fmt) {
}
//Provides: caml_finish_formatting
-//Requires: MlWrappedString
+//Requires: caml_new_string
function caml_finish_formatting(f, rawbuffer) {
if (f.uppercase) rawbuffer = rawbuffer.toUpperCase();
var len = rawbuffer.length;
@@ -482,13 +482,14 @@ function caml_finish_formatting(f, rawbuffer) {
buffer += rawbuffer;
if (f.justify == '-')
for (var i = len; i < f.width; i++) buffer += ' ';
- return new MlWrappedString (buffer);
+ return caml_new_string (buffer);
}
//Provides: caml_format_int const
-//Requires: caml_parse_format, caml_finish_formatting, MlWrappedString,caml_str_repeat
+//Requires: caml_parse_format, caml_finish_formatting, caml_str_repeat
+//Requires: caml_new_string
function caml_format_int(fmt, i) {
- if (fmt.toString() == "%d") return new MlWrappedString(""+i);
+ if (fmt.toString() == "%d") return caml_new_string(""+i);
var f = caml_parse_format(fmt);
if (i < 0) { if (f.signedconv) { f.sign = -1; i = -i; } else i >>>= 0; }
var s = i.toString(f.base);
@@ -609,18 +610,18 @@ function () {
var HASH_QUEUE_SIZE = 256;
function ROTL32(x,n) { return ((x << n) | (x >>> (32-n))); }
function MIX(h,d) {
- d = caml_mul(d, 0xcc9e2d51);
+ d = caml_mul(d, 0xcc9e2d51|0);
d = ROTL32(d, 15);
d = caml_mul(d, 0x1b873593);
h ^= d;
h = ROTL32(h, 13);
- return ((((h * 5)|0) + 0xe6546b64)|0);
+ return (((h + (h << 2))|0) + (0xe6546b64|0))|0;
}
function FINAL_MIX(h) {
h ^= h >>> 16;
- h = caml_mul (h, 0x85ebca6b);
+ h = caml_mul (h, 0x85ebca6b|0);
h ^= h >>> 13;
- h = caml_mul (h, 0xc2b2ae35);
+ h = caml_mul (h, 0xc2b2ae35|0);
h ^= h >>> 16;
return h;
}
@@ -742,9 +743,9 @@ function () {
var caml_initial_time = new Date() * 0.001;
function caml_sys_time () { return new Date() * 0.001 - caml_initial_time; }
//Provides: caml_sys_get_config const
-//Requires: MlWrappedString
+//Requires: caml_new_string
function caml_sys_get_config () {
- return [0, new MlWrappedString("Unix"), 32, 0];
+ return [0, caml_new_string("Unix"), 32, 0];
}
//Provides: caml_sys_random_seed mutable
//The function needs to return an array since OCaml 4.0...
@@ -850,7 +851,7 @@ function caml_convert_raw_backtrace () { return 0; }
function caml_get_current_callstack () { return 0; }
//Provides: caml_sys_getenv
//Requires: caml_raise_not_found
-//Requires: MlWrappedString
+//Requires: caml_js_to_string
function caml_sys_getenv (name) {
var g = joo_global_object;
var n = name.toString();
@@ -858,7 +859,7 @@ function caml_sys_getenv (name) {
if(g.process
&& g.process.env
&& g.process.env[n] != undefined)
- return new MlWrappedString(g.process.env[n]);
+ return caml_js_to_string(g.process.env[n]);
caml_raise_not_found ();
}
//Provides: caml_sys_exit
@@ -872,7 +873,7 @@ function caml_sys_exit (code) {
}
//Provides: caml_sys_get_argv const
-//Requires: MlWrappedString
+//Requires: caml_js_to_string
function caml_sys_get_argv () {
var g = joo_global_object;
var main = "a.out";
@@ -886,10 +887,10 @@ function caml_sys_get_argv () {
args = g.process.argv.slice(2);
}
- var p = new MlWrappedString(main);
+ var p = caml_js_to_string(main);
var args2 = [0, p];
for(var i = 0; i < args.length; i++)
- args2.push(new MlWrappedString(args[i]));
+ args2.push(caml_js_to_string(args[i]));
return [0, p, args2];
}
@@ -906,3 +907,10 @@ function caml_set_oo_id (b) {
//Provides: caml_install_signal_handler const
function caml_install_signal_handler(){return 0}
+
+
+//Provides: caml_convert_raw_backtrace_slot
+//Requires: caml_failwith
+function caml_convert_raw_backtrace_slot(){
+ caml_failwith("caml_convert_raw_backtrace_slot");
+}
diff --git a/runtime/toplevel.js b/runtime/toplevel.js
index e36a709..b26fe76 100644
--- a/runtime/toplevel.js
+++ b/runtime/toplevel.js
@@ -54,8 +54,8 @@ function caml_reify_bytecode (code, _sz) {
function caml_static_release_bytecode () { return 0; }
//Provides: caml_static_alloc
-//Requires: MlMakeString
-function caml_static_alloc (len) { return new MlMakeString (len); }
+//Requires: caml_create_string
+function caml_static_alloc (len) { return caml_create_string (len); }
//Provides: caml_static_free
function caml_static_free () { return 0; }
diff --git a/toplevel/Makefile b/toplevel/Makefile
index f16eddc..2b77178 100644
--- a/toplevel/Makefile
+++ b/toplevel/Makefile
@@ -16,8 +16,11 @@ ifneq ($(HIGLO),)
OPTCOMP_OPT+= -let higlo=true
endif
-SYNTAXES= lwt.syntax js_of_ocaml.syntax js_of_ocaml.deriving.syntax deriving.syntax.std
-
+ifneq ($(NO_SYNTAXES),1)
+SYNTAXES= lwt.syntax \
+ js_of_ocaml.syntax \
+ js_of_ocaml.deriving.syntax deriving.syntax.std
+endif
JSFILES= +weak.js +toplevel.js +graphics.js +nat.js
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/js-of-ocaml.git
More information about the Pkg-ocaml-maint-commits
mailing list