diff --git a/jscomp/ext_ident.ml b/jscomp/ext_ident.ml index aab3ac1c9c..0ff91c3ced 100644 --- a/jscomp/ext_ident.ml +++ b/jscomp/ext_ident.ml @@ -225,6 +225,7 @@ let convert (name : string) = | '|' -> Buffer.add_string buffer "$pipe" | '.' -> Buffer.add_string buffer "$dot" | '%' -> Buffer.add_string buffer "$percent" + | '~' -> Buffer.add_string buffer "$tilde" | 'a'..'z' | 'A'..'Z'| '_'|'$' |'0'..'9'-> Buffer.add_char buffer c | _ -> Buffer.add_string buffer "$unknown" done; Buffer.contents buffer) diff --git a/jscomp/ext_pervasives.ml b/jscomp/ext_pervasives.ml index e31fe5cc4b..1df0491c53 100644 --- a/jscomp/ext_pervasives.ml +++ b/jscomp/ext_pervasives.ml @@ -40,3 +40,14 @@ let with_file_as_pp filename f = Format.pp_print_flush fmt (); v ) close_out + + +let is_pos_pow n = + let module M = struct exception E end in + let rec aux c (n : Int32.t) = + if n <= 0l then -2 + else if n = 1l then c + else if Int32.logand n 1l = 0l then + aux (c + 1) (Int32.shift_right n 1 ) + else raise M.E in + try aux 0 n with M.E -> -1 diff --git a/jscomp/ext_pervasives.mli b/jscomp/ext_pervasives.mli index bd47a063f1..61768a8b62 100644 --- a/jscomp/ext_pervasives.mli +++ b/jscomp/ext_pervasives.mli @@ -29,3 +29,5 @@ val finally : 'a -> ('a -> 'b) -> ('a -> 'c) -> 'b val with_file_as_chan : string -> (out_channel -> 'a) -> 'a val with_file_as_pp : string -> (Format.formatter -> 'a) -> 'a + +val is_pos_pow : Int32.t -> int diff --git a/jscomp/js_analyzer.ml b/jscomp/js_analyzer.ml index 033445c8e6..ffab6dc1e2 100644 --- a/jscomp/js_analyzer.ml +++ b/jscomp/js_analyzer.ml @@ -71,8 +71,8 @@ let free_variables_of_statement used_idents defined_idents st = let free_variables_of_expression used_idents defined_idents st = ((free_variables used_idents defined_idents)#expression st) # get_depenencies -let rec no_side_effect (x : J.expression) = - match x.expression_desc with +let rec no_side_effect_expression_desc (x : J.expression_desc) = + match x with | Bool _ -> true | Var _ -> true | Access (a,b) -> no_side_effect a && no_side_effect b @@ -125,6 +125,8 @@ let rec no_side_effect (x : J.expression) = | Caml_block_set_tag _ | Caml_block_set_length _ (* actually true? *) -> false +and no_side_effect (x : J.expression) = + no_side_effect_expression_desc x.expression_desc let no_side_effect_expression (x : J.expression) = no_side_effect x diff --git a/jscomp/js_analyzer.mli b/jscomp/js_analyzer.mli index a97388ce43..aabf100d8a 100644 --- a/jscomp/js_analyzer.mli +++ b/jscomp/js_analyzer.mli @@ -31,8 +31,10 @@ val free_variables_of_statement : val free_variables_of_expression : Ident_set.t -> Ident_set.t -> J.finish_ident_expression -> Ident_set.t +val no_side_effect_expression_desc : + J.expression_desc -> bool val no_side_effect_expression : - J.expression -> bool + J.expression -> bool (** [no_side_effect] means this expression has no side effect, but it might *depend on value store*, so you can not just move it around, diff --git a/jscomp/js_exp_make.ml b/jscomp/js_exp_make.ml index d94e67d2eb..7929f553d9 100644 --- a/jscomp/js_exp_make.ml +++ b/jscomp/js_exp_make.ml @@ -916,7 +916,7 @@ let to_uint32 ?comment (e : J.expression) : J.expression = we can apply a more general optimization here, do some algebraic rewerite rules to rewrite [triple_equal] *) -let is_out ?comment (e : t) (range : t) : t = +let rec is_out ?comment (e : t) (range : t) : t = begin match range.expression_desc, e.expression_desc with | Number (Int {i = 1l}), Var _ @@ -925,8 +925,8 @@ let is_out ?comment (e : t) (range : t) : t = | Number (Int {i = 1l}), ( Bin (Plus , {expression_desc = Number (Int {i ; _}) }, {expression_desc = Var _; _}) - | Bin (Plus, {expression_desc = Var _; _}, {expression_desc = Number (Int {i ; _}) }) - ) + | Bin (Plus, {expression_desc = Var _; _}, {expression_desc = Number (Int {i ; _}) })) + -> not (or_ (triple_equal e (int (Int32.neg i ))) (triple_equal e (int (Int32.sub Int32.one i)))) | Number (Int {i = 1l}), @@ -946,6 +946,16 @@ let is_out ?comment (e : t) (range : t) : t = *) or_ (int_comp Cgt e (int ( k))) (int_comp Clt e zero_int_literal) + | _, Bin (Bor , + ({expression_desc = + (Bin((Plus | Minus ) , + {expression_desc = Number (Int {i ; _}) }, {expression_desc = Var _; _}) + |Bin((Plus | Minus ) , + {expression_desc = Var _; _}, {expression_desc = Number (Int {i ; _}) } )) + } as e), {expression_desc = Number (Int {i=0l} | Uint 0l | Nint 0n); _}) + -> + (* TODO: check correctness *) + is_out ?comment e range | _, _ -> int_comp ?comment Cgt (to_uint32 e) range end @@ -1004,9 +1014,6 @@ let int32_minus ?comment e1 e2 : J.expression = let unchecked_int32_minus ?comment e1 e2 : J.expression = float_minus ?comment e1 e2 -let unchecked_prefix_inc ?comment (i : J.vident) = - let v : t = {expression_desc = Var i; comment = None} in - assign ?comment v (unchecked_int32_add v one_int_literal) let float_div ?comment e1 e2 = @@ -1034,22 +1041,6 @@ let int32_div ?comment (e1 : J.expression) (e2 : J.expression) to_int32 (float_div ?comment e1 e2) -(* TODO: call primitive *) -let int32_mul ?comment - (e1 : J.expression) - (e2 : J.expression) : J.expression = - match e1.expression_desc, e2.expression_desc with - | Number (Int{i = i0}), Number (Int {i = i1}) - -> int (Int32.mul i0 i1) - | _ -> - { comment ; - expression_desc = Bin (Mul, e1,e2) - } - -let unchecked_int32_mul ?comment e1 e2 : J.expression = - { comment ; - expression_desc = Bin (Mul, e1,e2) - } let float_mul ?comment e1 e2 = bin ?comment Mul e1 e2 @@ -1068,6 +1059,32 @@ let int32_lsl ?comment e1 e2 : J.expression = } +let int32_mul ?comment + (e1 : J.expression) + (e2 : J.expression) : J.expression = + match e1, e2 with + | {expression_desc = Number (Int {i = 0l}| Uint 0l | Nint 0n); _}, x + | x, {expression_desc = Number (Int {i = 0l}| Uint 0l | Nint 0n); _} + when Js_analyzer.no_side_effect_expression x + -> zero_int_literal + | {expression_desc = Number (Int{i = i0}); _}, {expression_desc = Number (Int {i = i1}); _} + -> int (Int32.mul i0 i1) + | e , {expression_desc = Number (Int {i = i0} | Uint i0 ); _} + | {expression_desc = Number (Int {i = i0} | Uint i0 ); _}, e + -> + let i = Ext_pervasives.is_pos_pow i0 in + if i >= 0 then + int32_lsl e (small_int i) + else + runtime_call ?comment Js_config.prim "imul" [e1;e2] + | _ -> + runtime_call ?comment Js_config.prim "imul" [e1;e2] + +let unchecked_int32_mul ?comment e1 e2 : J.expression = + { comment ; + expression_desc = Bin (Mul, e1,e2) + } + let rec int32_bxor ?comment (e1 : t) (e2 : t) : J.expression = diff --git a/jscomp/js_exp_make.mli b/jscomp/js_exp_make.mli index cc4b097baa..7f2f228fa3 100644 --- a/jscomp/js_exp_make.mli +++ b/jscomp/js_exp_make.mli @@ -228,9 +228,6 @@ val inc : unary_op val dec : unary_op -val unchecked_prefix_inc : ?comment:string -> J.vident -> t - - diff --git a/jscomp/lam_compile.ml b/jscomp/lam_compile.ml index 7ef84957b4..6bbe414333 100644 --- a/jscomp/lam_compile.ml +++ b/jscomp/lam_compile.ml @@ -1194,7 +1194,7 @@ and match lambda with | Lprim(Poffsetint v, [Lvar id']) when Ident.same id id' -> [ S.exp (E.assign (E.var id) - (E.unchecked_int32_add (E.var id) (E.small_int v))) + (E.int32_add (E.var id) (E.small_int v))) ] | _ -> begin diff --git a/jscomp/lam_compile_primitive.ml b/jscomp/lam_compile_primitive.ml index 4f6bb66f1d..139553ea4e 100644 --- a/jscomp/lam_compile_primitive.ml +++ b/jscomp/lam_compile_primitive.ml @@ -81,12 +81,6 @@ let translate (** Negate boxed int end*) (* Int addition and subtraction *) | Paddint - -> - begin match args with - | [e1; e2] - -> E.unchecked_int32_add e1 e2 - | _ -> assert false - end | Paddbint Pint32 -> begin match args with @@ -340,14 +334,14 @@ let translate end | Poffsetint n -> begin match args with - | [e] -> E.unchecked_int32_add e (E.small_int n) + | [e] -> E.int32_add e (E.small_int n) | _ -> assert false end | Poffsetref n -> begin match args with | [e] -> let v = (Js_of_lam_block.field Fld_na e 0l) in - E.assign v (E.unchecked_int32_add v (E.small_int n)) + E.assign v (E.int32_add v (E.small_int n)) | _ -> assert false end diff --git a/jscomp/runtime/caml_array.js b/jscomp/runtime/caml_array.js index 5402b386d5..97e05ec4bd 100644 --- a/jscomp/runtime/caml_array.js +++ b/jscomp/runtime/caml_array.js @@ -8,8 +8,8 @@ function caml_array_sub(x, offset, len) { var i = offset; while(j < len) { result[j] = x[i]; - ++ j; - ++ i; + j = j + 1 | 0; + i = i + 1 | 0; }; return result; } @@ -20,7 +20,7 @@ function len(_acc, _l) { var acc = _acc; if (l) { _l = l[1]; - _acc = l[0].length + acc; + _acc = l[0].length + acc | 0; continue ; } @@ -41,8 +41,8 @@ function fill(arr, _i, _l) { var j = 0; while(j < l$1) { arr[k] = x[j]; - ++ k; - ++ j; + k = k + 1 | 0; + j = j + 1 | 0; }; _l = l[1]; _i = k; @@ -73,13 +73,13 @@ function caml_make_vect(len, init) { function caml_array_blit(a1, i1, a2, i2, len) { if (i2 <= i1) { for(var j = 0 ,j_finish = len - 1; j<= j_finish; ++j){ - a2[j + i2] = a1[j + i1]; + a2[j + i2 | 0] = a1[j + i1 | 0]; } return /* () */0; } else { for(var j$1 = len - 1; j$1>= 0; --j$1){ - a2[j$1 + i2] = a1[j$1 + i1]; + a2[j$1 + i2 | 0] = a1[j$1 + i1 | 0]; } return /* () */0; } diff --git a/jscomp/runtime/caml_format.js b/jscomp/runtime/caml_format.js index 7f9c675f7d..0713510b60 100644 --- a/jscomp/runtime/caml_format.js +++ b/jscomp/runtime/caml_format.js @@ -3,6 +3,7 @@ var Caml_int64 = require("./caml_int64"); var Caml_builtin_exceptions = require("./caml_builtin_exceptions"); +var Caml_primitive = require("./caml_primitive"); var Caml_utils = require("./caml_utils"); var Caml_string = require("./caml_string"); @@ -65,46 +66,46 @@ function parse_sign_and_base(s) { var i = 0; if (s[i] === "-") { sign = -1; - ++ i; + i = i + 1 | 0; } var match = s.charCodeAt(i); - var match$1 = s.charCodeAt(i + 1); + var match$1 = s.charCodeAt(i + 1 | 0); if (match === 48) { if (match$1 >= 89) { if (match$1 !== 98) { if (match$1 !== 111) { if (match$1 === 120) { base = /* Hex */1; - i += 2; + i = i + 2 | 0; } } else { base = /* Oct */0; - i += 2; + i = i + 2 | 0; } } else { base = /* Bin */3; - i += 2; + i = i + 2 | 0; } } else if (match$1 !== 66) { if (match$1 !== 79) { if (match$1 >= 88) { base = /* Hex */1; - i += 2; + i = i + 2 | 0; } } else { base = /* Oct */0; - i += 2; + i = i + 2 | 0; } } else { base = /* Bin */3; - i += 2; + i = i + 2 | 0; } } return /* tuple */[ @@ -138,7 +139,7 @@ function caml_int_of_string(s) { else { var a = s.charCodeAt(k); if (a === /* "_" */95) { - _k = k + 1; + _k = k + 1 | 0; continue ; } @@ -159,7 +160,7 @@ function caml_int_of_string(s) { ]; } else { - _k = k + 1; + _k = k + 1 | 0; _acc = acc$1; continue ; @@ -169,7 +170,7 @@ function caml_int_of_string(s) { } }; }; - var res = match[1] * aux(d, i + 1); + var res = match[1] * aux(d, i + 1 | 0); var or_res = res | 0; if (base === 10 && res !== or_res) { throw [ @@ -236,7 +237,7 @@ function caml_int64_of_string(s) { else { var a = s.charCodeAt(k); if (a === /* "_" */95) { - _k = k + 1; + _k = k + 1 | 0; continue ; } @@ -260,7 +261,7 @@ function caml_int64_of_string(s) { ]; } else { - _k = k + 1; + _k = k + 1 | 0; _acc = acc$1; continue ; @@ -270,7 +271,7 @@ function caml_int64_of_string(s) { } }; }; - var res = Caml_int64.mul(sign, aux(d, i + 1)); + var res = Caml_int64.mul(sign, aux(d, i + 1 | 0)); var or_res_000 = res[0] | 0; var or_res_001 = (res[1] >>> 0); var or_res = /* int64 */[ @@ -303,7 +304,7 @@ function int_of_base(param) { function lowercase(c) { if (c >= /* "A" */65 && c <= /* "Z" */90 || c >= /* "\192" */192 && c <= /* "\214" */214 || c >= /* "\216" */216 && c <= /* "\222" */222) { - return c + 32; + return c + 32 | 0; } else { return c; @@ -346,11 +347,11 @@ function parse_format(fmt) { exit = 1; } else { - switch (c - 88) { + switch (c - 88 | 0) { case 0 : f[/* base */4] = /* Hex */1; f[/* uppercase */7] = /* true */1; - _i = i + 1; + _i = i + 1 | 0; continue ; case 13 : case 14 : @@ -363,11 +364,11 @@ function parse_format(fmt) { break; case 23 : f[/* base */4] = /* Oct */0; - _i = i + 1; + _i = i + 1 | 0; continue ; case 29 : f[/* base */4] = /* Dec */2; - _i = i + 1; + _i = i + 1 | 0; continue ; case 1 : case 2 : @@ -397,7 +398,7 @@ function parse_format(fmt) { break; case 32 : f[/* base */4] = /* Hex */1; - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -410,13 +411,13 @@ function parse_format(fmt) { f[/* signedconv */5] = /* true */1; f[/* uppercase */7] = /* true */1; f[/* conv */10] = String.fromCharCode(lowercase(c)); - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - var switcher = c - 32; + var switcher = c - 32 | 0; if (switcher > 25 || switcher < 0) { exit = 1; } @@ -424,7 +425,7 @@ function parse_format(fmt) { switch (switcher) { case 3 : f[/* alternate */3] = /* true */1; - _i = i + 1; + _i = i + 1 | 0; continue ; case 0 : case 11 : @@ -432,19 +433,19 @@ function parse_format(fmt) { break; case 13 : f[/* justify */0] = "-"; - _i = i + 1; + _i = i + 1 | 0; continue ; case 14 : f[/* prec */9] = 0; - var j = i + 1; + var j = i + 1 | 0; while((function(j){ return function () { var w = fmt.charCodeAt(j) - /* "0" */48; return +(w >= 0 && w <= 9); } }(j))()) { - f[/* prec */9] = f[/* prec */9] * 10 + fmt.charCodeAt(j) - /* "0" */48; - ++ j; + f[/* prec */9] = (Caml_primitive.imul(f[/* prec */9], 10) + fmt.charCodeAt(j) | 0) - /* "0" */48; + j = j + 1 | 0; }; _i = j; continue ; @@ -463,7 +464,7 @@ function parse_format(fmt) { break; case 16 : f[/* filter */2] = "0"; - _i = i + 1; + _i = i + 1 | 0; continue ; case 17 : case 18 : @@ -482,11 +483,11 @@ function parse_format(fmt) { } switch (exit) { case 1 : - _i = i + 1; + _i = i + 1 | 0; continue ; case 2 : f[/* signstyle */1] = String.fromCharCode(c); - _i = i + 1; + _i = i + 1 | 0; continue ; case 3 : f[/* width */6] = 0; @@ -497,20 +498,20 @@ function parse_format(fmt) { return +(w >= 0 && w <= 9); } }(j$1))()) { - f[/* width */6] = f[/* width */6] * 10 + fmt.charCodeAt(j$1) - /* "0" */48; - ++ j$1; + f[/* width */6] = (Caml_primitive.imul(f[/* width */6], 10) + fmt.charCodeAt(j$1) | 0) - /* "0" */48; + j$1 = j$1 + 1 | 0; }; _i = j$1; continue ; case 4 : f[/* signedconv */5] = /* true */1; f[/* base */4] = /* Dec */2; - _i = i + 1; + _i = i + 1 | 0; continue ; case 5 : f[/* signedconv */5] = /* true */1; f[/* conv */10] = String.fromCharCode(c); - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -530,17 +531,17 @@ function finish_formatting(param, rawbuffer) { var sign = param[/* sign */8]; var len = rawbuffer.length; if (signedconv && (sign < 0 || signstyle !== "-")) { - ++ len; + len = len + 1 | 0; } if (alternate) { if (base) { if (base === /* Hex */1) { - len += 2; + len = len + 2 | 0; } } else { - ++ len; + len = len + 1 | 0; } } var buffer = ""; @@ -745,16 +746,16 @@ function caml_format_float(fmt, x) { var prec$1 = prec !== 0 ? prec : 1; s = x$1.toExponential(prec$1 - 1); var j = s.indexOf("e"); - var exp = +s.slice(j + 1); + var exp = +s.slice(j + 1 | 0); if (exp < -4 || x$1 >= 1e21 || x$1.toFixed(0).length > prec$1) { var i$1 = j - 1; while(s[i$1] === "0") { - -- i$1; + i$1 = i$1 - 1 | 0; }; if (s[i$1] === ".") { - -- i$1; + i$1 = i$1 - 1 | 0; } - s = s.slice(0, i$1 + 1) + s.slice(j); + s = s.slice(0, i$1 + 1 | 0) + s.slice(j); var i$2 = s.length; if (s[i$2 - 3] === "e") { s = s.slice(0, i$2 - 1) + ("0" + s.slice(i$2 - 1)); @@ -764,26 +765,26 @@ function caml_format_float(fmt, x) { else { var p = prec$1; if (exp < 0) { - p -= (exp + 1); + p -= (exp + 1 | 0); s = x$1.toFixed(p); } else { while(function () { s = x$1.toFixed(p); - return +(s.length > prec$1 + 1); + return +(s.length > (prec$1 + 1 | 0)); }()) { - -- p; + p = p - 1 | 0; }; } if (p !== 0) { var k = s.length - 1; while(s[k] === "0") { - -- k; + k = k - 1 | 0; }; if (s[k] === ".") { - -- k; + k = k - 1 | 0; } - s = s.slice(0, k + 1); + s = s.slice(0, k + 1 | 0); } } diff --git a/jscomp/runtime/caml_io.js b/jscomp/runtime/caml_io.js index 0ab1332ca7..111ba762f7 100644 --- a/jscomp/runtime/caml_io.js +++ b/jscomp/runtime/caml_io.js @@ -81,9 +81,9 @@ function caml_ml_output(oc, str, offset, len) { return /* () */0; } else { - oc[/* buffer */0] = oc[/* buffer */0] + str$1.slice(0, id + 1); + oc[/* buffer */0] = oc[/* buffer */0] + str$1.slice(0, id + 1 | 0); caml_ml_flush(oc); - oc[/* buffer */0] = oc[/* buffer */0] + str$1.slice(id + 1); + oc[/* buffer */0] = oc[/* buffer */0] + str$1.slice(id + 1 | 0); return /* () */0; } } diff --git a/jscomp/runtime/caml_obj.js b/jscomp/runtime/caml_obj.js index f23d9a8892..0b02dfaee6 100644 --- a/jscomp/runtime/caml_obj.js +++ b/jscomp/runtime/caml_obj.js @@ -134,7 +134,7 @@ function caml_compare(_a, _b) { return res; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -157,7 +157,7 @@ function caml_compare(_a, _b) { return res$1; } else { - _i$1 = i$1 + 1; + _i$1 = i$1 + 1 | 0; continue ; } @@ -180,7 +180,7 @@ function caml_compare(_a, _b) { return res$2; } else { - _i$2 = i$2 + 1; + _i$2 = i$2 + 1 | 0; continue ; } @@ -241,7 +241,7 @@ function caml_equal(_a, _b) { return /* true */1; } else if (caml_equal(a$1[i], b$1[i])) { - _i = i + 1; + _i = i + 1 | 0; continue ; } diff --git a/jscomp/runtime/caml_oo.js b/jscomp/runtime/caml_oo.js index 46c2bde69b..b96848bdc8 100644 --- a/jscomp/runtime/caml_oo.js +++ b/jscomp/runtime/caml_oo.js @@ -37,7 +37,7 @@ function caml_get_public_method(obj, tag, cacheid) { } }; }; - return meths[aux(meths[0] * 2 + 1) - 1]; + return meths[aux((meths[0] << 1) + 1 | 0) - 1]; } } diff --git a/jscomp/runtime/caml_primitive.js b/jscomp/runtime/caml_primitive.js index 91888fa088..a25f4728a8 100644 --- a/jscomp/runtime/caml_primitive.js +++ b/jscomp/runtime/caml_primitive.js @@ -60,6 +60,11 @@ function caml_convert_raw_backtrace_slot() { ]; } +var imul = ( Math.imul || function (x,y) { + y |= 0; return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0; +} +); + function caml_hash(prim, prim$1, prim$2, prim$3) { return $$caml_hash(prim, prim$1, prim$2, prim$3); } @@ -72,4 +77,5 @@ exports.caml_bswap16 = caml_bswap16; exports.caml_int32_bswap = caml_int32_bswap; exports.caml_nativeint_bswap = caml_nativeint_bswap; exports.caml_convert_raw_backtrace_slot = caml_convert_raw_backtrace_slot; +exports.imul = imul; /* Not a pure module */ diff --git a/jscomp/runtime/caml_primitive.ml b/jscomp/runtime/caml_primitive.ml index a7304da616..c989243e49 100644 --- a/jscomp/runtime/caml_primitive.ml +++ b/jscomp/runtime/caml_primitive.ml @@ -83,3 +83,8 @@ let caml_convert_raw_backtrace_slot : Printexc.raw_backtrace_slot -> Printexc. b let caml_md5_string : string -> int -> int -> t = function _ -> function _ -> raise @@ Failure "caml_md5_string unimplemented" + +let imul : int32 -> int32 -> int32 = [%js.raw{| Math.imul || function (x,y) { + y |= 0; return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0; +} +|}] diff --git a/jscomp/runtime/caml_primitive.mli b/jscomp/runtime/caml_primitive.mli index 7f4d565d89..3814a5068f 100644 --- a/jscomp/runtime/caml_primitive.mli +++ b/jscomp/runtime/caml_primitive.mli @@ -26,3 +26,5 @@ val caml_int32_bswap : nativeint -> nativeint val caml_nativeint_bswap : nativeint -> nativeint val caml_convert_raw_backtrace_slot : Printexc.raw_backtrace_slot -> Printexc. backtrace_slot + +val imul :int32 -> int32 -> int32 diff --git a/jscomp/runtime/caml_string.js b/jscomp/runtime/caml_string.js index 79a9cfc8fc..f8430805b3 100644 --- a/jscomp/runtime/caml_string.js +++ b/jscomp/runtime/caml_string.js @@ -49,7 +49,7 @@ function caml_string_compare(s1, s2) { function caml_fill_string(s, i, l, c) { if (l > 0) { - for(var k = i ,k_finish = l + i - 1; k<= k_finish; ++k){ + for(var k = i ,k_finish = (l + i | 0) - 1; k<= k_finish; ++k){ s[k] = c; } return /* () */0; @@ -64,16 +64,16 @@ function caml_blit_string(s1, i1, s2, i2, len) { var off1 = s1.length - i1; if (len <= off1) { for(var i = 0 ,i_finish = len - 1; i<= i_finish; ++i){ - s2[i2 + i] = s1.charCodeAt(i1 + i); + s2[i2 + i | 0] = s1.charCodeAt(i1 + i | 0); } return /* () */0; } else { for(var i$1 = 0 ,i_finish$1 = off1 - 1; i$1<= i_finish$1; ++i$1){ - s2[i2 + i$1] = s1.charCodeAt(i1 + i$1); + s2[i2 + i$1 | 0] = s1.charCodeAt(i1 + i$1 | 0); } for(var i$2 = off1 ,i_finish$2 = len - 1; i$2<= i_finish$2; ++i$2){ - s2[i2 + i$2] = /* "\000" */0; + s2[i2 + i$2 | 0] = /* "\000" */0; } return /* () */0; } @@ -88,16 +88,16 @@ function caml_blit_bytes(s1, i1, s2, i2, len) { var off1 = s1.length - i1; if (len <= off1) { for(var i = 0 ,i_finish = len - 1; i<= i_finish; ++i){ - s2[i2 + i] = s1[i1 + i]; + s2[i2 + i | 0] = s1[i1 + i | 0]; } return /* () */0; } else { for(var i$1 = 0 ,i_finish$1 = off1 - 1; i$1<= i_finish$1; ++i$1){ - s2[i2 + i$1] = s1[i1 + i$1]; + s2[i2 + i$1 | 0] = s1[i1 + i$1 | 0]; } for(var i$2 = off1 ,i_finish$2 = len - 1; i$2<= i_finish$2; ++i$2){ - s2[i2 + i$2] = /* "\000" */0; + s2[i2 + i$2 | 0] = /* "\000" */0; } return /* () */0; } @@ -133,7 +133,7 @@ function bytes_to_string(a) { caml_blit_bytes(bytes, offset, tmp_bytes, 0, next); s = s + String.fromCharCode.apply(null,tmp_bytes); s_len -= next; - offset += next; + offset = offset + next | 0; }; return s; } diff --git a/jscomp/runtime/caml_utils.js b/jscomp/runtime/caml_utils.js index d4f45110b7..21d79d6d6f 100644 --- a/jscomp/runtime/caml_utils.js +++ b/jscomp/runtime/caml_utils.js @@ -3,15 +3,6 @@ var Caml_builtin_exceptions = require("./caml_builtin_exceptions"); - -if (!Math.imul){ - Math.imul = function (x,y) - { y |= 0; return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0; } -} - - -; - var repeat = ( (String.prototype.repeat && function (count,self){return self.repeat(count)}) || function(count , self) { if (self.length == 0 || count == 0) { @@ -59,4 +50,4 @@ function i32mod(x, y) { exports.i32div = i32div; exports.i32mod = i32mod; exports.repeat = repeat; -/* Not a pure module */ +/* repeat Not a pure module */ diff --git a/jscomp/runtime/caml_utils.ml b/jscomp/runtime/caml_utils.ml index 820624fe4b..3c12ee65c4 100644 --- a/jscomp/runtime/caml_utils.ml +++ b/jscomp/runtime/caml_utils.ml @@ -21,13 +21,6 @@ (* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul *) -[%%js.raw{| -if (!Math.imul){ - Math.imul = function (x,y) - { y |= 0; return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0; } -} - -|}] let repeat : int -> string -> string = [%js.raw{| (String.prototype.repeat && function (count,self){return self.repeat(count)}) || function(count , self) { diff --git a/jscomp/stdlib/arg.js b/jscomp/stdlib/arg.js index 1fa1db3fa4..28356c9a59 100644 --- a/jscomp/stdlib/arg.js +++ b/jscomp/stdlib/arg.js @@ -424,7 +424,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { ]; } }; - ++ current$1[0]; + current$1[0] = current$1[0] + 1 | 0; while(current$1[0] < l) { var s = argv[current$1[0]]; if (s.length >= 1 && s[0] === "-") { @@ -451,8 +451,8 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { case 0 : return Caml_curry.app1(param[0], /* () */0); case 1 : - if (current$1[0] + 1 < l) { - var arg = argv[current$1[0] + 1]; + if ((current$1[0] + 1 | 0) < l) { + var arg = argv[current$1[0] + 1 | 0]; try { Caml_curry.app1(param[0], Pervasives.bool_of_string(arg)); } @@ -478,7 +478,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { throw exn; } } - return ++ current$1[0]; + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -498,9 +498,9 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { param[0][0] = /* false */0; return /* () */0; case 4 : - if (current$1[0] + 1 < l) { - Caml_curry.app1(param[0], argv[current$1[0] + 1]); - return ++ current$1[0]; + if ((current$1[0] + 1 | 0) < l) { + Caml_curry.app1(param[0], argv[current$1[0] + 1 | 0]); + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -514,9 +514,9 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { } break; case 5 : - if (current$1[0] + 1 < l) { - param[0][0] = argv[current$1[0] + 1]; - return ++ current$1[0]; + if ((current$1[0] + 1 | 0) < l) { + param[0][0] = argv[current$1[0] + 1 | 0]; + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -530,8 +530,8 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { } break; case 6 : - if (current$1[0] + 1 < l) { - var arg$1 = argv[current$1[0] + 1]; + if ((current$1[0] + 1 | 0) < l) { + var arg$1 = argv[current$1[0] + 1 | 0]; try { Caml_curry.app1(param[0], Caml_format.caml_int_of_string(arg$1)); } @@ -557,7 +557,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { throw exn$1; } } - return ++ current$1[0]; + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -571,8 +571,8 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { } break; case 7 : - if (current$1[0] + 1 < l) { - var arg$2 = argv[current$1[0] + 1]; + if ((current$1[0] + 1 | 0) < l) { + var arg$2 = argv[current$1[0] + 1 | 0]; try { param[0][0] = Caml_format.caml_int_of_string(arg$2); } @@ -598,7 +598,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { throw exn$2; } } - return ++ current$1[0]; + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -612,8 +612,8 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { } break; case 8 : - if (current$1[0] + 1 < l) { - var arg$3 = argv[current$1[0] + 1]; + if ((current$1[0] + 1 | 0) < l) { + var arg$3 = argv[current$1[0] + 1 | 0]; try { Caml_curry.app1(param[0], Caml_format.caml_float_of_string(arg$3)); } @@ -639,7 +639,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { throw exn$3; } } - return ++ current$1[0]; + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -653,8 +653,8 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { } break; case 9 : - if (current$1[0] + 1 < l) { - var arg$4 = argv[current$1[0] + 1]; + if ((current$1[0] + 1 | 0) < l) { + var arg$4 = argv[current$1[0] + 1 | 0]; try { param[0][0] = Caml_format.caml_float_of_string(arg$4); } @@ -680,7 +680,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { throw exn$4; } } - return ++ current$1[0]; + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -697,11 +697,11 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { return List.iter(treat_action, param[0]); case 11 : var symb = param[0]; - if (current$1[0] + 1 < l) { - var arg$5 = argv[current$1[0] + 1]; + if ((current$1[0] + 1 | 0) < l) { + var arg$5 = argv[current$1[0] + 1 | 0]; if (List.mem(arg$5, symb)) { - Caml_curry.app1(param[1], argv[current$1[0] + 1]); - return ++ current$1[0]; + Caml_curry.app1(param[1], argv[current$1[0] + 1 | 0]); + return current$1[0] = current$1[0] + 1 | 0; } else { throw [ @@ -730,8 +730,8 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { case 12 : var f = param[0]; while(current$1[0] < l - 1) { - Caml_curry.app1(f, argv[current$1[0] + 1]); - ++ current$1[0]; + Caml_curry.app1(f, argv[current$1[0] + 1 | 0]); + current$1[0] = current$1[0] + 1 | 0; }; return /* () */0; @@ -755,7 +755,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { throw exn$1; } } - ++ current$1[0]; + current$1[0] = current$1[0] + 1 | 0; } else { try { @@ -773,7 +773,7 @@ function parse_argv_dynamic($staropt$star, argv, speclist, anonfun, errmsg) { throw exn$2; } } - ++ current$1[0]; + current$1[0] = current$1[0] + 1 | 0; } }; return /* () */0; @@ -872,7 +872,7 @@ function second_word(s) { return len; } else if (s[n] === " ") { - _n = n + 1; + _n = n + 1 | 0; continue ; } @@ -897,7 +897,7 @@ function max_arg_len(cur, param) { return Pervasives.max(cur, kwd.length); } else { - return Pervasives.max(cur, kwd.length + second_word(param[2])); + return Pervasives.max(cur, kwd.length + second_word(param[2]) | 0); } } @@ -917,7 +917,7 @@ function align($staropt$star, speclist) { else if (spec.tag === 11) { var msg = ksd[2]; var cutcol = second_word(msg); - var n = Pervasives.max(0, len$2 - cutcol) + 3; + var n = Pervasives.max(0, len$2 - cutcol) + 3 | 0; var spaces = Caml_string.bytes_to_string(Bytes.make(n, /* " " */32)); return /* tuple */[ kwd, diff --git a/jscomp/stdlib/array.js b/jscomp/stdlib/array.js index 20600af3a7..46198b4689 100644 --- a/jscomp/stdlib/array.js +++ b/jscomp/stdlib/array.js @@ -15,7 +15,7 @@ function init(l, f) { } else { var res = Caml_array.caml_make_vect(l, Caml_curry.app1(f, 0)); - for(var i = 1 ,i_finish = l - 1; i<= i_finish; ++i){ + for(var i = 1 ,i_finish = l - 1 | 0; i<= i_finish; ++i){ res[i] = Caml_curry.app1(f, i); } return res; @@ -28,7 +28,7 @@ function init(l, f) { function make_matrix(sx, sy, init) { var res = Caml_array.caml_make_vect(sx, /* array */[]); - for(var x = 0 ,x_finish = sx - 1; x<= x_finish; ++x){ + for(var x = 0 ,x_finish = sx - 1 | 0; x<= x_finish; ++x){ res[x] = Caml_array.caml_make_vect(sy, init); } return res; @@ -79,7 +79,7 @@ function fill(a, ofs, len, v) { ]; } else { - for(var i = ofs ,i_finish = ofs + len - 1; i<= i_finish; ++i){ + for(var i = ofs ,i_finish = (ofs + len | 0) - 1; i<= i_finish; ++i){ a[i] = v; } return /* () */0; @@ -167,7 +167,7 @@ function list_length(_accu, _param) { var accu = _accu; if (param) { _param = param[1]; - _accu = accu + 1; + _accu = accu + 1 | 0; continue ; } @@ -188,7 +188,7 @@ function of_list(l) { if (param) { a[i] = param[0]; _param = param[1]; - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -227,19 +227,19 @@ var Bottom = { function sort(cmp, a) { var maxson = function (l, i) { - var i31 = i + i + i + 1; + var i31 = ((i + i | 0) + i | 0) + 1 | 0; var x = i31; - if (i31 + 2 < l) { - if (Caml_curry.app2(cmp, a[i31], a[i31 + 1]) < 0) { - x = i31 + 1; + if ((i31 + 2 | 0) < l) { + if (Caml_curry.app2(cmp, a[i31], a[i31 + 1 | 0]) < 0) { + x = i31 + 1 | 0; } - if (Caml_curry.app2(cmp, a[x], a[i31 + 2]) < 0) { - x = i31 + 2; + if (Caml_curry.app2(cmp, a[x], a[i31 + 2 | 0]) < 0) { + x = i31 + 2 | 0; } return x; } - else if (i31 + 1 < l && Caml_curry.app2(cmp, a[i31], a[i31 + 1]) < 0) { - return i31 + 1; + else if ((i31 + 1 | 0) < l && Caml_curry.app2(cmp, a[i31], a[i31 + 1 | 0]) < 0) { + return i31 + 1 | 0; } else if (i31 < l) { return i31; @@ -336,7 +336,7 @@ function sort(cmp, a) { }; }; var l = a.length; - for(var i = ((l + 1) / 3 | 0) - 1; i>= 0; --i){ + for(var i = ((l + 1 | 0) / 3 | 0) - 1; i>= 0; --i){ trickle(l, i, a[i]); } for(var i$1 = l - 1; i$1>= 2; --i$1){ @@ -357,8 +357,8 @@ function sort(cmp, a) { function stable_sort(cmp, a) { var merge = function (src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs) { - var src1r = src1ofs + src1len; - var src2r = src2ofs + src2len; + var src1r = src1ofs + src1len | 0; + var src2r = src2ofs + src2len | 0; var _i1 = src1ofs; var _s1 = a[src1ofs]; var _i2 = src2ofs; @@ -372,43 +372,43 @@ function stable_sort(cmp, a) { var i1 = _i1; if (Caml_curry.app2(cmp, s1, s2) <= 0) { dst[d] = s1; - var i1$1 = i1 + 1; + var i1$1 = i1 + 1 | 0; if (i1$1 < src1r) { - _d = d + 1; + _d = d + 1 | 0; _s1 = a[i1$1]; _i1 = i1$1; continue ; } else { - return blit(src2, i2, dst, d + 1, src2r - i2); + return blit(src2, i2, dst, d + 1 | 0, src2r - i2); } } else { dst[d] = s2; - var i2$1 = i2 + 1; + var i2$1 = i2 + 1 | 0; if (i2$1 < src2r) { - _d = d + 1; + _d = d + 1 | 0; _s2 = src2[i2$1]; _i2 = i2$1; continue ; } else { - return blit(a, i1, dst, d + 1, src1r - i1); + return blit(a, i1, dst, d + 1 | 0, src1r - i1); } } }; }; var isortto = function (srcofs, dst, dstofs, len) { for(var i = 0 ,i_finish = len - 1; i<= i_finish; ++i){ - var e = a[srcofs + i]; - var j = dstofs + i - 1; + var e = a[srcofs + i | 0]; + var j = (dstofs + i | 0) - 1; while(j >= dstofs && Caml_curry.app2(cmp, dst[j], e) > 0) { - dst[j + 1] = dst[j]; - -- j; + dst[j + 1 | 0] = dst[j]; + j = j - 1 | 0; }; - dst[j + 1] = e; + dst[j + 1 | 0] = e; } return /* () */0; }; @@ -419,9 +419,9 @@ function stable_sort(cmp, a) { else { var l1 = len / 2 | 0; var l2 = len - l1; - sortto(srcofs + l1, dst, dstofs + l1, l2); - sortto(srcofs, a, srcofs + l2, l1); - return merge(srcofs + l2, l1, dst, dstofs + l1, l2, dst, dstofs); + sortto(srcofs + l1 | 0, dst, dstofs + l1 | 0, l2); + sortto(srcofs, a, srcofs + l2 | 0, l1); + return merge(srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs); } }; var l = a.length; diff --git a/jscomp/stdlib/bigarray.js b/jscomp/stdlib/bigarray.js index b6847d68aa..fe0203fec1 100644 --- a/jscomp/stdlib/bigarray.js +++ b/jscomp/stdlib/bigarray.js @@ -35,7 +35,7 @@ function of_array(kind, layout, data) { var ba = create(kind, layout, data.length); var ofs = layout !== 0 ? 1 : 0; for(var i = 0 ,i_finish = data.length - 1; i<= i_finish; ++i){ - Caml_bigarray.caml_ba_set_1(ba, i + ofs, data[i]); + Caml_bigarray.caml_ba_set_1(ba, i + ofs | 0, data[i]); } return ba; } @@ -79,7 +79,7 @@ function of_array$1(kind, layout, data) { ]; } for(var j = 0 ,j_finish = dim2 - 1; j<= j_finish; ++j){ - Caml_bigarray.caml_ba_set_2(ba, i + ofs, j + ofs, row[j]); + Caml_bigarray.caml_ba_set_2(ba, i + ofs | 0, j + ofs | 0, row[j]); } } return ba; @@ -153,7 +153,7 @@ function of_array$2(kind, layout, data) { ]; } for(var k = 0 ,k_finish = dim3 - 1; k<= k_finish; ++k){ - Caml_bigarray.caml_ba_set_3(ba, i + ofs, j + ofs, k + ofs, col[k]); + Caml_bigarray.caml_ba_set_3(ba, i + ofs | 0, j + ofs | 0, k + ofs | 0, col[k]); } } } diff --git a/jscomp/stdlib/buffer.js b/jscomp/stdlib/buffer.js index b1282759c3..e29b871eac 100644 --- a/jscomp/stdlib/buffer.js +++ b/jscomp/stdlib/buffer.js @@ -84,11 +84,11 @@ function reset(b) { function resize(b, more) { var len = b[/* length */2]; var new_len = len; - while(b[/* position */1] + more > new_len) { - new_len = 2 * new_len; + while((b[/* position */1] + more | 0) > new_len) { + new_len = (new_len << 1); }; if (new_len > Sys.max_string_length) { - if (b[/* position */1] + more <= Sys.max_string_length) { + if ((b[/* position */1] + more | 0) <= Sys.max_string_length) { new_len = Sys.max_string_length; } else { @@ -111,18 +111,18 @@ function add_char(b, c) { resize(b, 1); } b[/* buffer */0][pos] = c; - b[/* position */1] = pos + 1; + b[/* position */1] = pos + 1 | 0; return /* () */0; } function add_substring(b, s, offset, len) { - if (offset < 0 || len < 0 || offset + len > s.length) { + if (offset < 0 || len < 0 || (offset + len | 0) > s.length) { throw [ Caml_builtin_exceptions.invalid_argument, "Buffer.add_substring/add_subbytes" ]; } - var new_position = b[/* position */1] + len; + var new_position = b[/* position */1] + len | 0; if (new_position > b[/* length */2]) { resize(b, len); } @@ -137,7 +137,7 @@ function add_subbytes(b, s, offset, len) { function add_string(b, s) { var len = s.length; - var new_position = b[/* position */1] + len; + var new_position = b[/* position */1] + len | 0; if (new_position > b[/* length */2]) { resize(b, len); } @@ -161,11 +161,11 @@ function add_channel(b, ic, len) { "Buffer.add_channel" ]; } - if (b[/* position */1] + len > b[/* length */2]) { + if ((b[/* position */1] + len | 0) > b[/* length */2]) { resize(b, len); } Pervasives.really_input(ic, b[/* buffer */0], b[/* position */1], len); - b[1] += len; + b[/* position */1] = b[/* position */1] + len | 0; return /* () */0; } @@ -205,14 +205,14 @@ function advance_to_closing(opening, closing, k, s, start) { throw Caml_builtin_exceptions.not_found; } else if (s.charCodeAt(i) === opening) { - _i = i + 1; - _k = k$1 + 1; + _i = i + 1 | 0; + _k = k$1 + 1 | 0; continue ; } else if (s.charCodeAt(i) === closing) { if (k$1) { - _i = i + 1; + _i = i + 1 | 0; _k = k$1 - 1; continue ; @@ -222,7 +222,7 @@ function advance_to_closing(opening, closing, k, s, start) { } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -271,7 +271,7 @@ function advance_to_non_alpha(s, start) { return i; } if (exit === 1) { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -289,7 +289,7 @@ function find_ident(s, start, lim) { var exit = 0; if (c !== 40) { if (c !== 123) { - var stop = advance_to_non_alpha(s, start + 1); + var stop = advance_to_non_alpha(s, start + 1 | 0); return /* tuple */[ $$String.sub(s, start, stop - start), stop @@ -303,11 +303,11 @@ function find_ident(s, start, lim) { exit = 1; } if (exit === 1) { - var new_start = start + 1; + var new_start = start + 1 | 0; var stop$1 = advance_to_closing(c, closing(c), 0, s, new_start); return /* tuple */[ $$String.sub(s, new_start, stop$1 - start - 1), - stop$1 + 1 + stop$1 + 1 | 0 ]; } @@ -327,20 +327,20 @@ function add_substitute(b, f, s) { if (previous === /* "\\" */92) { add_char(b, /* "\\" */92); add_char(b, current); - _i = i + 1; + _i = i + 1 | 0; _previous = /* " " */32; continue ; } else if (current !== 92) { add_char(b, current); - _i = i + 1; + _i = i + 1 | 0; _previous = current; continue ; } else { - _i = i + 1; + _i = i + 1 | 0; _previous = current; continue ; @@ -348,13 +348,13 @@ function add_substitute(b, f, s) { } else if (previous === /* "\\" */92) { add_char(b, current); - _i = i + 1; + _i = i + 1 | 0; _previous = /* " " */32; continue ; } else { - var j = i + 1; + var j = i + 1 | 0; var match = find_ident(s, j, lim); add_string(b, Caml_curry.app1(f, match[0])); _i = match[1]; diff --git a/jscomp/stdlib/bytes.js b/jscomp/stdlib/bytes.js index ae99a53f32..ff83127726 100644 --- a/jscomp/stdlib/bytes.js +++ b/jscomp/stdlib/bytes.js @@ -5,6 +5,7 @@ var Caml_builtin_exceptions = require("../runtime/caml_builtin_exceptions"); var Caml_obj = require("../runtime/caml_obj"); var Pervasives = require("./pervasives"); var Char = require("./char"); +var Caml_primitive = require("../runtime/caml_primitive"); var Caml_curry = require("../runtime/caml_curry"); var Caml_string = require("../runtime/caml_string"); var List = require("./list"); @@ -59,7 +60,7 @@ function sub_string(b, ofs, len) { } function extend(s, left, right) { - var len = s.length + left + right; + var len = (s.length + left | 0) + right | 0; var r = Caml_string.caml_create_string(len); var match = left < 0 ? /* tuple */[ -left, @@ -133,18 +134,18 @@ function concat(sep, l) { var num = [0]; var len = [0]; List.iter(function (s) { - ++ num[0]; - len[0] += s.length; + num[0] = num[0] + 1 | 0; + len[0] = len[0] + s.length | 0; return /* () */0; }, l); - var r = Caml_string.caml_create_string(len[0] + sep.length * (num[0] - 1)); + var r = Caml_string.caml_create_string(len[0] + Caml_primitive.imul(sep.length, num[0] - 1) | 0); Caml_string.caml_blit_bytes(hd, 0, r, 0, hd.length); var pos = [hd.length]; List.iter(function (s) { Caml_string.caml_blit_bytes(sep, 0, r, pos[0], sep.length); - pos[0] += sep.length; + pos[0] = pos[0] + sep.length | 0; Caml_string.caml_blit_bytes(s, 0, r, pos[0], s.length); - pos[0] += s.length; + pos[0] = pos[0] + s.length | 0; return /* () */0; }, l[1]); return r; @@ -159,7 +160,7 @@ function cat(a, b) { } function is_space(param) { - var switcher = param - 9; + var switcher = param - 9 | 0; if (switcher > 4 || switcher < 0) { if (switcher !== 23) { return /* false */0; @@ -180,14 +181,14 @@ function trim(s) { var len = s.length; var i = 0; while(i < len && is_space(s[i])) { - ++ i; + i = i + 1 | 0; }; var j = len - 1; while(j >= i && is_space(s[j])) { - -- j; + j = j - 1 | 0; }; if (j >= i) { - return sub(s, i, j - i + 1); + return sub(s, i, j - i + 1 | 0); } else { return empty; @@ -225,7 +226,7 @@ function escaped(s) { if (exit === 1) { $js = Caml_string.caml_is_printable(c) ? 1 : 4; } - n += $js; + n = n + $js | 0; } if (n === s.length) { return copy(s); @@ -236,26 +237,26 @@ function escaped(s) { for(var i$1 = 0 ,i_finish$1 = s.length - 1; i$1<= i_finish$1; ++i$1){ var c$1 = s[i$1]; var exit$1 = 0; - var switcher = c$1 - 34; + var switcher = c$1 - 34 | 0; if (switcher > 58 || switcher < 0) { if (switcher >= -20) { exit$1 = 1; } else { - switch (switcher + 34) { + switch (switcher + 34 | 0) { case 8 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "b" */98; break; case 9 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "t" */116; break; case 10 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "n" */110; break; case 0 : @@ -272,7 +273,7 @@ function escaped(s) { break; case 13 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "r" */114; break; @@ -281,7 +282,7 @@ function escaped(s) { } else if (switcher > 57 || switcher < 1) { s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = c$1; } else { @@ -293,15 +294,15 @@ function escaped(s) { } else { s$prime[n] = /* "\\" */92; - ++ n; - s$prime[n] = 48 + (c$1 / 100 | 0); - ++ n; - s$prime[n] = 48 + (c$1 / 10 | 0) % 10; - ++ n; - s$prime[n] = 48 + c$1 % 10; + n = n + 1 | 0; + s$prime[n] = 48 + (c$1 / 100 | 0) | 0; + n = n + 1 | 0; + s$prime[n] = 48 + (c$1 / 10 | 0) % 10 | 0; + n = n + 1 | 0; + s$prime[n] = 48 + c$1 % 10 | 0; } } - ++ n; + n = n + 1 | 0; } return s$prime; } @@ -372,7 +373,7 @@ function index_rec(s, lim, _i, c) { return i; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } diff --git a/jscomp/stdlib/camlinternalFormat.js b/jscomp/stdlib/camlinternalFormat.js index 7ec4571709..e3113869ea 100644 --- a/jscomp/stdlib/camlinternalFormat.js +++ b/jscomp/stdlib/camlinternalFormat.js @@ -10,6 +10,7 @@ var Pervasives = require("./pervasives"); var Caml_format = require("../runtime/caml_format"); var Char = require("./char"); var Sys = require("./sys"); +var Caml_primitive = require("../runtime/caml_primitive"); var CamlinternalFormatBasics = require("./camlinternalFormatBasics"); var Buffer = require("./buffer"); var $$String = require("./string"); @@ -271,9 +272,9 @@ function param_format_of_ignored_format(ign, fmt) { function buffer_check_size(buf, overhead) { var len = buf[/* bytes */1].length; - var min_len = buf[/* ind */0] + overhead; + var min_len = buf[/* ind */0] + overhead | 0; if (min_len > len) { - var new_len = Pervasives.max(len * 2, min_len); + var new_len = Pervasives.max((len << 1), min_len); var new_str = Caml_string.caml_create_string(new_len); Bytes.blit(buf[/* bytes */1], 0, new_str, 0, len); buf[/* bytes */1] = new_str; @@ -287,7 +288,7 @@ function buffer_check_size(buf, overhead) { function buffer_add_char(buf, c) { buffer_check_size(buf, 1); buf[/* bytes */1][buf[/* ind */0]] = c; - ++ buf[0]; + buf[/* ind */0] = buf[/* ind */0] + 1 | 0; return /* () */0; } @@ -295,7 +296,7 @@ function buffer_add_string(buf, s) { var str_len = s.length; buffer_check_size(buf, str_len); $$String.blit(s, 0, buf[/* bytes */1], buf[/* ind */0], str_len); - buf[0] += str_len; + buf[/* ind */0] = buf[/* ind */0] + str_len | 0; return /* () */0; } @@ -372,7 +373,7 @@ function bprint_char_set(buf, char_set) { var print_start = function (set) { var is_alone = function (c) { var match_000 = Char.chr(c - 1); - var match_001 = Char.chr(c + 1); + var match_001 = Char.chr(c + 1 | 0); if (is_in_char_set(set, c)) { return !(is_in_char_set(set, match_000) && is_in_char_set(set, match_001)); } @@ -399,24 +400,24 @@ function bprint_char_set(buf, char_set) { var set$1 = set; var i$1 = i; var match = Pervasives.char_of_int(i$1); - var switcher = match - 45; + var switcher = match - 45 | 0; if (switcher > 48 || switcher < 0) { if (switcher >= 210) { return print_char(buf, 255); } else { - return print_second(set$1, i$1 + 1); + return print_second(set$1, i$1 + 1 | 0); } } else if (switcher > 47 || switcher < 1) { - return print_out(set$1, i$1 + 1); + return print_out(set$1, i$1 + 1 | 0); } else { - return print_second(set$1, i$1 + 1); + return print_second(set$1, i$1 + 1 | 0); } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -430,7 +431,7 @@ function bprint_char_set(buf, char_set) { if (is_in_char_set(set, Pervasives.char_of_int(i))) { var match = Pervasives.char_of_int(i); var exit = 0; - var switcher = match - 45; + var switcher = match - 45 | 0; if (switcher > 48 || switcher < 0) { if (switcher >= 210) { print_char(buf, 254); @@ -441,22 +442,22 @@ function bprint_char_set(buf, char_set) { } } else if (switcher > 47 || switcher < 1) { - if (is_in_char_set(set, Pervasives.char_of_int(i + 1))) { + if (is_in_char_set(set, Pervasives.char_of_int(i + 1 | 0))) { exit = 1; } else { print_char(buf, i - 1); - return print_out(set, i + 1); + return print_out(set, i + 1 | 0); } } else { exit = 1; } if (exit === 1) { - if (is_in_char_set(set, Pervasives.char_of_int(i + 1))) { + if (is_in_char_set(set, Pervasives.char_of_int(i + 1 | 0))) { var set$1 = set; var i$1 = i - 1; - var _j = i + 2; + var _j = i + 2 | 0; while(true) { var j = _j; if (j === 256 || !is_in_char_set(set$1, Pervasives.char_of_int(j))) { @@ -464,14 +465,14 @@ function bprint_char_set(buf, char_set) { print_char(buf, /* "-" */45); print_char(buf, j - 1); if (j < 256) { - return print_out(set$1, j + 1); + return print_out(set$1, j + 1 | 0); } else { return 0; } } else { - _j = j + 1; + _j = j + 1 | 0; continue ; } @@ -480,14 +481,14 @@ function bprint_char_set(buf, char_set) { else { print_char(buf, i - 1); print_char(buf, i); - return print_out(set, i + 2); + return print_out(set, i + 2 | 0); } } } else { print_char(buf, i - 1); - return print_out(set, i + 1); + return print_out(set, i + 1 | 0); } }; var print_char = function (buf, i) { @@ -779,7 +780,7 @@ function bprint_fmtty(buf, _fmtty) { function int_of_custom_arity(param) { if (param) { - return 1 + int_of_custom_arity(param[0]); + return 1 + int_of_custom_arity(param[0]) | 0; } else { return 0; @@ -3427,11 +3428,11 @@ function fix_padding(padty, width, str) { case 2 : if (len > 0 && (str[0] === "+" || str[0] === "-" || str[0] === " ")) { res[0] = str.charCodeAt(0); - $$String.blit(str, 1, res, width$1 - len + 1, len - 1); + $$String.blit(str, 1, res, width$1 - len + 1 | 0, len - 1); } else if (len > 1 && str[0] === "0" && (str[1] === "x" || str[1] === "X")) { res[1] = str.charCodeAt(1); - $$String.blit(str, 2, res, width$1 - len + 2, len - 2); + $$String.blit(str, 2, res, width$1 - len + 2 | 0, len - 2); } else { $$String.blit(str, 0, res, width$1 - len, len); @@ -3466,7 +3467,7 @@ function fix_int_precision(prec, str) { } else if (c !== 32) { if (c >= 43) { - switch (c - 43) { + switch (c - 43 | 0) { case 0 : case 2 : exit = 1; @@ -3476,10 +3477,10 @@ function fix_int_precision(prec, str) { case 4 : return str; case 5 : - if (prec$1 + 2 > len && len > 1 && (str[1] === "x" || str[1] === "X")) { - var res = Bytes.make(prec$1 + 2, /* "0" */48); + if ((prec$1 + 2 | 0) > len && len > 1 && (str[1] === "x" || str[1] === "X")) { + var res = Bytes.make(prec$1 + 2 | 0, /* "0" */48); res[1] = str.charCodeAt(1); - $$String.blit(str, 2, res, prec$1 - len + 4, len - 2); + $$String.blit(str, 2, res, prec$1 - len + 4 | 0, len - 2); return Caml_string.bytes_to_string(res); } else { @@ -3509,10 +3510,10 @@ function fix_int_precision(prec, str) { } switch (exit) { case 1 : - if (prec$1 + 1 > len) { - var res$1 = Bytes.make(prec$1 + 1, /* "0" */48); + if ((prec$1 + 1 | 0) > len) { + var res$1 = Bytes.make(prec$1 + 1 | 0, /* "0" */48); res$1[0] = c; - $$String.blit(str, 1, res$1, prec$1 - len + 2, len - 1); + $$String.blit(str, 1, res$1, prec$1 - len + 2 | 0, len - 1); return Caml_string.bytes_to_string(res$1); } else { @@ -3752,10 +3753,10 @@ function convert_float(fconv, prec, x) { } else { var match = str.charCodeAt(i); - var switcher = match - 46; + var switcher = match - 46 | 0; if (switcher > 23 || switcher < 0) { if (switcher !== 55) { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -3767,7 +3768,7 @@ function convert_float(fconv, prec, x) { return /* true */1; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -4782,13 +4783,13 @@ function open_box_of_string(str) { return i; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -4807,7 +4808,7 @@ function open_box_of_string(str) { return j; } else { - _j = j + 1; + _j = j + 1 | 0; continue ; } @@ -4827,7 +4828,7 @@ function open_box_of_string(str) { return j; } else { - _j = j + 1; + _j = j + 1 | 0; continue ; } @@ -4836,7 +4837,7 @@ function open_box_of_string(str) { return j; } else { - _j = j + 1; + _j = j + 1 | 0; continue ; } @@ -5158,12 +5159,12 @@ function fmt_ebb_of_string(legacy_behavior, str) { var match = str.charCodeAt(str_ind); if (match !== 37) { if (match !== 64) { - _str_ind = str_ind + 1; + _str_ind = str_ind + 1 | 0; continue ; } else { - var match$1 = parse_after_at(str_ind + 1, end_ind); + var match$1 = parse_after_at(str_ind + 1 | 0, end_ind); return add_literal(lit_start, str_ind, match$1[0]); } } @@ -5176,7 +5177,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { }; var parse_format = function (pct_ind, end_ind) { var pct_ind$1 = pct_ind; - var str_ind = pct_ind + 1; + var str_ind = pct_ind + 1 | 0; var end_ind$1 = end_ind; if (str_ind === end_ind$1) { invalid_format_message(end_ind$1, "unexpected end of format"); @@ -5186,7 +5187,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { return parse_flags(pct_ind$1, str_ind, end_ind$1, /* false */0); } else { - return parse_flags(pct_ind$1, str_ind + 1, end_ind$1, /* true */1); + return parse_flags(pct_ind$1, str_ind + 1 | 0, end_ind$1, /* true */1); } }; var parse_flags = function (pct_ind, str_ind, end_ind, ign) { @@ -5246,7 +5247,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } var match = str.charCodeAt(str_ind$1); var exit = 0; - var switcher = match - 32; + var switcher = match - 32 | 0; if (switcher > 16 || switcher < 0) { exit = 1; } @@ -5254,19 +5255,19 @@ function fmt_ebb_of_string(legacy_behavior, str) { switch (switcher) { case 0 : set_flag(str_ind$1, space); - _str_ind = str_ind$1 + 1; + _str_ind = str_ind$1 + 1 | 0; continue ; case 3 : set_flag(str_ind$1, sharp); - _str_ind = str_ind$1 + 1; + _str_ind = str_ind$1 + 1 | 0; continue ; case 11 : set_flag(str_ind$1, plus); - _str_ind = str_ind$1 + 1; + _str_ind = str_ind$1 + 1 | 0; continue ; case 13 : set_flag(str_ind$1, minus); - _str_ind = str_ind$1 + 1; + _str_ind = str_ind$1 + 1 | 0; continue ; case 1 : case 2 : @@ -5284,7 +5285,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { break; case 16 : set_flag(str_ind$1, zero); - _str_ind = str_ind$1 + 1; + _str_ind = str_ind$1 + 1 | 0; continue ; } @@ -5329,7 +5330,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { exit$1 = 1; } else { - return parse_after_padding(pct_ind$1, str_ind$2 + 1, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, /* Arg_padding */{ + return parse_after_padding(pct_ind$1, str_ind$2 + 1 | 0, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, /* Arg_padding */{ 0: padty, length: 1, tag: 1 @@ -5365,11 +5366,11 @@ function fmt_ebb_of_string(legacy_behavior, str) { } var symb = str.charCodeAt(str_ind); if (symb !== 46) { - return parse_conversion(pct_ind, str_ind + 1, end_ind, plus, sharp, space, ign, pad, /* No_precision */0, pad, symb); + return parse_conversion(pct_ind, str_ind + 1 | 0, end_ind, plus, sharp, space, ign, pad, /* No_precision */0, pad, symb); } else { var pct_ind$1 = pct_ind; - var str_ind$1 = str_ind + 1; + var str_ind$1 = str_ind + 1 | 0; var end_ind$1 = end_ind; var minus$1 = minus; var plus$1 = plus; @@ -5400,9 +5401,9 @@ function fmt_ebb_of_string(legacy_behavior, str) { } } else if (symb$1 >= 42) { - switch (symb$1 - 42) { + switch (symb$1 - 42 | 0) { case 0 : - return parse_after_precision(pct_ind$1, str_ind$1 + 1, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, pad$1, /* Arg_precision */1); + return parse_after_precision(pct_ind$1, str_ind$1 + 1 | 0, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, pad$1, /* Arg_precision */1); case 1 : case 3 : exit$1 = 2; @@ -5420,7 +5421,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } if (exit$1 === 2) { if (legacy_behavior$1) { - return parse_literal(+(minus$1 || symb$1 === /* "-" */45), str_ind$1 + 1); + return parse_literal(+(minus$1 || symb$1 === /* "-" */45), str_ind$1 + 1 | 0); } else { exit = 1; @@ -5446,7 +5447,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { invalid_format_message(end_ind, "unexpected end of format"); } var parse_conv = function (padprec) { - return parse_conversion(pct_ind, str_ind + 1, end_ind, plus, sharp, space, ign, pad, prec, padprec, str.charCodeAt(str_ind)); + return parse_conversion(pct_ind, str_ind + 1 | 0, end_ind, plus, sharp, space, ign, pad, prec, padprec, str.charCodeAt(str_ind)); }; if (typeof pad === "number") { var exit = 0; @@ -5612,7 +5613,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { break; case 40 : var sub_end = search_subformat_end(str_ind, end_ind, /* ")" */41); - var beg_ind = sub_end + 2; + var beg_ind = sub_end + 2 | 0; var match$1 = parse_literal(beg_ind, beg_ind, end_ind); var fmt_rest = match$1[0]; var match$2 = parse_literal(str_ind, str_ind, sub_end); @@ -6061,7 +6062,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { case 123 : var sub_end$1 = search_subformat_end(str_ind, end_ind, /* "}" */125); var match$16 = parse_literal(str_ind, str_ind, sub_end$1); - var beg_ind$1 = sub_end$1 + 2; + var beg_ind$1 = sub_end$1 + 2 | 0; var match$17 = parse_literal(beg_ind$1, beg_ind$1, end_ind); var fmt_rest$8 = match$17[0]; var sub_fmtty$1 = fmtty_of_fmt(match$16[0]); @@ -6360,13 +6361,13 @@ function fmt_ebb_of_string(legacy_behavior, str) { exit = 1; } else { - switch (symb - 108) { + switch (symb - 108 | 0) { case 0 : plus_used = /* true */1; sharp_used = /* true */1; space_used = /* true */1; - var iconv$1 = compute_int_conv(pct_ind, str_ind + 1, plus, sharp, space, str.charCodeAt(str_ind)); - var beg_ind$2 = str_ind + 1; + var iconv$1 = compute_int_conv(pct_ind, str_ind + 1 | 0, plus, sharp, space, str.charCodeAt(str_ind)); + var beg_ind$2 = str_ind + 1 | 0; var match$25 = parse_literal(beg_ind$2, beg_ind$2, end_ind); var fmt_rest$13 = match$25[0]; if (ign_used[0] = /* true */1, ign) { @@ -6413,8 +6414,8 @@ function fmt_ebb_of_string(legacy_behavior, str) { plus_used = /* true */1; sharp_used = /* true */1; space_used = /* true */1; - var iconv$2 = compute_int_conv(pct_ind, str_ind + 1, plus, sharp, space, str.charCodeAt(str_ind)); - var beg_ind$3 = str_ind + 1; + var iconv$2 = compute_int_conv(pct_ind, str_ind + 1 | 0, plus, sharp, space, str.charCodeAt(str_ind)); + var beg_ind$3 = str_ind + 1 | 0; var match$27 = parse_literal(beg_ind$3, beg_ind$3, end_ind); var fmt_rest$14 = match$27[0]; if (ign_used[0] = /* true */1, ign) { @@ -6465,8 +6466,8 @@ function fmt_ebb_of_string(legacy_behavior, str) { plus_used = /* true */1; sharp_used = /* true */1; space_used = /* true */1; - var iconv$3 = compute_int_conv(pct_ind, str_ind + 1, plus, sharp, space, str.charCodeAt(str_ind)); - var beg_ind$4 = str_ind + 1; + var iconv$3 = compute_int_conv(pct_ind, str_ind + 1 | 0, plus, sharp, space, str.charCodeAt(str_ind)); + var beg_ind$4 = str_ind + 1 | 0; var match$29 = parse_literal(beg_ind$4, beg_ind$4, end_ind); var fmt_rest$15 = match$29[0]; if (ign_used[0] = /* true */1, ign) { @@ -6651,19 +6652,19 @@ function fmt_ebb_of_string(legacy_behavior, str) { var exit = 0; if (c >= 65) { if (c >= 94) { - var switcher = c - 123; + var switcher = c - 123 | 0; if (switcher > 2 || switcher < 0) { exit = 1; } else { switch (switcher) { case 0 : - return parse_tag(/* true */1, str_ind + 1, end_ind); + return parse_tag(/* true */1, str_ind + 1 | 0, end_ind); case 1 : exit = 1; break; case 2 : - var beg_ind = str_ind + 1; + var beg_ind = str_ind + 1 | 0; var match = parse_literal(beg_ind, beg_ind, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -6680,14 +6681,14 @@ function fmt_ebb_of_string(legacy_behavior, str) { } } else if (c >= 91) { - switch (c - 91) { + switch (c - 91 | 0) { case 0 : - return parse_tag(/* false */0, str_ind + 1, end_ind); + return parse_tag(/* false */0, str_ind + 1 | 0, end_ind); case 1 : exit = 1; break; case 2 : - var beg_ind$1 = str_ind + 1; + var beg_ind$1 = str_ind + 1 | 0; var match$1 = parse_literal(beg_ind$1, beg_ind$1, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -6708,9 +6709,9 @@ function fmt_ebb_of_string(legacy_behavior, str) { } else if (c !== 10) { if (c >= 32) { - switch (c - 32) { + switch (c - 32 | 0) { case 0 : - var beg_ind$2 = str_ind + 1; + var beg_ind$2 = str_ind + 1 | 0; var match$2 = parse_literal(beg_ind$2, beg_ind$2, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -6729,8 +6730,8 @@ function fmt_ebb_of_string(legacy_behavior, str) { tag: 0 }; case 5 : - if (str_ind + 1 < end_ind && str[str_ind + 1] === "%") { - var beg_ind$3 = str_ind + 2; + if ((str_ind + 1 | 0) < end_ind && str[str_ind + 1 | 0] === "%") { + var beg_ind$3 = str_ind + 2 | 0; var match$3 = parse_literal(beg_ind$3, beg_ind$3, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -6758,7 +6759,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } break; case 12 : - var beg_ind$4 = str_ind + 1; + var beg_ind$4 = str_ind + 1 | 0; var match$5 = parse_literal(beg_ind$4, beg_ind$4, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -6777,7 +6778,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { tag: 0 }; case 14 : - var beg_ind$5 = str_ind + 1; + var beg_ind$5 = str_ind + 1 | 0; var match$6 = parse_literal(beg_ind$5, beg_ind$5, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -6790,14 +6791,14 @@ function fmt_ebb_of_string(legacy_behavior, str) { tag: 0 }; case 27 : - var str_ind$1 = str_ind + 1; + var str_ind$1 = str_ind + 1 | 0; var end_ind$1 = end_ind; var match$7; try { if (str_ind$1 === end_ind$1 || str.charCodeAt(str_ind$1) !== /* "<" */60) { throw Caml_builtin_exceptions.not_found; } - var str_ind_1 = parse_spaces(str_ind$1 + 1, end_ind$1); + var str_ind_1 = parse_spaces(str_ind$1 + 1 | 0, end_ind$1); var match$8 = str.charCodeAt(str_ind_1); var exit$1 = 0; if (match$8 >= 48) { @@ -6819,15 +6820,15 @@ function fmt_ebb_of_string(legacy_behavior, str) { var width = match$9[1]; var str_ind_3 = parse_spaces(match$9[0], end_ind$1); var match$10 = str.charCodeAt(str_ind_3); - var switcher$1 = match$10 - 45; + var switcher$1 = match$10 - 45 | 0; if (switcher$1 > 12 || switcher$1 < 0) { if (switcher$1 !== 17) { throw Caml_builtin_exceptions.not_found; } else { - var s = $$String.sub(str, str_ind$1 - 2, str_ind_3 - str_ind$1 + 3); + var s = $$String.sub(str, str_ind$1 - 2, str_ind_3 - str_ind$1 + 3 | 0); match$7 = /* tuple */[ - str_ind_3 + 1, + str_ind_3 + 1 | 0, /* Break */{ 0: s, 1: width, @@ -6847,9 +6848,9 @@ function fmt_ebb_of_string(legacy_behavior, str) { if (str.charCodeAt(str_ind_5) !== /* ">" */62) { throw Caml_builtin_exceptions.not_found; } - var s$1 = $$String.sub(str, str_ind$1 - 2, str_ind_5 - str_ind$1 + 3); + var s$1 = $$String.sub(str, str_ind$1 - 2, str_ind_5 - str_ind$1 + 3 | 0); match$7 = /* tuple */[ - str_ind_5 + 1, + str_ind_5 + 1 | 0, /* Break */{ 0: s$1, 1: width, @@ -6904,7 +6905,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { tag: 0 }; case 28 : - var str_ind$2 = str_ind + 1; + var str_ind$2 = str_ind + 1 | 0; var end_ind$2 = end_ind; var match$13; try { @@ -6931,9 +6932,9 @@ function fmt_ebb_of_string(legacy_behavior, str) { if (str.charCodeAt(str_ind_3$1) !== /* ">" */62) { throw Caml_builtin_exceptions.not_found; } - var s$2 = $$String.sub(str, str_ind$2 - 2, str_ind_3$1 - str_ind$2 + 3); + var s$2 = $$String.sub(str, str_ind$2 - 2, str_ind_3$1 - str_ind$2 + 3 | 0); match$13 = /* Some */[/* tuple */[ - str_ind_3$1 + 1, + str_ind_3$1 + 1 | 0, /* Magic_size */{ 0: s$2, 1: match$15[1], @@ -7015,7 +7016,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { exit = 1; break; case 31 : - var beg_ind$6 = str_ind + 1; + var beg_ind$6 = str_ind + 1 | 0; var match$19 = parse_literal(beg_ind$6, beg_ind$6, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -7028,7 +7029,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { tag: 0 }; case 32 : - var beg_ind$7 = str_ind + 1; + var beg_ind$7 = str_ind + 1 | 0; var match$20 = parse_literal(beg_ind$7, beg_ind$7, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -7048,7 +7049,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } } else { - var beg_ind$8 = str_ind + 1; + var beg_ind$8 = str_ind + 1 | 0; var match$21 = parse_literal(beg_ind$8, beg_ind$8, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -7062,7 +7063,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { }; } if (exit === 1) { - var beg_ind$9 = str_ind + 1; + var beg_ind$9 = str_ind + 1 | 0; var match$22 = parse_literal(beg_ind$9, beg_ind$9, end_ind); return /* Fmt_EBB */{ 0: /* Formatting_lit */{ @@ -7118,14 +7119,14 @@ function fmt_ebb_of_string(legacy_behavior, str) { throw Caml_builtin_exceptions.not_found; } else { - var ind = $$String.index_from(str, str_ind + 1, /* ">" */62); + var ind = $$String.index_from(str, str_ind + 1 | 0, /* ">" */62); if (ind >= end_ind) { throw Caml_builtin_exceptions.not_found; } - var sub_str = $$String.sub(str, str_ind, ind - str_ind + 1); - var beg_ind = ind + 1; + var sub_str = $$String.sub(str, str_ind, ind - str_ind + 1 | 0); + var beg_ind = ind + 1 | 0; var match$1 = parse_literal(beg_ind, beg_ind, end_ind); - var match$2 = parse_literal(str_ind, str_ind, ind + 1); + var match$2 = parse_literal(str_ind, str_ind, ind + 1 | 0); var sub_fmt = match$2[0]; var sub_format = /* Format */{ 0: sub_fmt, @@ -7264,7 +7265,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { invalid_format_message(end_ind, "unexpected end of format"); } var c = str.charCodeAt(str_ind); - return parse_char_set_after_char(str_ind + 1, end_ind, c); + return parse_char_set_after_char(str_ind + 1 | 0, end_ind, c); }; var parse_char_set_content = function (_str_ind, end_ind) { while(true) { @@ -7275,15 +7276,15 @@ function fmt_ebb_of_string(legacy_behavior, str) { var c = str.charCodeAt(str_ind); if (c !== 45) { if (c !== 93) { - return parse_char_set_after_char(str_ind + 1, end_ind, c); + return parse_char_set_after_char(str_ind + 1 | 0, end_ind, c); } else { - return str_ind + 1; + return str_ind + 1 | 0; } } else { add_in_char_set(char_set, /* "-" */45); - _str_ind = str_ind + 1; + _str_ind = str_ind + 1 | 0; continue ; } @@ -7306,7 +7307,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } else { add_in_char_set(char_set, c); - return str_ind + 1; + return str_ind + 1 | 0; } } else { @@ -7315,7 +7316,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } else if (c$prime !== 37) { if (c$prime >= 45) { - var str_ind$1 = str_ind + 1; + var str_ind$1 = str_ind + 1 | 0; var end_ind$1 = end_ind; var c$1 = c; if (str_ind$1 === end_ind$1) { @@ -7325,19 +7326,19 @@ function fmt_ebb_of_string(legacy_behavior, str) { if (c$prime$1 !== 37) { if (c$prime$1 !== 93) { add_range(c$1, c$prime$1); - return parse_char_set_content(str_ind$1 + 1, end_ind$1); + return parse_char_set_content(str_ind$1 + 1 | 0, end_ind$1); } else { add_in_char_set(char_set, c$1); add_in_char_set(char_set, /* "-" */45); - return str_ind$1 + 1; + return str_ind$1 + 1 | 0; } } else { - if (str_ind$1 + 1 === end_ind$1) { + if ((str_ind$1 + 1 | 0) === end_ind$1) { invalid_format_message(end_ind$1, "unexpected end of format"); } - var c$prime$2 = str.charCodeAt(str_ind$1 + 1); + var c$prime$2 = str.charCodeAt(str_ind$1 + 1 | 0); var exit$2 = 0; if (c$prime$2 !== 37) { if (c$prime$2 !== 64) { @@ -7352,7 +7353,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } if (exit$2 === 1) { add_range(c$1, c$prime$2); - return parse_char_set_content(str_ind$1 + 2, end_ind$1); + return parse_char_set_content(str_ind$1 + 2 | 0, end_ind$1); } } @@ -7367,7 +7368,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { if (exit$1 === 2) { if (c === /* "%" */37) { add_in_char_set(char_set, c$prime); - return parse_char_set_content(str_ind + 1, end_ind); + return parse_char_set_content(str_ind + 1 | 0, end_ind); } else { exit = 1; @@ -7379,7 +7380,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } add_in_char_set(char_set, c); _c = c$prime; - _str_ind = str_ind + 1; + _str_ind = str_ind + 1 | 0; continue ; } @@ -7394,7 +7395,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { str_ind, /* false */0 ] : /* tuple */[ - str_ind + 1, + str_ind + 1 | 0, /* true */1 ]; var next_ind = parse_char_set_start(match$1[0], end_ind); @@ -7411,7 +7412,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { invalid_format_message(end_ind, "unexpected end of format"); } if (str[str_ind] === " ") { - _str_ind = str_ind + 1; + _str_ind = str_ind + 1 | 0; continue ; } @@ -7435,7 +7436,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { ]; } else { - var new_acc = acc * 10 + (c - /* "0" */48); + var new_acc = Caml_primitive.imul(acc, 10) + (c - /* "0" */48) | 0; if (new_acc > Sys.max_string_length) { return Caml_curry.app3(failwith_message(/* Format */{ 0: /* String_literal */{ @@ -7480,7 +7481,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } else { _acc = new_acc; - _str_ind = str_ind + 1; + _str_ind = str_ind + 1 | 0; continue ; } @@ -7518,15 +7519,15 @@ function fmt_ebb_of_string(legacy_behavior, str) { ]; } else { - if (str_ind + 1 === end_ind) { + if ((str_ind + 1 | 0) === end_ind) { invalid_format_message(end_ind, "unexpected end of format"); } - var c = str.charCodeAt(str_ind + 1); + var c = str.charCodeAt(str_ind + 1 | 0); if (c > 57 || c < 48) { - return expected_character(str_ind + 1, "digit", c); + return expected_character(str_ind + 1 | 0, "digit", c); } else { - var match$1 = parse_positive(str_ind + 1, end_ind, 0); + var match$1 = parse_positive(str_ind + 1 | 0, end_ind, 0); return /* tuple */[ match$1[0], -match$1[1] @@ -7619,19 +7620,19 @@ function fmt_ebb_of_string(legacy_behavior, str) { } var match = str.charCodeAt(str_ind); if (match !== 37) { - _str_ind = str_ind + 1; + _str_ind = str_ind + 1 | 0; continue ; } else { - if (str_ind + 1 === end_ind) { + if ((str_ind + 1 | 0) === end_ind) { invalid_format_message(end_ind, "unexpected end of format"); } - if (str.charCodeAt(str_ind + 1) === c) { + if (str.charCodeAt(str_ind + 1 | 0) === c) { return str_ind; } else { - var match$1 = str.charCodeAt(str_ind + 1); + var match$1 = str.charCodeAt(str_ind + 1 | 0); var exit = 0; if (match$1 >= 95) { if (match$1 >= 123) { @@ -7639,16 +7640,16 @@ function fmt_ebb_of_string(legacy_behavior, str) { exit = 1; } else { - switch (match$1 - 123) { + switch (match$1 - 123 | 0) { case 0 : - var sub_end = search_subformat_end(str_ind + 2, end_ind, /* "}" */125); - _str_ind = sub_end + 2; + var sub_end = search_subformat_end(str_ind + 2 | 0, end_ind, /* "}" */125); + _str_ind = sub_end + 2 | 0; continue ; case 1 : exit = 1; break; case 2 : - return expected_character(str_ind + 1, "character ')'", /* "}" */125); + return expected_character(str_ind + 1 | 0, "character ')'", /* "}" */125); } } @@ -7657,26 +7658,26 @@ function fmt_ebb_of_string(legacy_behavior, str) { exit = 1; } else { - if (str_ind + 2 === end_ind) { + if ((str_ind + 2 | 0) === end_ind) { invalid_format_message(end_ind, "unexpected end of format"); } - var match$2 = str.charCodeAt(str_ind + 2); + var match$2 = str.charCodeAt(str_ind + 2 | 0); if (match$2 !== 40) { if (match$2 !== 123) { - _str_ind = str_ind + 3; + _str_ind = str_ind + 3 | 0; continue ; } else { - var sub_end$1 = search_subformat_end(str_ind + 3, end_ind, /* "}" */125); - _str_ind = sub_end$1 + 2; + var sub_end$1 = search_subformat_end(str_ind + 3 | 0, end_ind, /* "}" */125); + _str_ind = sub_end$1 + 2 | 0; continue ; } } else { - var sub_end$2 = search_subformat_end(str_ind + 3, end_ind, /* ")" */41); - _str_ind = sub_end$2 + 2; + var sub_end$2 = search_subformat_end(str_ind + 3 | 0, end_ind, /* ")" */41); + _str_ind = sub_end$2 + 2 | 0; continue ; } @@ -7687,17 +7688,17 @@ function fmt_ebb_of_string(legacy_behavior, str) { exit = 1; } else { - return expected_character(str_ind + 1, "character '}'", /* ")" */41); + return expected_character(str_ind + 1 | 0, "character '}'", /* ")" */41); } } else { - var sub_end$3 = search_subformat_end(str_ind + 2, end_ind, /* ")" */41); - _str_ind = sub_end$3 + 2; + var sub_end$3 = search_subformat_end(str_ind + 2 | 0, end_ind, /* ")" */41); + _str_ind = sub_end$3 + 2 | 0; continue ; } if (exit === 1) { - _str_ind = str_ind + 2; + _str_ind = str_ind + 2 | 0; continue ; } @@ -7707,7 +7708,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { }; }; var is_int_base = function (symb) { - var switcher = symb - 88; + var switcher = symb - 88 | 0; if (switcher > 32 || switcher < 0) { return /* false */0; } @@ -7759,7 +7760,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { exit = 1; } else { - switch (symb - 108) { + switch (symb - 108 | 0) { case 0 : return /* Line_counter */0; case 1 : @@ -7850,7 +7851,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } } else { - var switcher = symb - 88; + var switcher = symb - 88 | 0; if (switcher > 32 || switcher < 0) { exit = 1; } @@ -7903,7 +7904,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } if (exit$1 === 2) { var exit$2 = 0; - var switcher$1 = symb - 88; + var switcher$1 = symb - 88 | 0; if (switcher$1 > 32 || switcher$1 < 0) { exit = 1; } @@ -8045,7 +8046,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { else { var exit = 0; if (symb >= 72) { - var switcher = symb - 101; + var switcher = symb - 101 | 0; if (switcher > 2 || switcher < 0) { exit = 1; } @@ -8062,7 +8063,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } } else if (symb >= 69) { - switch (symb - 69) { + switch (symb - 69 | 0) { case 0 : return /* Float_pE */7; case 1 : @@ -8092,7 +8093,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { else if (space !== 0) { var exit$1 = 0; if (symb >= 72) { - var switcher$1 = symb - 101; + var switcher$1 = symb - 101 | 0; if (switcher$1 > 2 || switcher$1 < 0) { exit$1 = 1; } @@ -8109,7 +8110,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } } else if (symb >= 69) { - switch (symb - 69) { + switch (symb - 69 | 0) { case 0 : return /* Float_sE */8; case 1 : @@ -8136,7 +8137,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } else if (symb >= 72) { - var switcher$2 = symb - 101; + var switcher$2 = symb - 101 | 0; if (switcher$2 > 2 || switcher$2 < 0) { throw [ Caml_builtin_exceptions.assert_failure, @@ -8160,7 +8161,7 @@ function fmt_ebb_of_string(legacy_behavior, str) { } } else if (symb >= 69) { - switch (symb - 69) { + switch (symb - 69 | 0) { case 0 : return /* Float_E */6; case 1 : diff --git a/jscomp/stdlib/camlinternalOO.js b/jscomp/stdlib/camlinternalOO.js index 5e0d5de923..afca9dd919 100644 --- a/jscomp/stdlib/camlinternalOO.js +++ b/jscomp/stdlib/camlinternalOO.js @@ -6,6 +6,7 @@ var Caml_obj = require("../runtime/caml_obj"); var Obj = require("./obj"); var Caml_oo = require("../runtime/caml_oo"); var Sys = require("./sys"); +var Caml_primitive = require("../runtime/caml_primitive"); var Caml_array = require("../runtime/caml_array"); var $$Array = require("./array"); var Caml_curry = require("../runtime/caml_curry"); @@ -27,7 +28,7 @@ var params = /* record */[ function public_method_label(s) { var accu = 0; for(var i = 0 ,i_finish = s.length - 1; i<= i_finish; ++i){ - accu = 223 * accu + s.charCodeAt(i); + accu = Caml_primitive.imul(223, accu) + s.charCodeAt(i) | 0; } accu = accu & (1 << 31) - 1; if (accu > 1073741823) { @@ -55,7 +56,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -64,7 +65,7 @@ function create(l, x, d, r) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -90,7 +91,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -122,7 +123,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -222,7 +223,7 @@ function create$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -231,7 +232,7 @@ function create$1(l, x, d, r) { function bal$1(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -257,7 +258,7 @@ function bal$1(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -289,7 +290,7 @@ function bal$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -353,7 +354,7 @@ function create$2(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -362,7 +363,7 @@ function create$2(l, x, d, r) { function bal$2(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -388,7 +389,7 @@ function bal$2(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -420,7 +421,7 @@ function bal$2(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -507,18 +508,18 @@ function fit_size(n) { return n; } else { - return fit_size((n + 1) / 2 | 0) * 2; + return (fit_size((n + 1 | 0) / 2 | 0) << 1); } } function new_table(pub_labels) { - ++ table_count[0]; + table_count[0] = table_count[0] + 1 | 0; var len = pub_labels.length; - var methods = Caml_array.caml_make_vect(len * 2 + 2, dummy_met); + var methods = Caml_array.caml_make_vect((len << 1) + 2 | 0, dummy_met); methods[0] = len; - methods[1] = (fit_size(len) * Sys.word_size / 8 | 0) - 1; + methods[1] = (Caml_primitive.imul(fit_size(len), Sys.word_size) / 8 | 0) - 1; for(var i = 0 ,i_finish = len - 1; i<= i_finish; ++i){ - methods[i * 2 + 3] = pub_labels[i]; + methods[(i << 1) + 3 | 0] = pub_labels[i]; } return /* record */[ 2, @@ -551,7 +552,7 @@ var inst_var_count = [0]; function new_method(table) { var index = table[/* methods */1].length; - resize(table, index + 1); + resize(table, index + 1 | 0); return index; } @@ -597,12 +598,12 @@ function get_method_labels(table, names) { } function set_method(table, label, element) { - ++ method_count[0]; + method_count[0] = method_count[0] + 1 | 0; if (find$1(label, table[/* methods_by_label */3])) { var array = table; var label$1 = label; var element$1 = element; - resize(array, label$1 + 1); + resize(array, label$1 + 1 | 0); array[/* methods */1][label$1] = element$1; return /* () */0; } @@ -735,7 +736,7 @@ function widen(table) { function new_slot(table) { var index = table[/* size */0]; - table[/* size */0] = index + 1; + table[/* size */0] = index + 1 | 0; return index; } @@ -770,12 +771,12 @@ function new_methods_variables(table, meths, vals) { var meths$1 = to_array(meths); var nmeths = meths$1.length; var nvals = vals.length; - var res = Caml_array.caml_make_vect(nmeths + nvals, 0); + var res = Caml_array.caml_make_vect(nmeths + nvals | 0, 0); for(var i = 0 ,i_finish = nmeths - 1; i<= i_finish; ++i){ res[i] = get_method_label(table, meths$1[i]); } for(var i$1 = 0 ,i_finish$1 = nvals - 1; i$1<= i_finish$1; ++i$1){ - res[i$1 + nmeths] = new_variable(table, vals[i$1]); + res[i$1 + nmeths | 0] = new_variable(table, vals[i$1]); } return res; } @@ -820,7 +821,7 @@ function create_table(public_methods) { var tags = $$Array.map(public_method_label, public_methods); var table = new_table(tags); $$Array.iteri(function (i, met) { - var lab = i * 2 + 2; + var lab = (i << 1) + 2 | 0; table[/* methods_by_name */2] = add$1(met, lab, table[/* methods_by_name */2]); table[/* methods_by_label */3] = add$2(lab, /* true */1, table[/* methods_by_label */3]); return /* () */0; @@ -833,9 +834,9 @@ function create_table(public_methods) { } function init_class(table) { - inst_var_count[0] = inst_var_count[0] + table[/* size */0] - 1; + inst_var_count[0] = (inst_var_count[0] + table[/* size */0] | 0) - 1; table[/* initializers */7] = List.rev(table[/* initializers */7]); - return resize(table, 3 + (table[/* methods */1][1] * 16 / Sys.word_size | 0)); + return resize(table, 3 + ((table[/* methods */1][1] << 4) / Sys.word_size | 0) | 0); } function inherits(cla, vals, virt_meths, concr_meths, param, top) { @@ -1030,14 +1031,14 @@ function lookup_tables(root, keys) { function new_cache(table) { var n = new_method(table); - var n$1 = n % 2 === 0 || n > 2 + (table[/* methods */1][1] * 16 / Sys.word_size | 0) ? n : new_method(table); + var n$1 = n % 2 === 0 || n > (2 + ((table[/* methods */1][1] << 4) / Sys.word_size | 0) | 0) ? n : new_method(table); table[/* methods */1][n$1] = 0; return n$1; } function method_impl(table, i, arr) { var next = function () { - ++ i[0]; + i[0] = i[0] + 1 | 0; return arr[i[0]]; }; var clo = next(/* () */0); @@ -1260,7 +1261,7 @@ function set_methods(table, methods) { var label = methods[i[0]]; var clo = method_impl(table, i, methods); set_method(table, label, clo); - ++ i[0]; + i[0] = i[0] + 1 | 0; }; return /* () */0; } diff --git a/jscomp/stdlib/char.js b/jscomp/stdlib/char.js index 461e393d09..90f02fdca0 100644 --- a/jscomp/stdlib/char.js +++ b/jscomp/stdlib/char.js @@ -64,9 +64,9 @@ function escaped(c) { var n = c; return Caml_string.caml_string_of_char_array(/* int array */[ /* "\\" */92, - 48 + (n / 100 | 0), - 48 + (n / 10 | 0) % 10, - 48 + n % 10 + 48 + (n / 100 | 0) | 0, + 48 + (n / 10 | 0) % 10 | 0, + 48 + n % 10 | 0 ]); } } @@ -75,7 +75,7 @@ function escaped(c) { function lowercase(c) { if (c >= /* "A" */65 && c <= /* "Z" */90 || c >= /* "\192" */192 && c <= /* "\214" */214 || c >= /* "\216" */216 && c <= /* "\222" */222) { - return c + 32; + return c + 32 | 0; } else { return c; diff --git a/jscomp/stdlib/digest.js b/jscomp/stdlib/digest.js index e75eaa0fb9..518185f480 100644 --- a/jscomp/stdlib/digest.js +++ b/jscomp/stdlib/digest.js @@ -62,15 +62,15 @@ function input(chan) { function char_hex(n) { return n + ( n < 10 ? /* "0" */48 : 87 - ); + ) | 0; } function to_hex(d) { var result = new Array(32); for(var i = 0; i<= 15; ++i){ var x = d.charCodeAt(i); - result[i * 2] = char_hex((x >>> 4)); - result[i * 2 + 1] = char_hex(x & 15); + result[(i << 1)] = char_hex((x >>> 4)); + result[(i << 1) + 1 | 0] = char_hex(x & 15); } return Caml_string.bytes_to_string(result); } @@ -92,7 +92,7 @@ function from_hex(s) { ]; } else { - return c - /* "a" */97 + 10; + return c - /* "a" */97 + 10 | 0; } } else if (c >= 71) { @@ -102,7 +102,7 @@ function from_hex(s) { ]; } else { - return c - /* "A" */65 + 10; + return c - /* "A" */65 + 10 | 0; } } else if (c > 57 || c < 48) { @@ -116,11 +116,11 @@ function from_hex(s) { } }; var $$byte = function (i) { - return (digit(s.charCodeAt(i)) << 4) + digit(s.charCodeAt(i + 1)); + return (digit(s.charCodeAt(i)) << 4) + digit(s.charCodeAt(i + 1 | 0)) | 0; }; var result = new Array(16); for(var i = 0; i<= 15; ++i){ - result[i] = Char.chr($$byte(2 * i)); + result[i] = Char.chr($$byte((i << 1))); } return Caml_string.bytes_to_string(result); } diff --git a/jscomp/stdlib/filename.js b/jscomp/stdlib/filename.js index 21baa8cb4e..8cbdf52d70 100644 --- a/jscomp/stdlib/filename.js +++ b/jscomp/stdlib/filename.js @@ -30,14 +30,14 @@ function generic_basename(is_dir_sep, current_dir_name, name) { } else { var _n$1 = n; - var p = n + 1; + var p = n + 1 | 0; while(true) { var n$1 = _n$1; if (n$1 < 0) { return $$String.sub(name, 0, p); } else if (Caml_curry.app2(is_dir_sep, name, n$1)) { - return $$String.sub(name, n$1 + 1, p - n$1 - 1); + return $$String.sub(name, n$1 + 1 | 0, p - n$1 - 1); } else { _n$1 = n$1 - 1; @@ -86,7 +86,7 @@ function generic_dirname(is_dir_sep, current_dir_name, name) { } else { - return $$String.sub(name, 0, n$2 + 1); + return $$String.sub(name, 0, n$2 + 1 | 0); } }; } @@ -157,7 +157,7 @@ function quote(param) { var quotequote = "'\\''"; var s = param; var l = s.length; - var b = Buffer.create(l + 20); + var b = Buffer.create(l + 20 | 0); Buffer.add_char(b, /* "'" */39); for(var i = 0 ,i_finish = l - 1; i<= i_finish; ++i){ if (s[i] === "'") { @@ -322,7 +322,7 @@ function temp_file($staropt$star, prefix, suffix) { throw e; } else { - _counter = counter + 1; + _counter = counter + 1 | 0; continue ; } @@ -365,7 +365,7 @@ function open_temp_file($staropt$star, $staropt$star$1, prefix, suffix) { throw e; } else { - _counter = counter + 1; + _counter = counter + 1 | 0; continue ; } diff --git a/jscomp/stdlib/format.js b/jscomp/stdlib/format.js index 2ff8ccafe6..76b1fe0f74 100644 --- a/jscomp/stdlib/format.js +++ b/jscomp/stdlib/format.js @@ -69,7 +69,7 @@ function take_queue(q) { } function pp_enqueue(state, token) { - state[12] += token[/* length */2]; + state[/* pp_right_total */12] = state[/* pp_right_total */12] + token[/* length */2] | 0; return add_queue(token, state[/* pp_queue */26]); } @@ -89,7 +89,7 @@ function pp_output_string(state, s) { function break_new_line(state, offset, width) { Caml_curry.app1(state[/* pp_out_newline */18], /* () */0); state[/* pp_is_new_line */10] = /* true */1; - var indent = state[/* pp_margin */5] - width + offset; + var indent = state[/* pp_margin */5] - width + offset | 0; var real_indent = Pervasives.min(state[/* pp_max_indent */7], indent); state[/* pp_current_indent */9] = real_indent; state[/* pp_space_left */8] = state[/* pp_margin */5] - state[/* pp_current_indent */9]; @@ -188,7 +188,7 @@ function format_pp_token(state, size, param) { var match$4 = take_queue(state$1[/* pp_queue */26]); var size$1 = match$4[/* elem_size */0]; state$1[11] -= match$4[/* length */2]; - state$1[8] += size$1; + state$1[/* pp_space_left */8] = state$1[/* pp_space_left */8] + size$1 | 0; return /* () */0; } else { @@ -235,7 +235,7 @@ function format_pp_token(state, size, param) { return break_same_line(state, n); } case 4 : - if (state[/* pp_is_new_line */10] || !(size > state[/* pp_space_left */8] || state[/* pp_current_indent */9] > state[/* pp_margin */5] - width + off)) { + if (state[/* pp_is_new_line */10] || !(size > state[/* pp_space_left */8] || state[/* pp_current_indent */9] > (state[/* pp_margin */5] - width + off | 0))) { return break_same_line(state, n); } else { @@ -295,10 +295,10 @@ function format_pp_token(state, size, param) { } var offset = tab - insertion_point; if (offset >= 0) { - return break_same_line(state, offset + param[0]); + return break_same_line(state, offset + param[0] | 0); } else { - return break_new_line(state, tab + param[1], state[/* pp_margin */5]); + return break_new_line(state, tab + param[1] | 0, state[/* pp_margin */5]); } } else { @@ -357,7 +357,7 @@ function advance_left(state) { else { take_queue(state$1[/* pp_queue */26]); format_pp_token(state$1, size < 0 ? 1000000010 : size, match[/* token */1]); - state$1[/* pp_left_total */11] = match[/* length */2] + state$1[/* pp_left_total */11]; + state$1[/* pp_left_total */11] = match[/* length */2] + state$1[/* pp_left_total */11] | 0; continue ; } @@ -440,7 +440,7 @@ function set_size(state, ty) { return 0; } else { - queue_elem[/* elem_size */0] = state[/* pp_right_total */12] + size; + queue_elem[/* elem_size */0] = state[/* pp_right_total */12] + size | 0; state[/* pp_scan_stack */0] = t; return /* () */0; } @@ -450,7 +450,7 @@ function set_size(state, ty) { } if (exit === 1) { if (ty) { - queue_elem[/* elem_size */0] = state[/* pp_right_total */12] + size; + queue_elem[/* elem_size */0] = state[/* pp_right_total */12] + size | 0; state[/* pp_scan_stack */0] = t; return /* () */0; } @@ -484,7 +484,7 @@ function scan_push(state, b, tok) { } function pp_open_box_gen(state, indent, br_ty) { - ++ state[13]; + state[/* pp_curr_depth */13] = state[/* pp_curr_depth */13] + 1 | 0; if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) { var elem = /* record */[ -state[/* pp_right_total */12], @@ -759,7 +759,7 @@ function pp_print_cut(state, _) { } function pp_open_tbox(state, _) { - ++ state[13]; + state[/* pp_curr_depth */13] = state[/* pp_curr_depth */13] + 1 | 0; if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) { var elem = /* record */[ 0, @@ -871,7 +871,7 @@ function pp_print_text(ppf, s) { var right = [0]; var flush = function () { pp_print_string(ppf, $$String.sub(s, left[0], right[0] - left[0])); - ++ right[0]; + right[0] = right[0] + 1 | 0; left[0] = right[0]; return /* () */0; }; @@ -879,7 +879,7 @@ function pp_print_text(ppf, s) { var match = s.charCodeAt(right[0]); if (match !== 10) { if (match !== 32) { - ++ right[0]; + right[0] = right[0] + 1 | 0; } else { flush(/* () */0); diff --git a/jscomp/stdlib/genlex.js b/jscomp/stdlib/genlex.js index 8e1bdfdba0..7ea5aa77cb 100644 --- a/jscomp/stdlib/genlex.js +++ b/jscomp/stdlib/genlex.js @@ -7,6 +7,7 @@ var Hashtbl = require("./hashtbl"); var Stream = require("./stream"); var Caml_format = require("../runtime/caml_format"); var Char = require("./char"); +var Caml_primitive = require("../runtime/caml_primitive"); var Caml_string = require("../runtime/caml_string"); var List = require("./list"); @@ -24,12 +25,12 @@ function reset_buffer() { function store(c) { if (bufpos[0] >= buffer[0].length) { - var newbuffer = Caml_string.caml_create_string(2 * bufpos[0]); + var newbuffer = Caml_string.caml_create_string((bufpos[0] << 1)); Bytes.blit(buffer[0], 0, newbuffer, 0, bufpos[0]); buffer[0] = newbuffer; } buffer[0][bufpos[0]] = c; - return ++ bufpos[0]; + return bufpos[0] = bufpos[0] + 1 | 0; } function get_string() { @@ -88,13 +89,13 @@ function make_lexer(keywords) { var c = match[0]; var exit = 0; if (c < 124) { - var switcher = c - 65; + var switcher = c - 65 | 0; if (switcher > 57 || switcher < 0) { if (switcher >= 58) { exit = 1; } else { - switch (switcher + 65) { + switch (switcher + 65 | 0) { case 9 : case 10 : case 12 : @@ -259,7 +260,7 @@ function make_lexer(keywords) { } } else { - var switcher$1 = switcher - 26; + var switcher$1 = switcher - 26 | 0; if (switcher$1 > 5 || switcher$1 < 0) { exit = 2; } @@ -304,7 +305,7 @@ function make_lexer(keywords) { var c$3 = match$4[0]; var exit$1 = 0; if (c$3 >= 91) { - var switcher$2 = c$3 - 95; + var switcher$2 = c$3 - 95 | 0; if (switcher$2 > 27 || switcher$2 < 0) { if (switcher$2 >= 97) { exit$1 = 1; @@ -371,7 +372,7 @@ function make_lexer(keywords) { var c = match[0]; var exit = 0; if (c >= 94) { - var switcher = c - 95; + var switcher = c - 95 | 0; if (switcher > 30 || switcher < 0) { if (switcher >= 32) { return /* Some */[ident_or_keyword(get_string(/* () */0))]; @@ -396,7 +397,7 @@ function make_lexer(keywords) { } } else if (c >= 33) { - switch (c - 33) { + switch (c - 33 | 0) { case 1 : case 6 : case 7 : @@ -494,7 +495,7 @@ function make_lexer(keywords) { var exit$1 = 0; if (match$1) { var c$1 = match$1[0]; - var switcher = c$1 - 69; + var switcher = c$1 - 69 | 0; if (switcher > 32 || switcher < 0) { if ((switcher + 21 >>> 0) > 9) { exit$1 = 1; @@ -673,7 +674,7 @@ function make_lexer(keywords) { if (match) { var c1 = match[0]; if (c1 >= 58) { - var switcher = c1 - 110; + var switcher = c1 - 110 | 0; if (switcher > 6 || switcher < 0) { Stream.junk(strm__); return c1; @@ -723,7 +724,7 @@ function make_lexer(keywords) { } else { Stream.junk(strm__); - return Char.chr((c1 - 48) * 100 + (c2 - 48) * 10 + (c3 - 48)); + return Char.chr((Caml_primitive.imul(c1 - 48, 100) + Caml_primitive.imul(c2 - 48, 10) | 0) + (c3 - 48) | 0); } } else { @@ -754,7 +755,7 @@ function make_lexer(keywords) { while(true) { var match = Stream.peek(strm__); if (match) { - var switcher = match[0] - 40; + var switcher = match[0] - 40 | 0; if (switcher > 2 || switcher < 0) { Stream.junk(strm__); continue ; diff --git a/jscomp/stdlib/hashtbl.js b/jscomp/stdlib/hashtbl.js index 32a1ae2fca..c6ecd89442 100644 --- a/jscomp/stdlib/hashtbl.js +++ b/jscomp/stdlib/hashtbl.js @@ -74,11 +74,11 @@ function power_2_above(_x, n) { if (x >= n) { return x; } - else if (x * 2 > Sys.max_array_length) { + else if ((x << 1) > Sys.max_array_length) { return x; } else { - _x = x * 2; + _x = (x << 1); continue ; } @@ -143,7 +143,7 @@ function length(h) { function resize(indexfun, h) { var odata = h[/* data */1]; var osize = odata.length; - var nsize = osize * 2; + var nsize = (osize << 1); if (nsize < Sys.max_array_length) { var ndata = Caml_array.caml_make_vect(nsize, /* Empty */0); h[/* data */1] = ndata; @@ -195,7 +195,7 @@ function add(h, key, info) { tag: 0 }; h[/* data */1][i] = bucket; - ++ h[0]; + h[/* size */0] = h[/* size */0] + 1 | 0; if (h[/* size */0] > (h[/* data */1].length << 1)) { return resize(key_index, h); } @@ -355,7 +355,7 @@ function replace(h, key, info) { length: 3, tag: 0 }; - ++ h[0]; + h[/* size */0] = h[/* size */0] + 1 | 0; if (h[/* size */0] > (h[/* data */1].length << 1)) { return resize(key_index, h); } @@ -441,7 +441,7 @@ function bucket_length(_accu, _param) { var accu = _accu; if (param) { _param = param[2]; - _accu = accu + 1; + _accu = accu + 1 | 0; continue ; } @@ -455,10 +455,10 @@ function stats(h) { var mbl = $$Array.fold_left(function (m, b) { return Pervasives.max(m, bucket_length(0, b)); }, 0, h[/* data */1]); - var histo = Caml_array.caml_make_vect(mbl + 1, 0); + var histo = Caml_array.caml_make_vect(mbl + 1 | 0, 0); $$Array.iter(function (b) { var l = bucket_length(0, b); - histo[l] = histo[l] + 1; + histo[l] = histo[l] + 1 | 0; return /* () */0; }, h[/* data */1]); return /* record */[ @@ -484,7 +484,7 @@ function MakeSeeded(H) { tag: 0 }; h[/* data */1][i] = bucket; - ++ h[0]; + h[/* size */0] = h[/* size */0] + 1 | 0; if (h[/* size */0] > (h[/* data */1].length << 1)) { return resize(key_index, h); } @@ -636,7 +636,7 @@ function MakeSeeded(H) { length: 3, tag: 0 }; - ++ h[0]; + h[/* size */0] = h[/* size */0] + 1 | 0; if (h[/* size */0] > (h[/* data */1].length << 1)) { return resize(key_index, h); } @@ -702,7 +702,7 @@ function Make(H) { tag: 0 }; h[/* data */1][i] = bucket; - ++ h[0]; + h[/* size */0] = h[/* size */0] + 1 | 0; if (h[/* size */0] > (h[/* data */1].length << 1)) { return resize(key_index, h); } @@ -854,7 +854,7 @@ function Make(H) { length: 3, tag: 0 }; - ++ h[0]; + h[/* size */0] = h[/* size */0] + 1 | 0; if (h[/* size */0] > (h[/* data */1].length << 1)) { return resize(key_index, h); } diff --git a/jscomp/stdlib/lexing.js b/jscomp/stdlib/lexing.js index a28a9bae2d..57ead2f421 100644 --- a/jscomp/stdlib/lexing.js +++ b/jscomp/stdlib/lexing.js @@ -18,7 +18,7 @@ function engine(tbl, state, buf) { init[/* pos_fname */0], init[/* pos_lnum */1], init[/* pos_bol */2], - buf[/* lex_abs_pos */3] + buf[/* lex_curr_pos */5] + buf[/* lex_abs_pos */3] + buf[/* lex_curr_pos */5] | 0 ]; } return result; @@ -33,7 +33,7 @@ function new_engine(tbl, state, buf) { init[/* pos_fname */0], init[/* pos_lnum */1], init[/* pos_bol */2], - buf[/* lex_abs_pos */3] + buf[/* lex_curr_pos */5] + buf[/* lex_abs_pos */3] + buf[/* lex_curr_pos */5] | 0 ]; } return result; @@ -55,13 +55,13 @@ function from_function(f) { var lexbuf = param; var read = Caml_curry.app2(read_fun, aux_buffer, aux_buffer.length); var n = read > 0 ? read : (lexbuf[/* lex_eof_reached */8] = /* true */1, 0); - if (lexbuf[/* lex_buffer_len */2] + n > lexbuf[/* lex_buffer */1].length) { - if (lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] + n <= lexbuf[/* lex_buffer */1].length) { + if ((lexbuf[/* lex_buffer_len */2] + n | 0) > lexbuf[/* lex_buffer */1].length) { + if ((lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] + n | 0) <= lexbuf[/* lex_buffer */1].length) { Bytes.blit(lexbuf[/* lex_buffer */1], lexbuf[/* lex_start_pos */4], lexbuf[/* lex_buffer */1], 0, lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4]); } else { - var newlen = Pervasives.min(2 * lexbuf[/* lex_buffer */1].length, Sys.max_string_length); - if (lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] + n > newlen) { + var newlen = Pervasives.min((lexbuf[/* lex_buffer */1].length << 1), Sys.max_string_length); + if ((lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] + n | 0) > newlen) { throw [ Caml_builtin_exceptions.failure, "Lexing.lex_refill: cannot grow buffer" @@ -72,7 +72,7 @@ function from_function(f) { lexbuf[/* lex_buffer */1] = newbuf; } var s = lexbuf[/* lex_start_pos */4]; - lexbuf[3] += s; + lexbuf[/* lex_abs_pos */3] = lexbuf[/* lex_abs_pos */3] + s | 0; lexbuf[5] -= s; lexbuf[/* lex_start_pos */4] = 0; lexbuf[6] -= s; @@ -87,7 +87,7 @@ function from_function(f) { } } Bytes.blit(aux_buffer, 0, lexbuf[/* lex_buffer */1], lexbuf[/* lex_buffer_len */2], n); - lexbuf[2] += n; + lexbuf[/* lex_buffer_len */2] = lexbuf[/* lex_buffer_len */2] + n | 0; return /* () */0; }, new Array(1024), @@ -164,7 +164,7 @@ function sub_lexeme_char_opt(lexbuf, i) { } function lexeme_char(lexbuf, i) { - return lexbuf[/* lex_buffer */1][lexbuf[/* lex_start_pos */4] + i]; + return lexbuf[/* lex_buffer */1][lexbuf[/* lex_start_pos */4] + i | 0]; } function lexeme_start(lexbuf) { @@ -187,7 +187,7 @@ function new_line(lexbuf) { var lcp = lexbuf[/* lex_curr_p */11]; lexbuf[/* lex_curr_p */11] = /* record */[ lcp[/* pos_fname */0], - lcp[/* pos_lnum */1] + 1, + lcp[/* pos_lnum */1] + 1 | 0, lcp[/* pos_cnum */3], lcp[/* pos_cnum */3] ]; diff --git a/jscomp/stdlib/list.js b/jscomp/stdlib/list.js index 341dc56b75..4c223a068b 100644 --- a/jscomp/stdlib/list.js +++ b/jscomp/stdlib/list.js @@ -14,7 +14,7 @@ function length(l) { var len = _len; if (param) { _param = param[1]; - _len = len + 1; + _len = len + 1 | 0; continue ; } @@ -132,7 +132,7 @@ function mapi(i, f, param) { var r = Caml_curry.app2(f, i, param[0]); return /* :: */[ r, - mapi(i + 1, f, param[1]) + mapi(i + 1 | 0, f, param[1]) ]; } else { @@ -190,7 +190,7 @@ function iteri(f, l) { if (param) { Caml_curry.app2(f$1, i, param[0]); _param = param[1]; - _i = i + 1; + _i = i + 1 | 0; continue ; } diff --git a/jscomp/stdlib/map.js b/jscomp/stdlib/map.js index 78bdd1aa7f..b212de1fb7 100644 --- a/jscomp/stdlib/map.js +++ b/jscomp/stdlib/map.js @@ -21,7 +21,7 @@ function Make(funarg) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -40,7 +40,7 @@ function Make(funarg) { var bal = function (l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -66,7 +66,7 @@ function Make(funarg) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -98,7 +98,7 @@ function Make(funarg) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -420,10 +420,10 @@ function Make(funarg) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], l[2], join(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -681,7 +681,7 @@ function Make(funarg) { }; var cardinal = function (param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; diff --git a/jscomp/stdlib/marshal.js b/jscomp/stdlib/marshal.js index f78e4712f7..ef081bc762 100644 --- a/jscomp/stdlib/marshal.js +++ b/jscomp/stdlib/marshal.js @@ -30,7 +30,7 @@ function data_size(buff, ofs) { } function total_size(buff, ofs) { - return 20 + data_size(buff, ofs); + return 20 + data_size(buff, ofs) | 0; } function from_bytes(buff, ofs) { @@ -42,7 +42,7 @@ function from_bytes(buff, ofs) { } else { var len = Caml_primitive.caml_marshal_data_size(buff, ofs); - if (ofs > buff.length - (20 + len)) { + if (ofs > buff.length - (20 + len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "Marshal.from_bytes" diff --git a/jscomp/stdlib/obj.js b/jscomp/stdlib/obj.js index 11aadb202f..1441d713f2 100644 --- a/jscomp/stdlib/obj.js +++ b/jscomp/stdlib/obj.js @@ -21,7 +21,7 @@ function marshal(obj) { function unmarshal(str, pos) { return /* tuple */[ Marshal.from_bytes(str, pos), - pos + Marshal.total_size(str, pos) + pos + Marshal.total_size(str, pos) | 0 ]; } diff --git a/jscomp/stdlib/parsing.js b/jscomp/stdlib/parsing.js index 0a67abd5a5..a0758effff 100644 --- a/jscomp/stdlib/parsing.js +++ b/jscomp/stdlib/parsing.js @@ -44,7 +44,7 @@ var env = /* record */[ function grow_stacks() { var oldsize = env[/* stacksize */4]; - var newsize = oldsize * 2; + var newsize = (oldsize << 1); var new_s = Caml_array.caml_make_vect(newsize, 0); var new_v = Caml_array.caml_make_vect(newsize, /* () */0); var new_start = Caml_array.caml_make_vect(newsize, Lexing.dummy_pos); @@ -79,7 +79,7 @@ function yyparse(tables, start, lexer, lexbuf) { var init_curr_char = env[/* curr_char */6]; var init_lval = env[/* lval */7]; var init_errflag = env[/* errflag */15]; - env[/* stackbase */5] = env[/* sp */13] + 1; + env[/* stackbase */5] = env[/* sp */13] + 1 | 0; env[/* curr_char */6] = start; env[/* symb_end */9] = lexbuf[/* lex_curr_p */11]; try { @@ -178,8 +178,8 @@ function symbol_start_pos() { return env[/* symb_end_stack */3][env[/* asp */10]]; } else { - var st = env[/* symb_start_stack */2][env[/* asp */10] - i + 1]; - var en = env[/* symb_end_stack */3][env[/* asp */10] - i + 1]; + var st = env[/* symb_start_stack */2][env[/* asp */10] - i + 1 | 0]; + var en = env[/* symb_end_stack */3][env[/* asp */10] - i + 1 | 0]; if (Caml_obj.caml_notequal(st, en)) { return st; } diff --git a/jscomp/stdlib/pervasives.js b/jscomp/stdlib/pervasives.js index b1adb8b92d..fe0d4f6db5 100644 --- a/jscomp/stdlib/pervasives.js +++ b/jscomp/stdlib/pervasives.js @@ -64,7 +64,7 @@ function lnot(x) { var max_int = 2147483647; -var min_int = max_int + 1; +var min_int = max_int + 1 | 0; function $caret(a, b) { return a + b; @@ -124,7 +124,7 @@ function valid_float_lexem(s) { return s; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -133,7 +133,7 @@ function valid_float_lexem(s) { return s; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -323,7 +323,7 @@ function unsafe_really_input(ic, s, _ofs, _len) { var r = Caml_primitive.caml_ml_input(ic, s, ofs, len); if (r) { _len = len - r; - _ofs = ofs + r; + _ofs = ofs + r | 0; continue ; } @@ -382,7 +382,7 @@ function input_line(chan) { Caml_primitive.caml_ml_input(chan, res, 0, n - 1); Caml_io.caml_ml_input_char(chan); if (accu) { - var len$1 = len + n - 1; + var len$1 = (len + n | 0) - 1; return build_result(Caml_string.caml_create_string(len$1), len$1, /* :: */[ res, accu diff --git a/jscomp/stdlib/printexc.js b/jscomp/stdlib/printexc.js index 739a91d5f2..2230f01370 100644 --- a/jscomp/stdlib/printexc.js +++ b/jscomp/stdlib/printexc.js @@ -139,7 +139,7 @@ function other_fields(x, i) { 1: ", %s%s", length: 2, tag: 0 - }), field(x, i), other_fields(x, i + 1)); + }), field(x, i), other_fields(x, i + 1 | 0)); } } @@ -235,17 +235,17 @@ function to_string(x) { else if (x[0] === Caml_builtin_exceptions.match_failure) { var match$1 = x[1]; var $$char = match$1[2]; - return Caml_curry.app5(Printf.sprintf(locfmt), match$1[0], match$1[1], $$char, $$char + 5, "Pattern matching failed"); + return Caml_curry.app5(Printf.sprintf(locfmt), match$1[0], match$1[1], $$char, $$char + 5 | 0, "Pattern matching failed"); } else if (x[0] === Caml_builtin_exceptions.assert_failure) { var match$2 = x[1]; var $$char$1 = match$2[2]; - return Caml_curry.app5(Printf.sprintf(locfmt), match$2[0], match$2[1], $$char$1, $$char$1 + 6, "Assertion failed"); + return Caml_curry.app5(Printf.sprintf(locfmt), match$2[0], match$2[1], $$char$1, $$char$1 + 6 | 0, "Assertion failed"); } else if (x[0] === Caml_builtin_exceptions.undefined_recursive_module) { var match$3 = x[1]; var $$char$2 = match$3[2]; - return Caml_curry.app5(Printf.sprintf(locfmt), match$3[0], match$3[1], $$char$2, $$char$2 + 6, "Undefined recursive module"); + return Caml_curry.app5(Printf.sprintf(locfmt), match$3[0], match$3[1], $$char$2, $$char$2 + 6 | 0, "Undefined recursive module"); } else if ((x.tag | 0) !== 0) { return x[0]; diff --git a/jscomp/stdlib/queue.js b/jscomp/stdlib/queue.js index c760af2176..6c0d990833 100644 --- a/jscomp/stdlib/queue.js +++ b/jscomp/stdlib/queue.js @@ -33,7 +33,7 @@ function add(x, q) { x, head ]; - ++ q[0]; + q[/* length */0] = q[/* length */0] + 1 | 0; tail[/* next */1] = cell; q[/* tail */1] = cell; return /* () */0; @@ -188,7 +188,7 @@ function transfer(q1, q2) { tail1[/* next */1] = head2; tail2[/* next */1] = head1; } - q2[0] += length1; + q2[/* length */0] = q2[/* length */0] + length1 | 0; q2[/* tail */1] = tail1; return /* () */0; } diff --git a/jscomp/stdlib/random.js b/jscomp/stdlib/random.js index 948bb1b624..2b1a943533 100644 --- a/jscomp/stdlib/random.js +++ b/jscomp/stdlib/random.js @@ -31,7 +31,7 @@ function full_init(s, seed) { return Digest.string(accu + x); }; var extract = function (d) { - return d.charCodeAt(0) + (d.charCodeAt(1) << 8) + (d.charCodeAt(2) << 16) + (d.charCodeAt(3) << 24); + return ((d.charCodeAt(0) + (d.charCodeAt(1) << 8) | 0) + (d.charCodeAt(2) << 16) | 0) + (d.charCodeAt(3) << 24) | 0; }; var seed$1 = seed.length ? seed : /* int array */[0]; var l = seed$1.length; @@ -39,7 +39,7 @@ function full_init(s, seed) { s[/* st */0][i] = i; } var accu = "x"; - for(var i$1 = 0 ,i_finish = 54 + Pervasives.max(55, l); i$1<= i_finish; ++i$1){ + for(var i$1 = 0 ,i_finish = 54 + Pervasives.max(55, l) | 0; i$1<= i_finish; ++i$1){ var j = i$1 % 55; var k = i$1 % l; accu = combine(accu, seed$1[k]); @@ -66,9 +66,9 @@ function copy(s) { } function bits(s) { - s[/* idx */1] = (s[/* idx */1] + 1) % 55; + s[/* idx */1] = (s[/* idx */1] + 1 | 0) % 55; var curval = s[/* st */0][s[/* idx */1]]; - var newval = s[/* st */0][(s[/* idx */1] + 24) % 55] + (curval ^ (curval >>> 25) & 31); + var newval = s[/* st */0][(s[/* idx */1] + 24 | 0) % 55] + (curval ^ (curval >>> 25) & 31) | 0; var newval30 = newval & 1073741823; s[/* st */0][s[/* idx */1]] = newval30; return newval30; @@ -87,7 +87,7 @@ function $$int(s, bound) { while(true) { var r = bits(s$1); var v = r % n; - if (r - v > 1073741823 - n + 1) { + if (r - v > (1073741823 - n + 1 | 0)) { continue ; } diff --git a/jscomp/stdlib/scanf.js b/jscomp/stdlib/scanf.js index 7b6da04a0b..b7637faec1 100644 --- a/jscomp/stdlib/scanf.js +++ b/jscomp/stdlib/scanf.js @@ -20,9 +20,9 @@ function next_char(ib) { var c = Caml_curry.app1(ib[/* get_next_char */6], /* () */0); ib[/* current_char */1] = c; ib[/* current_char_is_valid */2] = /* true */1; - ++ ib[3]; + ib[/* char_count */3] = ib[/* char_count */3] + 1 | 0; if (c === /* "\n" */10) { - ++ ib[4]; + ib[/* line_count */4] = ib[/* line_count */4] + 1 | 0; } return c; } @@ -96,7 +96,7 @@ function token(ib) { var tokbuf = ib[/* tokbuf */7]; var tok = Buffer.contents(tokbuf); tokbuf[/* position */1] = 0; - ++ ib[5]; + ib[/* token_count */5] = ib[/* token_count */5] + 1 | 0; return tok; } @@ -134,7 +134,7 @@ function from_string(s) { } else { var c = s.charCodeAt(i[0]); - ++ i[0]; + i[0] = i[0] + 1 | 0; return c; } }; @@ -165,7 +165,7 @@ function from_ic(scan_close_ic, iname, ic) { var next = function () { if (i[0] < lim[0]) { var c = buf[i[0]]; - ++ i[0]; + i[0] = i[0] + 1 | 0; return c; } else if (eof[0]) { @@ -363,7 +363,7 @@ function check_char(ib, _c) { return 0; } else { - var switcher = c$1 - 9; + var switcher = c$1 - 9 | 0; if (switcher > 4 || switcher < 0) { if (switcher !== 23) { return /* () */0; @@ -453,7 +453,7 @@ function token_bool(ib) { function token_int_literal(conv, ib) { var tok; var exit = 0; - var switcher = conv - 88; + var switcher = conv - 88 | 0; if (switcher > 32 || switcher < 0) { exit = 1; } @@ -702,7 +702,7 @@ function scan_octal_int(param, param$1) { } function is_hexa_digit(param) { - var switcher = param - 48; + var switcher = param - 48 | 0; if (switcher > 22 || switcher < 0) { if (switcher > 54 || switcher < 49) { return /* false */0; @@ -725,7 +725,7 @@ function scan_hexadecimal_int(param, param$1) { function scan_sign(width, ib) { var c = checked_peek_char(ib); - var switcher = c - 43; + var switcher = c - 43 | 0; if (switcher > 2 || switcher < 0) { return width; } @@ -748,7 +748,7 @@ function scan_optionally_signed_decimal_int(width, ib) { function scan_int_conv(conv, width, ib) { var exit = 0; - var switcher = conv - 88; + var switcher = conv - 88 | 0; if (switcher > 32 || switcher < 0) { exit = 1; } @@ -935,7 +935,7 @@ function scan_caml_float(width, precision, ib) { ]; } else { - var switcher = c - 69; + var switcher = c - 69 | 0; if (switcher > 32 || switcher < 0) { if (switcher !== -23) { throw [ @@ -990,7 +990,7 @@ function scan_string(stp, width, ib) { } } else { - var switcher = c - 9; + var switcher = c - 9 | 0; if (switcher > 4 || switcher < 0) { if (switcher !== 23) { _width = store_char(width$1, ib, c); @@ -1027,7 +1027,7 @@ function char_for_backslash(c) { return c; } else { - switch (c - 110) { + switch (c - 110 | 0) { case 0 : return /* "\n" */10; case 4 : @@ -1052,7 +1052,7 @@ function char_for_backslash(c) { } function char_for_decimal_code(c0, c1, c2) { - var c = 100 * (c0 - /* "0" */48) + 10 * (c1 - /* "0" */48) + (c2 - /* "0" */48); + var c = (Caml_primitive.imul(100, c0 - /* "0" */48) + Caml_primitive.imul(10, c1 - /* "0" */48) | 0) + (c2 - /* "0" */48) | 0; if (c < 0 || c > 255) { var s = Caml_curry.app3(Printf.sprintf(/* Format */{ 0: /* String_literal */{ @@ -1100,7 +1100,7 @@ function hexadecimal_value_of_char(c) { } function char_for_hexadecimal_code(c1, c2) { - var c = 16 * hexadecimal_value_of_char(c1) + hexadecimal_value_of_char(c2); + var c = (hexadecimal_value_of_char(c1) << 4) + hexadecimal_value_of_char(c2) | 0; if (c < 0 || c > 255) { var s = Caml_curry.app2(Printf.sprintf(/* Format */{ 0: /* String_literal */{ @@ -1176,7 +1176,7 @@ function scan_backslash_char(width, ib) { var exit = 0; if (c >= 40) { if (c >= 58) { - var switcher = c - 92; + var switcher = c - 92 | 0; if (switcher > 28 || switcher < 0) { return bad_input_escape(c); } @@ -1216,7 +1216,7 @@ function scan_backslash_char(width, ib) { case 28 : var get_digit = function () { var c = next_char(ib); - var switcher = c - 48; + var switcher = c - 48 | 0; if (switcher > 22 || switcher < 0) { if (switcher > 54 || switcher < 49) { return bad_input_escape(c); @@ -2281,7 +2281,7 @@ function sscanf_format(s, format, f) { function string_to_String(s) { var l = s.length; - var b = Buffer.create(l + 2); + var b = Buffer.create(l + 2 | 0); Buffer.add_char(b, /* "\"" */34); for(var i = 0 ,i_finish = l - 1; i<= i_finish; ++i){ var c = s.charCodeAt(i); diff --git a/jscomp/stdlib/set.js b/jscomp/stdlib/set.js index 5f543a0c73..e5a133dc91 100644 --- a/jscomp/stdlib/set.js +++ b/jscomp/stdlib/set.js @@ -21,7 +21,7 @@ function Make(funarg) { 0: l, 1: v, 2: r, - 3: hl >= hr ? hl + 1 : hr + 1, + 3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 4, tag: 0 }; @@ -29,7 +29,7 @@ function Make(funarg) { var bal = function (l, v, r) { var hl = l ? l[3] : 0; var hr = r ? r[3] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[2]; var lv = l[1]; @@ -54,7 +54,7 @@ function Make(funarg) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[2]; var rv = r[1]; @@ -84,7 +84,7 @@ function Make(funarg) { 0: l, 1: v, 2: r, - 3: hl >= hr ? hl + 1 : hr + 1, + 3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 4, tag: 0 }; @@ -150,10 +150,10 @@ function Make(funarg) { if (r) { var rh = r[3]; var lh = l[3]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], join(l[2], v, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, r[0]), r[1], r[2]); } else { @@ -659,7 +659,7 @@ function Make(funarg) { }; var cardinal = function (param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[2]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[2]) | 0; } else { return 0; diff --git a/jscomp/stdlib/sort.js b/jscomp/stdlib/sort.js index 87be838a3d..401dd255b7 100644 --- a/jscomp/stdlib/sort.js +++ b/jscomp/stdlib/sort.js @@ -118,7 +118,7 @@ function array(cmp, arr) { var hi = _hi; var lo = _lo; if (hi - lo >= 6) { - var mid = (lo + hi >>> 1); + var mid = ((lo + hi | 0) >>> 1); if (Caml_curry.app2(cmp, arr[mid], arr[lo])) { swap(arr, mid, lo); } @@ -130,7 +130,7 @@ function array(cmp, arr) { } var pivot = arr[mid]; - var i = lo + 1; + var i = lo + 1 | 0; var j = hi - 1; if (!Caml_curry.app2(cmp, pivot, arr[hi]) || !Caml_curry.app2(cmp, arr[lo], pivot)) { throw [ @@ -140,16 +140,16 @@ function array(cmp, arr) { } while(i < j) { while(!Caml_curry.app2(cmp, pivot, arr[i])) { - ++ i; + i = i + 1 | 0; }; while(!Caml_curry.app2(cmp, arr[j], pivot)) { - -- j; + j = j - 1 | 0; }; if (i < j) { swap(arr, i, j); } - ++ i; - -- j; + i = i + 1 | 0; + j = j - 1 | 0; }; if (j - lo <= hi - i) { qsort(lo, j); @@ -177,7 +177,7 @@ function array(cmp, arr) { var j = i - 1; while(j >= 1 && !Caml_curry.app2(cmp, arr[j - 1], val_i)) { arr[j] = arr[j - 1]; - -- j; + j = j - 1 | 0; }; arr[j] = val_i; } diff --git a/jscomp/stdlib/stream.js b/jscomp/stdlib/stream.js index a5d9732392..ab0cbc9cab 100644 --- a/jscomp/stdlib/stream.js +++ b/jscomp/stdlib/stream.js @@ -129,7 +129,7 @@ function get_data(count, _d) { } if (b[/* len */2]) { var r = b[/* buff */1][b[/* ind */3]]; - ++ b[3]; + b[/* ind */3] = b[/* ind */3] + 1 | 0; return /* Scons */{ 0: r, 1: d, @@ -236,14 +236,14 @@ function junk(s) { else { switch (match.tag | 0) { case 0 : - ++ s[0]; + s[0] = s[/* count */0] + 1 | 0; s[1] = match[1]; return /* () */0; case 3 : var g = match[0]; var match$1 = g[/* curr */0]; if (match$1) { - ++ s[0]; + s[0] = s[/* count */0] + 1 | 0; g[/* curr */0] = /* None */0; return /* () */0; } @@ -253,8 +253,8 @@ function junk(s) { break; case 4 : var b = match[0]; - ++ s[0]; - ++ b[3]; + s[0] = s[/* count */0] + 1 | 0; + b[/* ind */3] = b[/* ind */3] + 1 | 0; return /* () */0; default: exit = 1; @@ -287,7 +287,7 @@ function nget(n, s) { if (match) { var a = match[0]; junk(s); - var match$1 = nget(n - 1, s); + var match$1 = nget(n - 1 | 0, s); return /* tuple */[ /* :: */[ a, @@ -299,7 +299,7 @@ function nget(n, s) { length: 2, tag: 0 }, - match$1[2] + 1 + match$1[2] + 1 | 0 ]; } else { @@ -390,7 +390,7 @@ function of_string(s) { return from(function () { var c = count[0]; if (c < s.length) { - ++ count[0]; + count[0] = count[0] + 1 | 0; return /* Some */[s.charCodeAt(c)]; } else { @@ -404,7 +404,7 @@ function of_bytes(s) { return from(function () { var c = count[0]; if (c < s.length) { - ++ count[0]; + count[0] = count[0] + 1 | 0; return /* Some */[s[c]]; } else { diff --git a/jscomp/stdlib/string.js b/jscomp/stdlib/string.js index 3f4b10b849..74ab6520ba 100644 --- a/jscomp/stdlib/string.js +++ b/jscomp/stdlib/string.js @@ -1,9 +1,10 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; -var Bytes = require("./bytes"); -var Caml_string = require("../runtime/caml_string"); -var List = require("./list"); +var Bytes = require("./bytes"); +var Caml_primitive = require("../runtime/caml_primitive"); +var Caml_string = require("../runtime/caml_string"); +var List = require("./list"); function make(n, c) { return Caml_string.bytes_to_string(Bytes.make(n, c)); @@ -27,18 +28,18 @@ function concat(sep, l) { var num = [0]; var len = [0]; List.iter(function (s) { - ++ num[0]; - len[0] += s.length; + num[0] = num[0] + 1 | 0; + len[0] = len[0] + s.length | 0; return /* () */0; }, l); - var r = Caml_string.caml_create_string(len[0] + sep.length * (num[0] - 1)); + var r = Caml_string.caml_create_string(len[0] + Caml_primitive.imul(sep.length, num[0] - 1) | 0); Caml_string.caml_blit_string(hd, 0, r, 0, hd.length); var pos = [hd.length]; List.iter(function (s) { Caml_string.caml_blit_string(sep, 0, r, pos[0], sep.length); - pos[0] += sep.length; + pos[0] = pos[0] + sep.length | 0; Caml_string.caml_blit_string(s, 0, r, pos[0], s.length); - pos[0] += s.length; + pos[0] = pos[0] + s.length | 0; return /* () */0; }, l[1]); return Caml_string.bytes_to_string(r); @@ -65,7 +66,7 @@ function mapi(f, s) { } function is_space(param) { - var switcher = param - 9; + var switcher = param - 9 | 0; if (switcher > 4 || switcher < 0) { if (switcher !== 23) { return /* false */0; @@ -130,7 +131,7 @@ function escaped(s) { } if (exit === 1) { if (Caml_string.caml_is_printable(c)) { - _i = i + 1; + _i = i + 1 | 0; continue ; } diff --git a/jscomp/stdlib/weak.js b/jscomp/stdlib/weak.js index fcf123ecf1..982c35c4e9 100644 --- a/jscomp/stdlib/weak.js +++ b/jscomp/stdlib/weak.js @@ -15,14 +15,14 @@ function length(x) { } function fill(ar, ofs, len, x) { - if (ofs < 0 || len < 0 || ofs + len > ar.length - 1) { + if (ofs < 0 || len < 0 || (ofs + len | 0) > ar.length - 1) { throw [ Caml_builtin_exceptions.invalid_argument, "Weak.fill" ]; } else { - for(var i = ofs ,i_finish = ofs + len - 1; i<= i_finish; ++i){ + for(var i = ofs ,i_finish = (ofs + len | 0) - 1; i<= i_finish; ++i){ Caml_primitive.caml_weak_set(ar, i, x); } return /* () */0; @@ -69,12 +69,12 @@ function Make(H) { var match = Caml_primitive.caml_weak_get(b, i); if (match) { _accu = Caml_curry.app2(f, match[0], accu); - _i = i + 1; + _i = i + 1 | 0; continue ; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -95,12 +95,12 @@ function Make(H) { var match = Caml_primitive.caml_weak_get(b, i); if (match) { Caml_curry.app1(f, match[0]); - _i = i + 1; + _i = i + 1 | 0; continue ; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -122,12 +122,12 @@ function Make(H) { var match = Caml_primitive.caml_weak_check(b, i); if (match !== 0) { Caml_curry.app3(f, b, t[/* hashes */1][j], i); - _i = i + 1; + _i = i + 1 | 0; continue ; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -145,8 +145,8 @@ function Make(H) { else { _accu = accu + ( Caml_primitive.caml_weak_check(b, i) ? 1 : 0 - ); - _i = i + 1; + ) | 0; + _i = i + 1 | 0; continue ; } @@ -158,10 +158,10 @@ function Make(H) { }, t[/* table */0], 0); }; var next_sz = function (n) { - return Pervasives.min((3 * n / 2 | 0) + 3, Sys.max_array_length); + return Pervasives.min((Caml_primitive.imul(3, n) / 2 | 0) + 3 | 0, Sys.max_array_length); }; var prev_sz = function (n) { - return ((n - 3) * 2 + 2) / 3 | 0; + return ((n - 3 << 1) + 2 | 0) / 3 | 0; }; var test_shrink_bucket = function (t) { var bucket = t[/* table */0][t[/* rover */4]]; @@ -176,7 +176,7 @@ function Make(H) { var i = _i; if (j >= prev_len) { if (Caml_primitive.caml_weak_check(bucket, i)) { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -184,7 +184,7 @@ function Make(H) { Caml_primitive.caml_weak_blit(bucket, j, bucket, i, 1); hbucket[i] = hbucket[j]; _j = j - 1; - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -201,7 +201,7 @@ function Make(H) { }; loop(0, bucket.length - 1 - 1); if (prev_len) { - Caml_obj.caml_obj_truncate(bucket, prev_len + 1); + Caml_obj.caml_obj_truncate(bucket, prev_len + 1 | 0); Caml_obj.caml_obj_truncate(hbucket, prev_len); } else { @@ -213,7 +213,7 @@ function Make(H) { } } - t[/* rover */4] = (t[/* rover */4] + 1) % t[/* table */0].length; + t[/* rover */4] = (t[/* rover */4] + 1 | 0) % t[/* table */0].length; return /* () */0; }; var add_aux = function (t, setter, d, h, index) { @@ -224,7 +224,7 @@ function Make(H) { while(true) { var i = _i; if (i >= sz) { - var newsz = Pervasives.min((3 * sz / 2 | 0) + 3, Sys.max_array_length - 1); + var newsz = Pervasives.min((Caml_primitive.imul(3, sz) / 2 | 0) + 3 | 0, Sys.max_array_length - 1); if (newsz <= sz) { throw [ Caml_builtin_exceptions.failure, @@ -240,7 +240,7 @@ function Make(H) { t[/* table */0][index] = newbucket; t[/* hashes */1][index] = newhashes; if (sz <= t[/* limit */2] && newsz > t[/* limit */2]) { - ++ t[3]; + t[/* oversize */3] = t[/* oversize */3] + 1 | 0; for(var _i$1 = 0; _i$1<= 2; ++_i$1){ test_shrink_bucket(t); } @@ -279,7 +279,7 @@ function Make(H) { } } else if (Caml_primitive.caml_weak_check(bucket, i)) { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -317,25 +317,25 @@ function Make(H) { return match$1[0]; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -373,19 +373,19 @@ function Make(H) { return Caml_curry.app2(iffound, bucket, i); } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -425,30 +425,30 @@ function Make(H) { match$1[0], accu ]; - _i = i + 1; + _i = i + 1 | 0; continue ; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -461,7 +461,7 @@ function Make(H) { return Caml_obj.caml_compare(prim, prim$1); }, lens); var totlen = $$Array.fold_left(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }, 0, lens); return /* tuple */[ len, diff --git a/jscomp/test/a_scope_bug.js b/jscomp/test/a_scope_bug.js index 6b065057e2..1f8a9ed9b7 100644 --- a/jscomp/test/a_scope_bug.js +++ b/jscomp/test/a_scope_bug.js @@ -1,12 +1,13 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; +var Caml_primitive = require("../runtime/caml_primitive"); function odd(_z) { while(true) { var z = _z; - var even = z * z; - var a = even + 4 + even; + var even = Caml_primitive.imul(z, z); + var a = (even + 4 | 0) + even | 0; console.log("" + a); _z = 32; continue ; diff --git a/jscomp/test/and_or_tailcall_test.js b/jscomp/test/and_or_tailcall_test.js index 3de4d54b84..861c1baa5b 100644 --- a/jscomp/test/and_or_tailcall_test.js +++ b/jscomp/test/and_or_tailcall_test.js @@ -10,7 +10,7 @@ function f(b, _, _n) { return /* false */0; } else if (b) { - _n = n + 1; + _n = n + 1 | 0; continue ; } @@ -30,7 +30,7 @@ function or_f(b, _, _n) { return /* true */1; } else { - _n = n + 1; + _n = n + 1 | 0; continue ; } diff --git a/jscomp/test/ari_regress_test.js b/jscomp/test/ari_regress_test.js index ef6c3aab27..0513b82e21 100644 --- a/jscomp/test/ari_regress_test.js +++ b/jscomp/test/ari_regress_test.js @@ -9,17 +9,17 @@ var g = 7; var h = [0]; function gg(x, y) { - var u = x + y; + var u = x + y | 0; return function (z) { - return u + z; + return u + z | 0; }; } function g1(x, y) { - var u = x + y; - ++ h[0]; + var u = x + y | 0; + h[0] = h[0] + 1 | 0; return function (xx, yy) { - return xx + yy + u; + return (xx + yy | 0) + u | 0; }; } diff --git a/jscomp/test/array_test.js b/jscomp/test/array_test.js index f770dc7e01..73cf835058 100644 --- a/jscomp/test/array_test.js +++ b/jscomp/test/array_test.js @@ -15,8 +15,8 @@ function is_sorted(x) { if (i >= len - 1) { return /* true */1; } - else if (Caml_obj.caml_lessthan(x[i], x[i + 1])) { - _i = i + 1; + else if (Caml_obj.caml_lessthan(x[i], x[i + 1 | 0])) { + _i = i + 1 | 0; continue ; } @@ -159,7 +159,7 @@ var array_suites_001 = /* :: */[ 0 ]; var v = $$Array.init(3, function (x) { - return x * 2; + return (x << 1); }); $$Array.blit(v, 1, u, 1, 2); return /* Eq */{ diff --git a/jscomp/test/bdd.js b/jscomp/test/bdd.js index 7e29c7a6fc..5212d8644e 100644 --- a/jscomp/test/bdd.js +++ b/jscomp/test/bdd.js @@ -2,6 +2,7 @@ 'use strict'; var Caml_builtin_exceptions = require("../runtime/caml_builtin_exceptions"); +var Caml_primitive = require("../runtime/caml_primitive"); var Caml_array = require("../runtime/caml_array"); function $$eval(_bdd, vars) { @@ -48,12 +49,12 @@ var nodeC = [1]; var sz_1 = [initSize_1]; -var htab = [Caml_array.caml_make_vect(sz_1[0] + 1, /* [] */0)]; +var htab = [Caml_array.caml_make_vect(sz_1[0] + 1 | 0, /* [] */0)]; var n_items = [0]; function hashVal(x, y, v) { - return (x << 1) + y + (v << 2); + return ((x << 1) + y | 0) + (v << 2) | 0; } function resize(newSize) { @@ -105,10 +106,10 @@ function insert(idl, idh, v, ind, bucket, newNode) { newNode, bucket ]; - return ++ n_items[0]; + return n_items[0] = n_items[0] + 1 | 0; } else { - resize(sz_1[0] + sz_1[0] + 2); + resize((sz_1[0] + sz_1[0] | 0) + 2 | 0); var ind$1 = hashVal(idl, idh, v) & sz_1[0]; htab[0][ind$1] = /* :: */[ newNode, @@ -120,7 +121,7 @@ function insert(idl, idh, v, ind, bucket, newNode) { function resetUnique() { sz_1[0] = initSize_1; - htab[0] = Caml_array.caml_make_vect(sz_1[0] + 1, /* [] */0); + htab[0] = Caml_array.caml_make_vect(sz_1[0] + 1 | 0, /* [] */0); n_items[0] = 0; nodeC[0] = 1; return /* () */0; @@ -160,7 +161,7 @@ function mkNode(low, v, high) { } } else { - var n_002 = (++ nodeC[0], nodeC[0]); + var n_002 = (nodeC[0] = nodeC[0] + 1 | 0, nodeC[0]); var n$1 = /* Node */{ 0: low, 1: v, @@ -213,7 +214,7 @@ var notslot1 = Caml_array.caml_make_vect(1999, 0); var notslot2 = Caml_array.caml_make_vect(1999, one); function hash(x, y) { - return ((x << 1) + y) % 1999; + return ((x << 1) + y | 0) % 1999; } function not(n) { @@ -364,7 +365,7 @@ function hwb(n) { return mkNode(zero, i, one); } else { - return xor(and2(not(mkNode(zero, i, one)), h(i + 1, j)), and2(mkNode(zero, i, one), g(i + 1, j))); + return xor(and2(not(mkNode(zero, i, one)), h(i + 1 | 0, j)), and2(mkNode(zero, i, one), g(i + 1 | 0, j))); } }; return h(0, n - 1); @@ -373,7 +374,7 @@ function hwb(n) { var seed = [0]; function random() { - seed[0] = seed[0] * 25173 + 17431; + seed[0] = Caml_primitive.imul(seed[0], 25173) + 17431 | 0; return +((seed[0] & 1) > 0); } @@ -406,7 +407,7 @@ function test_hwb(bdd, vars) { var ntrue = 0; for(var i = 0 ,i_finish = vars.length - 1; i<= i_finish; ++i){ if (vars[i]) { - ++ ntrue; + ntrue = ntrue + 1 | 0; } } diff --git a/jscomp/test/bigarray_test.js b/jscomp/test/bigarray_test.js index c8fe7d36e2..690b742e5a 100644 --- a/jscomp/test/bigarray_test.js +++ b/jscomp/test/bigarray_test.js @@ -1,9 +1,10 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; -var Caml_bigarray = require("../runtime/caml_bigarray"); -var Bigarray = require("../stdlib/bigarray"); -var Caml_curry = require("../runtime/caml_curry"); +var Caml_bigarray = require("../runtime/caml_bigarray"); +var Bigarray = require("../stdlib/bigarray"); +var Caml_primitive = require("../runtime/caml_primitive"); +var Caml_curry = require("../runtime/caml_curry"); var v = Caml_curry.app3(Bigarray.Array1[0], /* Int32 */6, /* C_layout */0, 20); @@ -20,8 +21,8 @@ var vv = Caml_curry.app3(Bigarray.Array1[0], /* Int32 */6, /* Fortran_layout */1 function init(v) { for(var i = 0 ,i_finish = Caml_bigarray.caml_ba_dim_1(v) - 1; i<= i_finish; ++i){ v[i] = /* float array */[ - i * i, - i * i * i + Caml_primitive.imul(i, i), + Caml_primitive.imul(Caml_primitive.imul(i, i), i) ]; } return /* () */0; diff --git a/jscomp/test/class_type_ffi_test.js b/jscomp/test/class_type_ffi_test.js index 27cd188dc6..a52f340103 100644 --- a/jscomp/test/class_type_ffi_test.js +++ b/jscomp/test/class_type_ffi_test.js @@ -14,7 +14,7 @@ function sum_float_array(arr) { function sum_int_array(arr) { var v = 0; for(var i = 0 ,i_finish = arr.length - 1; i<= i_finish; ++i){ - v += arr[i]; + v = v + arr[i] | 0; } return v; } diff --git a/jscomp/test/complex_if_test.js b/jscomp/test/complex_if_test.js index 6737785a0f..28b3556d60 100644 --- a/jscomp/test/complex_if_test.js +++ b/jscomp/test/complex_if_test.js @@ -7,7 +7,7 @@ var Caml_string = require("../runtime/caml_string"); function fib(n) { if (n !== 1 && n !== 23) { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } else { return 11111123; @@ -20,7 +20,7 @@ function escaped(s) { var match = s[i]; var $js; if (match >= 32) { - var switcher = match - 34; + var switcher = match - 34 | 0; $js = switcher > 58 || switcher < 0 ? ( switcher >= 93 ? 4 : 1 ) : ( @@ -34,7 +34,7 @@ function escaped(s) { match >= 8 ? 2 : 4 ); } - n += $js; + n = n + $js | 0; } if (n === s.length) { return Bytes.copy(s); @@ -73,17 +73,17 @@ function escaped(s) { switch (c) { case 8 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "b" */98; break; case 9 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "t" */116; break; case 10 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "n" */110; break; case 0 : @@ -100,7 +100,7 @@ function escaped(s) { break; case 13 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "r" */114; break; @@ -109,21 +109,21 @@ function escaped(s) { switch (exit) { case 1 : s$prime[n] = /* "\\" */92; - ++ n; - s$prime[n] = 48 + (c / 100 | 0); - ++ n; - s$prime[n] = 48 + (c / 10 | 0) % 10; - ++ n; - s$prime[n] = 48 + c % 10; + n = n + 1 | 0; + s$prime[n] = 48 + (c / 100 | 0) | 0; + n = n + 1 | 0; + s$prime[n] = 48 + (c / 10 | 0) % 10 | 0; + n = n + 1 | 0; + s$prime[n] = 48 + c % 10 | 0; break; case 2 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = c; break; } - ++ n; + n = n + 1 | 0; } return s$prime; } diff --git a/jscomp/test/complex_while_loop.js b/jscomp/test/complex_while_loop.js index 86c1912f5e..bc7fdc491c 100644 --- a/jscomp/test/complex_while_loop.js +++ b/jscomp/test/complex_while_loop.js @@ -10,13 +10,13 @@ function f() { return 1; } else { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } }; return +(fib(n) > 10); }()) { console.log("" + n); - ++ n; + n = n + 1 | 0; }; return /* () */0; } @@ -24,7 +24,7 @@ function f() { function ff() { while(function () { var b = 9; - return +(3 + b > 10); + return +((3 + b | 0) > 10); }()) { }; diff --git a/jscomp/test/cont_int_fold_test.js b/jscomp/test/cont_int_fold_test.js index 700c6c7e85..b9dea88c52 100644 --- a/jscomp/test/cont_int_fold_test.js +++ b/jscomp/test/cont_int_fold_test.js @@ -3,11 +3,11 @@ function a(a0, a1, a2, a3, a4) { - return 1 + a0 + a1 + a2 + a3 + a4 + 2; + return (((((1 + a0 | 0) + a1 | 0) + a2 | 0) + a3 | 0) + a4 | 0) + 2 | 0; } function b(a0, a1, a2, a3, a4) { - return 1 + a0 + a1 + a2 + a3 + a4 + (1 + a0 + a1 + a2 + a3 + a4); + return (((((1 + a0 | 0) + a1 | 0) + a2 | 0) + a3 | 0) + a4 | 0) + (((((1 + a0 | 0) + a1 | 0) + a2 | 0) + a3 | 0) + a4 | 0) | 0; } exports.a = a; diff --git a/jscomp/test/cps_test.js b/jscomp/test/cps_test.js index 02beb9c676..ebe2f512c1 100644 --- a/jscomp/test/cps_test.js +++ b/jscomp/test/cps_test.js @@ -15,7 +15,7 @@ function test() { if (n) { _acc = (function(n,acc){ return function () { - v[0] += n; + v[0] = v[0] + n | 0; return Caml_curry.app1(acc, /* () */0); } }(n,acc)); @@ -47,7 +47,7 @@ function test_closure() { }(i)); } $$Array.iter(function (i) { - v[0] += Caml_curry.app1(i, 0); + v[0] = v[0] + Caml_curry.app1(i, 0) | 0; return /* () */0; }, arr); return v[0]; @@ -59,7 +59,7 @@ function test_closure2() { return x; }); for(var i = 0; i<= 5; ++i){ - var j = i + i; + var j = i + i | 0; arr[i] = (function(j){ return function () { return j; @@ -67,7 +67,7 @@ function test_closure2() { }(j)); } $$Array.iter(function (i) { - v[0] += Caml_curry.app1(i, 0); + v[0] = v[0] + Caml_curry.app1(i, 0) | 0; return /* () */0; }, arr); return v[0]; diff --git a/jscomp/test/debugger_test.js b/jscomp/test/debugger_test.js index 1734b55a43..09feaebfc0 100644 --- a/jscomp/test/debugger_test.js +++ b/jscomp/test/debugger_test.js @@ -7,7 +7,7 @@ function f(x, y) { x, y ]); - return x + y; + return x + y | 0; } function g() { diff --git a/jscomp/test/demo_page.js b/jscomp/test/demo_page.js index a2ce1b6217..dff0ad7b11 100644 --- a/jscomp/test/demo_page.js +++ b/jscomp/test/demo_page.js @@ -10,14 +10,14 @@ function fib(n) { return 1; } else { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } } function sum(n) { var v = 0; for(var i = 0; i<= n; ++i){ - v += i; + v = v + i | 0; } return v; } @@ -37,11 +37,11 @@ function map(f, param) { } function test_curry(x, y) { - return x + y; + return x + y | 0; } function f(param) { - return 32 + param; + return 32 + param | 0; } ReactDom.render(React.createClass({ diff --git a/jscomp/test/ext_array.js b/jscomp/test/ext_array.js index 75632b533b..af5bfbd715 100644 --- a/jscomp/test/ext_array.js +++ b/jscomp/test/ext_array.js @@ -13,9 +13,9 @@ function reverse_in_place(a) { var len = a.length; if (len) { for(var k = 0 ,k_finish = (len - 1) / 2 | 0; k<= k_finish; ++k){ - var t = a$1[i + k]; - a$1[i + k] = a$1[i + len - 1 - k]; - a$1[i + len - 1 - k] = t; + var t = a$1[i + k | 0]; + a$1[i + k | 0] = a$1[(i + len | 0) - 1 - k]; + a$1[(i + len | 0) - 1 - k] = t; } return /* () */0; } @@ -36,7 +36,7 @@ function reverse_of_list(l) { if (param) { a[len - i - 2] = param[0]; _param = param[1]; - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -63,7 +63,7 @@ function filter(f, a) { else { var v = a[i]; if (Caml_curry.app1(f, v)) { - _i = i + 1; + _i = i + 1 | 0; _acc = /* :: */[ v, acc @@ -72,7 +72,7 @@ function filter(f, a) { } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -93,7 +93,7 @@ function filter_map(f, a) { else { var v = a[i]; var match = Caml_curry.app1(f, v); - _i = i + 1; + _i = i + 1 | 0; if (match) { _acc = /* :: */[ match[0], @@ -118,8 +118,8 @@ function range(from, to_) { ]; } else { - return $$Array.init(to_ - from + 1, function (i) { - return i + from; + return $$Array.init(to_ - from + 1 | 0, function (i) { + return i + from | 0; }); } } diff --git a/jscomp/test/ext_bytes.js b/jscomp/test/ext_bytes.js index 678eae03a4..fa2719387b 100644 --- a/jscomp/test/ext_bytes.js +++ b/jscomp/test/ext_bytes.js @@ -10,7 +10,7 @@ function escaped(s) { var match = s[i]; var $js; if (match >= 32) { - var switcher = match - 34; + var switcher = match - 34 | 0; $js = switcher > 58 || switcher < 0 ? ( switcher >= 93 ? 4 : 1 ) : ( @@ -24,7 +24,7 @@ function escaped(s) { match >= 8 ? 2 : 4 ); } - n += $js; + n = n + $js | 0; } if (n === s.length) { return Bytes.copy(s); @@ -63,17 +63,17 @@ function escaped(s) { switch (c) { case 8 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "b" */98; break; case 9 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "t" */116; break; case 10 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "n" */110; break; case 0 : @@ -90,7 +90,7 @@ function escaped(s) { break; case 13 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "r" */114; break; @@ -99,21 +99,21 @@ function escaped(s) { switch (exit) { case 1 : s$prime[n] = /* "\\" */92; - ++ n; - s$prime[n] = 48 + (c / 100 | 0); - ++ n; - s$prime[n] = 48 + (c / 10 | 0) % 10; - ++ n; - s$prime[n] = 48 + c % 10; + n = n + 1 | 0; + s$prime[n] = 48 + (c / 100 | 0) | 0; + n = n + 1 | 0; + s$prime[n] = 48 + (c / 10 | 0) % 10 | 0; + n = n + 1 | 0; + s$prime[n] = 48 + c % 10 | 0; break; case 2 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = c; break; } - ++ n; + n = n + 1 | 0; } return s$prime; } diff --git a/jscomp/test/ext_list.js b/jscomp/test/ext_list.js index 0e5d150a82..dd7834d0b9 100644 --- a/jscomp/test/ext_list.js +++ b/jscomp/test/ext_list.js @@ -65,12 +65,12 @@ function filter_mapi(f, xs) { if (match) { return /* :: */[ match[0], - aux(i + 1, ys) + aux(i + 1 | 0, ys) ]; } else { _xs = ys; - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -138,13 +138,13 @@ function filter_map2i(f, xs, ys) { if (match) { return /* :: */[ match[0], - aux(i + 1, us, vs) + aux(i + 1 | 0, us, vs) ]; } else { _ys = vs; _xs = us; - _i = i + 1; + _i = i + 1 | 0; continue ; } diff --git a/jscomp/test/ext_string.js b/jscomp/test/ext_string.js index a509c210c8..d6511627c5 100644 --- a/jscomp/test/ext_string.js +++ b/jscomp/test/ext_string.js @@ -3,6 +3,7 @@ var Bytes = require("../stdlib/bytes"); var Caml_builtin_exceptions = require("../runtime/caml_builtin_exceptions"); +var Caml_primitive = require("../runtime/caml_primitive"); var Ext_bytes = require("./ext_bytes"); var $$String = require("../stdlib/string"); var Caml_curry = require("../runtime/caml_curry"); @@ -27,7 +28,7 @@ function split_by($staropt$star, is_delim, str) { else if (Caml_curry.app1(is_delim, str.charCodeAt(pos))) { var new_len = last_pos - pos - 1; if (new_len !== 0 || keep_empty) { - var v = $$String.sub(str, pos + 1, new_len); + var v = $$String.sub(str, pos + 1 | 0, new_len); _pos = pos - 1; _last_pos = pos; _acc = /* :: */[ @@ -69,7 +70,7 @@ function starts_with(s, beg) { if (beg_len <= s_len) { var i = 0; while(i < beg_len && s[i] === beg[i]) { - ++ i; + i = i + 1 | 0; }; return +(i === beg_len); } @@ -116,13 +117,13 @@ function escaped(s) { else { var match = s.charCodeAt(i); if (match >= 32) { - var switcher = match - 34; + var switcher = match - 34 | 0; if (switcher > 58 || switcher < 0) { if (switcher >= 93) { return /* true */1; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -131,7 +132,7 @@ function escaped(s) { return /* true */1; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -159,7 +160,7 @@ function for_all(p, s) { return /* true */1; } else if (Caml_curry.app1(p, s.charCodeAt(i))) { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -175,9 +176,9 @@ function is_empty(s) { function repeat(n, s) { var len = s.length; - var res = Caml_string.caml_create_string(n * len); - for(var i = 0 ,i_finish = n - 1; i<= i_finish; ++i){ - $$String.blit(s, 0, res, i * len, len); + var res = Caml_string.caml_create_string(Caml_primitive.imul(n, len)); + for(var i = 0 ,i_finish = n - 1 | 0; i<= i_finish; ++i){ + $$String.blit(s, 0, res, Caml_primitive.imul(i, len), len); } return Bytes.to_string(res); } @@ -187,15 +188,15 @@ function equal(x, y) { } function _is_sub(sub, i, s, j, len) { - if (j + len <= s.length) { + if ((j + len | 0) <= s.length) { var _k = 0; while(true) { var k = _k; if (k === len) { return /* true */1; } - else if (sub[i + k] === s[j + k]) { - _k = k + 1; + else if (sub[i + k | 0] === s[j + k | 0]) { + _k = k + 1 | 0; continue ; } @@ -220,11 +221,11 @@ function find($staropt$star, sub, s) { tag: 248 }; try { - while(i + n <= s.length) { + while((i + n | 0) <= s.length) { if (_is_sub(sub, 0, s, i, n)) { throw Exit; } - ++ i; + i = i + 1 | 0; }; return -1; } @@ -252,7 +253,7 @@ function rfind(sub, s) { if (_is_sub(sub, 0, s, i, n)) { throw Exit; } - -- i; + i = i - 1 | 0; }; return -1; } diff --git a/jscomp/test/fib.js b/jscomp/test/fib.js index 901cfb9c30..657f9e1bdb 100644 --- a/jscomp/test/fib.js +++ b/jscomp/test/fib.js @@ -7,7 +7,7 @@ function fib(n) { return 1; } else { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } } @@ -23,8 +23,8 @@ function fib2(n) { return a; } else { - _i = i + 1; - _b = a + b; + _i = i + 1 | 0; + _b = a + b | 0; _a = b; continue ; @@ -38,7 +38,7 @@ function fib3(n) { for(var i = 1; i<= n; ++i){ var tmp = a; a = b; - b += tmp; + b = b + tmp | 0; } return a; } diff --git a/jscomp/test/for_loop_test.js b/jscomp/test/for_loop_test.js index d0f19f73b7..603fd7f1d2 100644 --- a/jscomp/test/for_loop_test.js +++ b/jscomp/test/for_loop_test.js @@ -1,10 +1,11 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; -var Caml_array = require("../runtime/caml_array"); -var $$Array = require("../stdlib/array"); -var Caml_curry = require("../runtime/caml_curry"); -var List = require("../stdlib/list"); +var Caml_primitive = require("../runtime/caml_primitive"); +var Caml_array = require("../runtime/caml_array"); +var $$Array = require("../stdlib/array"); +var Caml_curry = require("../runtime/caml_curry"); +var List = require("../stdlib/list"); function for_3(x) { var v = [0]; @@ -12,10 +13,10 @@ function for_3(x) { return /* () */0; }, x); for(var i = 0 ,i_finish = x.length - 1; i<= i_finish; ++i){ - var j = i * 2; + var j = (i << 1); arr[i] = (function(j){ return function () { - v[0] += j; + v[0] = v[0] + j | 0; return /* () */0; } }(j)); @@ -32,11 +33,11 @@ function for_4(x) { return /* () */0; }, x); for(var i = 0 ,i_finish = x.length - 1; i<= i_finish; ++i){ - var j = i * 2; - var k = 2 * j; + var j = (i << 1); + var k = (j << 1); arr[i] = (function(k){ return function () { - v[0] += k; + v[0] = v[0] + k | 0; return /* () */0; } }(k)); @@ -53,10 +54,10 @@ function for_5(x, u) { return /* () */0; }, x); for(var i = 0 ,i_finish = x.length - 1; i<= i_finish; ++i){ - var k = 2 * u * u; + var k = Caml_primitive.imul((u << 1), u); arr[i] = (function(k){ return function () { - v[0] += k; + v[0] = v[0] + k | 0; return /* () */0; } }(k)); @@ -75,18 +76,18 @@ function for_6(x, u) { var v4 = [0]; var v5 = [0]; var inspect_3 = -1; - ++ v4[0]; + v4[0] = v4[0] + 1 | 0; for(var j = 0; j<= 1; ++j){ - ++ v5[0]; + v5[0] = v5[0] + 1 | 0; var v2 = [0]; (function(v2){ for(var i = 0 ,i_finish = x.length - 1; i<= i_finish; ++i){ - var k = 2 * u * u; - var h = 2 * v5[0]; - ++ v2[0]; + var k = Caml_primitive.imul((u << 1), u); + var h = (v5[0] << 1); + v2[0] = v2[0] + 1 | 0; arr[i] = (function(k,h){ return function () { - v[0] = v[0] + k + v2[0] + v4[0] + v5[0] + h + u; + v[0] = (((((v[0] + k | 0) + v2[0] | 0) + v4[0] | 0) + v5[0] | 0) + h | 0) + u | 0; return /* () */0; } }(k,h)); @@ -113,9 +114,9 @@ function for_7() { for(var i = 0; i<= 6; ++i){ (function(i){ for(var j = 0; j<= 2; ++j){ - arr[i * 3 + j] = (function(j){ + arr[Caml_primitive.imul(i, 3) + j | 0] = (function(j){ return function () { - v[0] = v[0] + i + j; + v[0] = (v[0] + i | 0) + j | 0; return /* () */0; } }(j)); @@ -134,13 +135,13 @@ function for_8() { return /* () */0; }); for(var i = 0; i<= 6; ++i){ - var k = 2 * i; + var k = (i << 1); (function(i,k){ for(var j = 0; j<= 2; ++j){ - var h = i + j; - arr[i * 3 + j] = (function(j,h){ + var h = i + j | 0; + arr[Caml_primitive.imul(i, 3) + j | 0] = (function(j,h){ return function () { - v[0] = v[0] + i + j + h + k; + v[0] = (((v[0] + i | 0) + j | 0) + h | 0) + k | 0; return /* () */0; } }(j,h)); @@ -176,20 +177,20 @@ function for_9() { }); for(var i = 0; i<= 1; ++i){ var v$1 = [0]; - v$1[0] += i; + v$1[0] = v$1[0] + i | 0; (function(v$1){ for(var j = 0; j<= 1; ++j){ - ++ v$1[0]; + v$1[0] = v$1[0] + 1 | 0; Caml_curry.app1(collect, v$1[0]); - arr[i * 2 + j] = function () { - vv[0] += v$1[0]; + arr[(i << 1) + j | 0] = function () { + vv[0] = vv[0] + v$1[0] | 0; return /* () */0; }; } }(v$1)); arr2[i] = (function(v$1){ return function () { - vv2[0] += v$1[0]; + vv2[0] = vv2[0] + v$1[0] | 0; return /* () */0; } }(v$1)); diff --git a/jscomp/test/format_regression.js b/jscomp/test/format_regression.js index c7c3c875d2..69cd8aba9f 100644 --- a/jscomp/test/format_regression.js +++ b/jscomp/test/format_regression.js @@ -59,7 +59,7 @@ function advance_loop(state) { else { take_queue(state[/* pp_queue */3]); Caml_curry.app1(format_pp_token(state, size$1 < 0 ? 1000000010 : size$1), match[/* token */1]); - state[/* pp_left_total */1] = match[/* length */2] + state[/* pp_left_total */1]; + state[/* pp_left_total */1] = match[/* length */2] + state[/* pp_left_total */1] | 0; continue ; } diff --git a/jscomp/test/hashtbl_test.js b/jscomp/test/hashtbl_test.js index 60839a40b0..218da761b9 100644 --- a/jscomp/test/hashtbl_test.js +++ b/jscomp/test/hashtbl_test.js @@ -31,10 +31,10 @@ function f() { function g(count) { var tbl = Hashtbl.create(/* None */0, 17); for(var i = 0; i<= count; ++i){ - Hashtbl.replace(tbl, i * 2, "" + i); + Hashtbl.replace(tbl, (i << 1), "" + i); } for(var i$1 = 0; i$1<= count; ++i$1){ - Hashtbl.replace(tbl, i$1 * 2, "" + i$1); + Hashtbl.replace(tbl, (i$1 << 1), "" + i$1); } var v = to_list(tbl); return $$Array.of_list(List.sort(function (param, param$1) { @@ -73,7 +73,7 @@ var suites_001 = /* :: */[ return /* Eq */{ 0: $$Array.init(1001, function (i) { return /* tuple */[ - 2 * i, + (i << 1), "" + i ]; }), diff --git a/jscomp/test/inline_edge_cases.js b/jscomp/test/inline_edge_cases.js index 19a35df386..3815ba1130 100644 --- a/jscomp/test/inline_edge_cases.js +++ b/jscomp/test/inline_edge_cases.js @@ -11,7 +11,7 @@ function test3(_n) { } else { - return n + 9; + return (n + 5 | 0) + 4 | 0; } }; } @@ -25,7 +25,7 @@ function test2(_n) { } else { - return test3(n) + 3; + return test3(n) + 3 | 0; } }; } @@ -48,7 +48,7 @@ function test0(_n) { } else { - return test2(n$1) + 2; + return test2(n$1) + 2 | 0; } }; } @@ -57,7 +57,7 @@ function test0(_n) { var v = test0(10); -test0(10) + 2; +test0(10) + 2 | 0; exports.v = v; /* v Not a pure module */ diff --git a/jscomp/test/inline_map2_test.js b/jscomp/test/inline_map2_test.js index 96d4d4a0ee..b14c737b73 100644 --- a/jscomp/test/inline_map2_test.js +++ b/jscomp/test/inline_map2_test.js @@ -25,7 +25,7 @@ function Make(Ord) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -44,7 +44,7 @@ function Make(Ord) { var bal = function (l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -70,7 +70,7 @@ function Make(Ord) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -102,7 +102,7 @@ function Make(Ord) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -424,10 +424,10 @@ function Make(Ord) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], l[2], join(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -685,7 +685,7 @@ function Make(Ord) { }; var cardinal = function (param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; @@ -771,7 +771,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -792,7 +792,7 @@ function singleton(x, d) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -818,7 +818,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -850,7 +850,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -1201,10 +1201,10 @@ function join(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], l[2], join(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -1479,7 +1479,7 @@ function equal(cmp, m1, m2) { function cardinal(param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; @@ -1595,7 +1595,7 @@ function create$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -1616,7 +1616,7 @@ function singleton$1(x, d) { function bal$1(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -1642,7 +1642,7 @@ function bal$1(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -1674,7 +1674,7 @@ function bal$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -2025,10 +2025,10 @@ function join$1(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal$1(l[0], l[1], l[2], join$1(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal$1(join$1(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -2301,7 +2301,7 @@ function equal$1(cmp, m1, m2) { function cardinal$1(param) { if (param) { - return cardinal$1(param[0]) + 1 + cardinal$1(param[3]); + return (cardinal$1(param[0]) + 1 | 0) + cardinal$1(param[3]) | 0; } else { return 0; diff --git a/jscomp/test/inline_map_test.js b/jscomp/test/inline_map_test.js index c744b46a29..f27fedc2a8 100644 --- a/jscomp/test/inline_map_test.js +++ b/jscomp/test/inline_map_test.js @@ -23,7 +23,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -32,7 +32,7 @@ function create(l, x, d, r) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -58,7 +58,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -90,7 +90,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; diff --git a/jscomp/test/inline_regression_test.js b/jscomp/test/inline_regression_test.js index 558c5cdad5..c2e06af824 100644 --- a/jscomp/test/inline_regression_test.js +++ b/jscomp/test/inline_regression_test.js @@ -24,14 +24,14 @@ function generic_basename(is_dir_sep, current_dir_name, name) { } else { var _n$1 = n; - var p = n + 1; + var p = n + 1 | 0; while(true) { var n$1 = _n$1; if (n$1 < 0) { return $$String.sub(name, 0, p); } else if (Caml_curry.app2(is_dir_sep, name, n$1)) { - return $$String.sub(name, n$1 + 1, p - n$1 - 1); + return $$String.sub(name, n$1 + 1 | 0, p - n$1 - 1); } else { _n$1 = n$1 - 1; diff --git a/jscomp/test/int32_test.js b/jscomp/test/int32_test.js index 5b4d2a5890..c512b7ae25 100644 --- a/jscomp/test/int32_test.js +++ b/jscomp/test/int32_test.js @@ -1,13 +1,14 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; -var Pervasives = require("../stdlib/pervasives"); -var Mt = require("./mt"); -var Int32 = require("../stdlib/int32"); -var $$Array = require("../stdlib/array"); -var Caml_curry = require("../runtime/caml_curry"); -var Ext_array = require("./ext_array"); -var Format = require("../stdlib/format"); +var Pervasives = require("../stdlib/pervasives"); +var Mt = require("./mt"); +var Int32 = require("../stdlib/int32"); +var Caml_primitive = require("../runtime/caml_primitive"); +var $$Array = require("../stdlib/array"); +var Caml_curry = require("../runtime/caml_curry"); +var Ext_array = require("./ext_array"); +var Format = require("../stdlib/format"); function f(x) { return /* tuple */[ @@ -151,7 +152,37 @@ var shift_left_tests = /* tuple */[ var test_div = 30; -Mt.from_pair_suites("int32_test.ml", Pervasives.$at(/* [] */0, Pervasives.$at($$Array.to_list(Ext_array.map2i(function (i, a, b) { +function $star$tilde(prim, prim$1) { + return Caml_primitive.imul(prim, prim$1); +} + +Mt.from_pair_suites("int32_test.ml", Pervasives.$at(/* :: */[ + /* tuple */[ + 'File "int32_test.ml", line 32, characters 2-9', + function () { + return /* Eq */{ + 0: 1, + 1: 1, + length: 2, + tag: 0 + }; + } + ], + /* :: */[ + /* tuple */[ + 'File "int32_test.ml", line 33, characters 2-9', + function () { + return /* Eq */{ + 0: -2147483647, + 1: -2147483647, + length: 2, + tag: 0 + }; + } + ], + /* [] */0 + ] + ], Pervasives.$at($$Array.to_list(Ext_array.map2i(function (i, a, b) { return /* tuple */[ Caml_curry.app1(Format.asprintf(/* Format */{ 0: /* String_literal */{ @@ -245,4 +276,5 @@ exports.shift_right_logical_tests = shift_right_logical_tests; exports.shift_right_tests = shift_right_tests; exports.shift_left_tests = shift_left_tests; exports.test_div = test_div; +exports.$star$tilde = $star$tilde; /* shift_right_logical_tests Not a pure module */ diff --git a/jscomp/test/int32_test.ml b/jscomp/test/int32_test.ml index 5e11ab0410..b9fbdb3f5a 100644 --- a/jscomp/test/int32_test.ml +++ b/jscomp/test/int32_test.ml @@ -26,9 +26,11 @@ let shift_left_tests = let test_div = 61 / 2 +let ( *~ ) = Int32.mul -;; Mt.from_pair_suites __FILE__ @@ [ - +;; Mt.from_pair_suites __FILE__ @@ Mt.[ + __LOC__, (fun _ -> Eq (0xffff_ffffl *~ 0xffff_ffffl, 1l)); + __LOC__, (fun _ -> Eq (0xffff_ffffl *~ 0x7fff_ffffl, -2147483647l)) ] @ ((let (a,b) = shift_right_logical_tests in Ext_array.map2i (fun i a b -> Format.asprintf "shift_right_logical_cases %d" i, (fun _ -> Mt.Eq(a,b)) ) a b |> Array.to_list)) diff --git a/jscomp/test/int_map.js b/jscomp/test/int_map.js index 9fd623c797..b12217f322 100644 --- a/jscomp/test/int_map.js +++ b/jscomp/test/int_map.js @@ -22,7 +22,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -43,7 +43,7 @@ function singleton(x, d) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -69,7 +69,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -101,7 +101,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -440,10 +440,10 @@ function join(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], l[2], join(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -713,7 +713,7 @@ function equal(cmp, m1, m2) { function cardinal(param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; diff --git a/jscomp/test/int_overflow_test.js b/jscomp/test/int_overflow_test.js index bfb2ed3621..353d5ea3cd 100644 --- a/jscomp/test/int_overflow_test.js +++ b/jscomp/test/int_overflow_test.js @@ -1,13 +1,14 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; -var Mt = require("./mt"); -var Int32 = require("../stdlib/int32"); +var Mt = require("./mt"); +var Int32 = require("../stdlib/int32"); +var Caml_primitive = require("../runtime/caml_primitive"); function hash_variant(s) { var accu = 0; for(var i = 0 ,i_finish = s.length - 1; i<= i_finish; ++i){ - accu = 223 * accu + s.charCodeAt(i) & (1 << 31) - 1; + accu = Caml_primitive.imul(223, accu) + s.charCodeAt(i) & (1 << 31) - 1; } if (accu > 1073741823) { return accu - (1 << 31) | 0; diff --git a/jscomp/test/js_obj_test.js b/jscomp/test/js_obj_test.js index 208b558f73..ad8880fc1f 100644 --- a/jscomp/test/js_obj_test.js +++ b/jscomp/test/js_obj_test.js @@ -27,7 +27,7 @@ var suites_000 = /* tuple */[ var $$class = CamlinternalOO.create_table(["say"]); var say = CamlinternalOO.get_method_label($$class, "say"); CamlinternalOO.set_method($$class, say, function (_, x) { - return 1 + x; + return 1 + x | 0; }); var env_init = function () { return CamlinternalOO.create_object_opt(0, $$class); @@ -52,7 +52,7 @@ var suites_001 = /* :: */[ 0: 34, 1: f({ "say": function (x) { - return x + 2; + return x + 2 | 0; } }), length: 2, diff --git a/jscomp/test/lam_methname.js b/jscomp/test/lam_methname.js index c2f7c06077..8c828a2419 100644 --- a/jscomp/test/lam_methname.js +++ b/jscomp/test/lam_methname.js @@ -44,7 +44,7 @@ function process(x) { } else { var len_sub = sub.length; - var indicator = Ext_string.tail_from(x, v + len_sub); + var indicator = Ext_string.tail_from(x, v + len_sub | 0); var normal_name = $$String.sub(x, 0, v); switch (indicator) { case "r" : diff --git a/jscomp/test/lazy_test.js b/jscomp/test/lazy_test.js index 03a3f1e605..acd8fb7382 100644 --- a/jscomp/test/lazy_test.js +++ b/jscomp/test/lazy_test.js @@ -158,7 +158,7 @@ var l_from_fun = Lazy.from_fun(function () { var forward_test = { 0: function () { var u = 3; - ++ u; + u = u + 1 | 0; return u; }, length: 1, diff --git a/jscomp/test/libqueue_test.js b/jscomp/test/libqueue_test.js index 1b2d676145..01d0783fff 100644 --- a/jscomp/test/libqueue_test.js +++ b/jscomp/test/libqueue_test.js @@ -773,7 +773,7 @@ Queue.iter(function (j) { ] ]; } - return ++ i$7[0]; + return i$7[0] = i$7[0] + 1 | 0; }, q$5); var q1$1 = /* record */[ diff --git a/jscomp/test/loop_regression_test.js b/jscomp/test/loop_regression_test.js index 4778c45828..b86ebe2f96 100644 --- a/jscomp/test/loop_regression_test.js +++ b/jscomp/test/loop_regression_test.js @@ -12,8 +12,8 @@ function f() { return acc[0]; } else { - acc[0] += v[0]; - ++ v[0]; + acc[0] = acc[0] + v[0] | 0; + v[0] = v[0] + 1 | 0; continue ; } diff --git a/jscomp/test/map_find_test.js b/jscomp/test/map_find_test.js index ff812cb824..62e5641d44 100644 --- a/jscomp/test/map_find_test.js +++ b/jscomp/test/map_find_test.js @@ -24,7 +24,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -33,7 +33,7 @@ function create(l, x, d, r) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -59,7 +59,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -91,7 +91,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -203,7 +203,7 @@ function create$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -212,7 +212,7 @@ function create$1(l, x, d, r) { function bal$1(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -238,7 +238,7 @@ function bal$1(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -270,7 +270,7 @@ function bal$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; diff --git a/jscomp/test/map_test.js b/jscomp/test/map_test.js index c958103f0d..689b5ddd02 100644 --- a/jscomp/test/map_test.js +++ b/jscomp/test/map_test.js @@ -25,7 +25,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -34,7 +34,7 @@ function create(l, x, d, r) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -60,7 +60,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -92,7 +92,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -238,7 +238,7 @@ function equal(cmp, m1, m2) { function cardinal(param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; @@ -262,7 +262,7 @@ function create$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -271,7 +271,7 @@ function create$1(l, x, d, r) { function bal$1(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -297,7 +297,7 @@ function bal$1(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -329,7 +329,7 @@ function bal$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; diff --git a/jscomp/test/obj_test.js b/jscomp/test/obj_test.js index 93726a65c4..a1220b5850 100644 --- a/jscomp/test/obj_test.js +++ b/jscomp/test/obj_test.js @@ -26,7 +26,7 @@ var hello = ids[1]; CamlinternalOO.set_methods($$class, /* array */[ hi, function (_, x, y) { - return x + y; + return x + y | 0; }, hello, function (self$neg1, z) { @@ -92,7 +92,7 @@ var hello$1 = ids$2[3]; CamlinternalOO.set_methods($$class$2, /* array */[ hi$1, function (_, v, z) { - return v + z; + return v + z | 0; }, id1, function () { @@ -129,7 +129,7 @@ var $$class$4 = CamlinternalOO.create_table(["add"]); var add = CamlinternalOO.get_method_label($$class$4, "add"); CamlinternalOO.set_method($$class$4, add, function (_, x, y) { - return x + y; + return x + y | 0; }); CamlinternalOO.init_class($$class$4); @@ -147,7 +147,7 @@ var add$1 = ids$3[1]; CamlinternalOO.set_methods($$class$5, /* array */[ add$1, function (_, x, y) { - return x + y; + return x + y | 0; }, hi$2, function (self$neg6, x) { diff --git a/jscomp/test/pr_regression_test.js b/jscomp/test/pr_regression_test.js index 8bd3a495d4..f69ea6430b 100644 --- a/jscomp/test/pr_regression_test.js +++ b/jscomp/test/pr_regression_test.js @@ -7,7 +7,7 @@ var Caml_curry = require("../runtime/caml_curry"); var v = [3]; function f(h) { - ++ v[0]; + v[0] = v[0] + 1 | 0; var partial_arg = 3; return function (param) { return Caml_curry.app2(h, partial_arg, param); @@ -15,11 +15,11 @@ function f(h) { } f(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }); f(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }); var a = v[0]; @@ -27,7 +27,7 @@ var a = v[0]; var v$1 = [3]; function f$1(h) { - ++ v$1[0]; + v$1[0] = v$1[0] + 1 | 0; var partial_arg = 3; return function (param) { return Caml_curry.app2(h, partial_arg, param); @@ -35,11 +35,11 @@ function f$1(h) { } f$1(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }); f$1(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }); var b = v$1[0]; @@ -47,15 +47,15 @@ var b = v$1[0]; var v$2 = [3]; function f$2(h) { - return Caml_curry.app2(h, 2, (++ v$2[0], 3)); + return Caml_curry.app2(h, 2, (v$2[0] = v$2[0] + 1 | 0, 3)); } f$2(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }); f$2(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }); var c = v$2[0]; @@ -63,7 +63,7 @@ var c = v$2[0]; var v$3 = [3]; function f$3(h, _) { - ++ v$3[0]; + v$3[0] = v$3[0] + 1 | 0; var partial_arg = 9; return function (param) { return Caml_curry.app2(h, partial_arg, param); @@ -71,11 +71,11 @@ function f$3(h, _) { } f$3(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }, 3); f$3(function (prim, prim$1) { - return prim + prim$1; + return prim + prim$1 | 0; }, 3); var d = v$3[0]; diff --git a/jscomp/test/qcc.js b/jscomp/test/qcc.js index 0fab3a6c05..44b70a7b4f 100644 --- a/jscomp/test/qcc.js +++ b/jscomp/test/qcc.js @@ -72,14 +72,14 @@ function find(s, _n) { while(true) { var n = _n; if (n >= syms[0]) { - ++ syms[0]; + syms[0] = syms[0] + 1 | 0; return n; } else if (symtab[n] === s) { return n; } else { - _n = n + 1; + _n = n + 1 | 0; continue ; } @@ -137,7 +137,7 @@ function getq() { } function isid(param) { - var switcher = param - 91; + var switcher = param - 91 | 0; if (switcher > 5 || switcher < 0) { if ((switcher + 26 >>> 0) > 57) { return /* false */0; @@ -243,7 +243,7 @@ function next() { }; } else { - _n = 10 * n + Caml_curry.app1(getch, /* () */0) - 48; + _n = (Caml_primitive.imul(10, n) + Caml_curry.app1(getch, /* () */0) | 0) - 48; continue ; } @@ -279,7 +279,7 @@ function next() { var match$2 = peekch(/* () */0); if (match$2 !== 34) { glo[e] = getq(/* () */0); - _e = e + 1; + _e = e + 1 | 0; continue ; } @@ -287,7 +287,7 @@ function next() { Caml_curry.app1(getch, /* () */0); gpos[0] = e + 8 & -8; return /* SLit */{ - 0: b + 4194536, + 0: (b + 232 | 0) + 4194304 | 0, 1: Bytes.to_string(Bytes.sub(glo, b, e - b)), length: 2, tag: 2 @@ -305,13 +305,13 @@ function next() { s[n$1] = ch$1; if (isid(peekch(/* () */0))) { _ch = Caml_curry.app1(getch, /* () */0); - _n$1 = n$1 + 1; + _n$1 = n$1 + 1 | 0; continue ; } else { return /* Sym */{ - 0: Caml_curry.app1(addsym, Bytes.to_string(Bytes.sub(s, 0, n$1 + 1))), + 0: Caml_curry.app1(addsym, Bytes.to_string(Bytes.sub(s, 0, n$1 + 1 | 0))), length: 1, tag: 3 }; @@ -410,7 +410,7 @@ function out(x) { if (x !== 0) { out(x / 256 | 0); obuf[opos[0]] = Char.chr(x & 255); - return ++ opos[0]; + return opos[0] = opos[0] + 1 | 0; } else { return 0; @@ -419,15 +419,15 @@ function out(x) { function le(n, x) { for(var i = 0 ,i_finish = (n / 8 | 0) - 1; i<= i_finish; ++i){ - var $$byte = (x >>> i * 8) & 255; + var $$byte = (x >>> (i << 3)) & 255; obuf[opos[0]] = Char.chr($$byte); - ++ opos[0]; + opos[0] = opos[0] + 1 | 0; } return /* () */0; } function get32(l) { - return obuf[l] + obuf[l + 1] * 256 + obuf[l + 2] * 65536 + obuf[l + 3] * 16777216; + return ((obuf[l] + (obuf[l + 1 | 0] << 8) | 0) + (obuf[l + 2 | 0] << 16) | 0) + (obuf[l + 3 | 0] << 24) | 0; } function patch(rel, loc, n) { @@ -444,7 +444,7 @@ function patch(rel, loc, n) { if (loc !== 0) { var i = opos[0]; var loc$prime = get32(loc); - var x = rel ? n - (loc + 4) : n; + var x = rel ? n - (loc + 4 | 0) : n; if (dbg[0]) { Caml_curry.app3(Printf.eprintf(/* Format */{ 0: /* String_literal */{ @@ -506,18 +506,18 @@ function patch(rel, loc, n) { } function load(r, n) { - out(184 + r); + out(184 + r | 0); return le(32, n); } function cmp(n) { load(0, 0); - return out(1020608 + (n << 8)); + return out(1020608 + (n << 8) | 0); } function test(n, l) { out(4752832); - out(3972 + n); + out(3972 + n | 0); var loc = opos[0]; le(32, l); return loc; @@ -526,22 +526,22 @@ function test(n, l) { var align = [0]; function push(r) { - ++ align[0]; + align[0] = align[0] + 1 | 0; if (r < 8) { - return out(80 + r); + return out(80 + r | 0); } else { - return out(16720 + r - 8); + return out((16720 + r | 0) - 8); } } function pop(r) { - -- align[0]; + align[0] = align[0] - 1 | 0; if (r < 8) { - return out(88 + r); + return out(88 + r | 0); } else { - return out(16728 + r - 8); + return out((16728 + r | 0) - 8); } } @@ -1391,7 +1391,7 @@ function decl(g, _n, _stk) { var match = Caml_curry.app1(next$1, /* () */0); if (match.tag === 3) { var s = match[0]; - var n$prime = n + 1; + var n$prime = n + 1 | 0; var stk$prime; if (g) { var glo = globs[s]; @@ -1401,19 +1401,19 @@ function decl(g, _n, _stk) { "symbol defined twice" ]; } - var va = gpos[0] + 4194536; + var va = (gpos[0] + 232 | 0) + 4194304 | 0; globs[s] = /* record */[ glo[/* loc */0], va ]; - gpos[0] += 8; + gpos[0] = gpos[0] + 8 | 0; stk$prime = stk; } else { stk$prime = /* :: */[ /* tuple */[ s, - top - 8 * n$prime + top - (n$prime << 3) ], stk ]; @@ -1474,14 +1474,14 @@ function decl(g, _n, _stk) { }), n); } _stk = match[1]; - _n = n + match[0]; + _n = n + match[0] | 0; continue ; } else { Caml_curry.app1(unnext, t); if (!g && n !== 0) { - if (n * 8 >= 256) { + if ((n << 3) >= 256) { throw [ Caml_builtin_exceptions.assert_failure, [ @@ -1492,8 +1492,8 @@ function decl(g, _n, _stk) { ]; } out(4752364); - out(n * 8); - align[0] += n; + out((n << 3)); + align[0] = align[0] + n | 0; } if (dbg[0] && !g) { console.error("end of blk decls"); @@ -1625,7 +1625,7 @@ function stmt(brk, stk) { } if (n !== 0) { out(4752324); - out(n * 8); + out((n << 3)); } out(233); var loc$4 = opos[0]; @@ -1668,7 +1668,7 @@ function block(brk, stk) { Caml_curry.app1(next$1, /* () */0); if (n !== 0) { out(4752324); - out(n * 8); + out((n << 3)); align[0] -= n; return /* () */0; } @@ -1743,14 +1743,14 @@ function top(_param) { } var stk$prime_000 = /* tuple */[ match[0], - -n * 8 + (-n << 3) ]; var stk$prime = /* :: */[ stk$prime_000, stk ]; _stk = stk$prime; - _n = n + 1; + _n = n + 1 | 0; _regs = List.tl(regs); continue ; @@ -1882,8 +1882,8 @@ function elfphdr(ty, off, sz, align) { le(32, ty); le(32, 7); le(64, off); - le(64, off + 4194304); - le(64, off + 4194304); + le(64, off + 4194304 | 0); + le(64, off + 4194304 | 0); le(64, sz); le(64, sz); return le(64, align); @@ -1905,7 +1905,7 @@ function elfgen(outf) { out(35271); load(0, 60); out(3845); - var off = 232 + gpos[0]; + var off = 232 + gpos[0] | 0; var itr = function (f) { return Caml_curry.app1(symitr, function (i, s) { var g = globs[i]; @@ -1918,7 +1918,7 @@ function elfgen(outf) { }); }; var va = function (x) { - return x + off + 4194304; + return (x + off | 0) + 4194304 | 0; }; var patchloc = function (i, _) { var g = globs[i]; @@ -1934,25 +1934,25 @@ function elfgen(outf) { }; Caml_curry.app1(symitr, patchloc); var strtab = opos[0]; - ++ opos[0]; + opos[0] = opos[0] + 1 | 0; var dllen = 37; $$String.blit("/lib64/ld-linux-x86-64.so.2\0libc.so.6", 0, obuf, opos[0], dllen); - opos[0] = opos[0] + dllen + 1; + opos[0] = (opos[0] + dllen | 0) + 1 | 0; itr(function (s, sl, _) { $$String.blit(s, 0, obuf, opos[0], sl); - opos[0] = opos[0] + sl + 1; + opos[0] = (opos[0] + sl | 0) + 1 | 0; return /* () */0; }); opos[0] = opos[0] + 7 & -8; var symtab = opos[0]; - var n = [dllen + 2]; - opos[0] += 24; + var n = [dllen + 2 | 0]; + opos[0] = opos[0] + 24 | 0; itr(function (_, sl, _$1) { le(32, n[0]); le(32, 16); le(64, 0); le(64, 0); - n[0] = n[0] + sl + 1; + n[0] = (n[0] + sl | 0) + 1 | 0; return /* () */0; }); var rel = opos[0]; @@ -1963,7 +1963,7 @@ function elfgen(outf) { var l = _l; if (l !== 0) { le(64, va(l)); - le(64, 1 + (n$1[0] << 32)); + le(64, 1 + (n$1[0] << 32) | 0); le(64, 0); _l = get32(l); continue ; @@ -1975,12 +1975,12 @@ function elfgen(outf) { }; }; genrel(l); - return ++ n$1[0]; + return n$1[0] = n$1[0] + 1 | 0; }); var hash = opos[0]; var n$2 = ((rel - symtab) / 24 | 0) - 1; le(32, 1); - le(32, n$2 + 1); + le(32, n$2 + 1 | 0); le(32, n$2 > 0 ? 1 : 0); for(var i = 1; i<= n$2; ++i){ le(32, i); @@ -2052,9 +2052,9 @@ function elfgen(outf) { Bytes.blit(glo, 0, obuf, 232, gpos[0]); Bytes.blit(elfhdr, 0, obuf, 0, 64); opos[0] = 64; - elfphdr(3, strtab + 1 + off, 28, 1); - elfphdr(1, 0, tend + off, 2097152); - elfphdr(2, dyn + off, tend - dyn, 8); + elfphdr(3, (strtab + 1 | 0) + off | 0, 28, 1); + elfphdr(1, 0, tend + off | 0, 2097152); + elfphdr(2, dyn + off | 0, tend - dyn, 8); if (opos[0] !== 232) { throw [ Caml_builtin_exceptions.assert_failure, @@ -2066,7 +2066,7 @@ function elfgen(outf) { ]; } patch(/* false */0, 24, va(entry)); - return Pervasives.output_bytes(outf, Bytes.sub(obuf, 0, tend + off)); + return Pervasives.output_bytes(outf, Bytes.sub(obuf, 0, tend + off | 0)); } function main() { diff --git a/jscomp/test/queue_test.js b/jscomp/test/queue_test.js index 5b7fa88b77..5c12bdefa8 100644 --- a/jscomp/test/queue_test.js +++ b/jscomp/test/queue_test.js @@ -10,7 +10,7 @@ function to_array(q) { var v = Caml_array.caml_make_vect(q[/* length */0], 0); Queue.fold(function (i, e) { v[i] = e; - return i + 1; + return i + 1 | 0; }, 0, q); return v; } diff --git a/jscomp/test/rec_module_test.js b/jscomp/test/rec_module_test.js index 4f2454f666..00a17cd563 100644 --- a/jscomp/test/rec_module_test.js +++ b/jscomp/test/rec_module_test.js @@ -83,7 +83,7 @@ function even$1(n) { } function x() { - return Caml_curry.app1(BB[1], /* () */0) + 3; + return Caml_curry.app1(BB[1], /* () */0) + 3 | 0; } CamlinternalMod.update_mod([[ @@ -148,7 +148,7 @@ function create(l, v, r) { 0: l, 1: v, 2: r, - 3: hl >= hr ? hl + 1 : hr + 1, + 3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 4, tag: 0 }; @@ -157,7 +157,7 @@ function create(l, v, r) { function bal(l, v, r) { var hl = l ? l[3] : 0; var hr = r ? r[3] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[2]; var lv = l[1]; @@ -182,7 +182,7 @@ function bal(l, v, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[2]; var rv = r[1]; @@ -212,7 +212,7 @@ function bal(l, v, r) { 0: l, 1: v, 2: r, - 3: hl >= hr ? hl + 1 : hr + 1, + 3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 4, tag: 0 }; @@ -283,10 +283,10 @@ function join(l, v, r) { if (r) { var rh = r[3]; var lh = l[3]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], join(l[2], v, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, r[0]), r[1], r[2]); } else { @@ -815,7 +815,7 @@ function partition(p, param) { function cardinal(param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[2]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[2]) | 0; } else { return 0; diff --git a/jscomp/test/rec_value_test.js b/jscomp/test/rec_value_test.js index d2286252ba..4ed0122738 100644 --- a/jscomp/test/rec_value_test.js +++ b/jscomp/test/rec_value_test.js @@ -56,7 +56,7 @@ function naive(n) { return 1; } else { - return n + naive(n - 1) + naive(n - 2); + return (n + naive(n - 1) | 0) + naive(n - 2) | 0; } } @@ -87,7 +87,7 @@ Caml_obj.caml_update_dummy(h, { function fib(n) { if (n > 3 || n < 0) { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } else { switch (n) { @@ -165,7 +165,7 @@ function fib2(n) { return 1; } else { - return fib2(n - 1) + fib2(n - 2); + return fib2(n - 1) + fib2(n - 2) | 0; } } @@ -174,7 +174,7 @@ function fib3(n) { return 1; } else { - return fib3(n - 1) + fib3(n - 2); + return fib3(n - 1) + fib3(n - 2) | 0; } } @@ -226,7 +226,7 @@ function sum(_acc, _n) { var acc = _acc; if (n > 0) { _n = n - 1; - _acc = acc + n; + _acc = acc + n | 0; continue ; } diff --git a/jscomp/test/small_inline_test.js b/jscomp/test/small_inline_test.js index f4520950f2..89a37fce15 100644 --- a/jscomp/test/small_inline_test.js +++ b/jscomp/test/small_inline_test.js @@ -30,7 +30,7 @@ function hello5(y, f) { function f(_x) { while(true) { var x = _x; - _x = x + 4; + _x = (((x + 1 | 0) + 1 | 0) + 1 | 0) + 1 | 0; continue ; }; @@ -40,7 +40,7 @@ function ff(_x, _y) { while(true) { var y = _y; var x = _x; - _y = x + 1; + _y = x + 1 | 0; _x = y; continue ; diff --git a/jscomp/test/string_test.js b/jscomp/test/string_test.js index 31e5bd6f0e..37fbfa4449 100644 --- a/jscomp/test/string_test.js +++ b/jscomp/test/string_test.js @@ -29,7 +29,7 @@ function ff(x) { default: a = 8; } - return a + 3; + return a + 3 | 0; } function gg(x) { @@ -61,7 +61,7 @@ function gg(x) { } } - return a + 3; + return a + 3 | 0; } function rev_split_by_char(c, s) { @@ -77,7 +77,7 @@ function rev_split_by_char(c, s) { s$prime, l ]; - _i = i$prime + 1; + _i = i$prime + 1 | 0; continue ; } @@ -122,7 +122,7 @@ function xsplit(delim, s) { } } if (exit === 1) { - var l_000 = $$String.sub(s, i$prime + 1, i - i$prime - 1); + var l_000 = $$String.sub(s, i$prime + 1 | 0, i - i$prime - 1); var l$1 = /* :: */[ l_000, l diff --git a/jscomp/test/tailcall_inline_test.js b/jscomp/test/tailcall_inline_test.js index 05e23c53ea..f6d7bd8b7c 100644 --- a/jscomp/test/tailcall_inline_test.js +++ b/jscomp/test/tailcall_inline_test.js @@ -12,7 +12,7 @@ function f() { var acc = _acc; if (n > 0) { _n = n - 1; - _acc = acc + n; + _acc = acc + n | 0; continue ; } diff --git a/jscomp/test/test_ari.js b/jscomp/test/test_ari.js index 73253782d8..a078294d2f 100644 --- a/jscomp/test/test_ari.js +++ b/jscomp/test/test_ari.js @@ -8,12 +8,12 @@ var U = require("U"); function f(x) { return function (param) { - return x + param; + return x + param | 0; }; } function f1(x, y) { - return x + y; + return x + y | 0; } function f3(g, x) { @@ -21,7 +21,7 @@ function f3(g, x) { } function f2(param) { - return 3 + param; + return 3 + param | 0; } var g = 7; @@ -38,7 +38,7 @@ function length_aux(_len, _param) { var len = _len; if (param) { _param = param[1]; - _len = len + 1; + _len = len + 1 | 0; continue ; } diff --git a/jscomp/test/test_array_primitive.js b/jscomp/test/test_array_primitive.js index 2724e8c4c2..111564b5fe 100644 --- a/jscomp/test/test_array_primitive.js +++ b/jscomp/test/test_array_primitive.js @@ -6,7 +6,7 @@ var Caml_builtin_exceptions = require("../runtime/caml_builtin_exceptions"); function caml_array_sub(x, offset, len) { var result = new Array(len); for(var j = 0 ,j_finish = len - 1; j<= j_finish; ++j){ - result[j] = x[offset + j]; + result[j] = x[offset + j | 0]; } return result; } diff --git a/jscomp/test/test_bug.js b/jscomp/test/test_bug.js index f6943c9100..7d8fce621b 100644 --- a/jscomp/test/test_bug.js +++ b/jscomp/test/test_bug.js @@ -35,7 +35,7 @@ function escaped(s) { if (exit === 1) { $js = Caml_string.caml_is_printable(c) ? 1 : 4; } - n += $js; + n = n + $js | 0; } if (n === s.length) { return Bytes.copy(s); @@ -46,26 +46,26 @@ function escaped(s) { for(var i$1 = 0 ,i_finish$1 = s.length - 1; i$1<= i_finish$1; ++i$1){ var c$1 = s[i$1]; var exit$1 = 0; - var switcher = c$1 - 34; + var switcher = c$1 - 34 | 0; if (switcher > 58 || switcher < 0) { if (switcher >= -20) { exit$1 = 1; } else { - switch (switcher + 34) { + switch (switcher + 34 | 0) { case 8 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "b" */98; break; case 9 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "t" */116; break; case 10 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "n" */110; break; case 0 : @@ -82,7 +82,7 @@ function escaped(s) { break; case 13 : s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = /* "r" */114; break; @@ -91,7 +91,7 @@ function escaped(s) { } else if (switcher > 57 || switcher < 1) { s$prime[n] = /* "\\" */92; - ++ n; + n = n + 1 | 0; s$prime[n] = c$1; } else { @@ -103,15 +103,15 @@ function escaped(s) { } else { s$prime[n] = /* "\\" */92; - ++ n; - s$prime[n] = 48 + (c$1 / 100 | 0); - ++ n; - s$prime[n] = 48 + (c$1 / 10 | 0) % 10; - ++ n; - s$prime[n] = 48 + c$1 % 10; + n = n + 1 | 0; + s$prime[n] = 48 + (c$1 / 100 | 0) | 0; + n = n + 1 | 0; + s$prime[n] = 48 + (c$1 / 10 | 0) % 10 | 0; + n = n + 1 | 0; + s$prime[n] = 48 + c$1 % 10 | 0; } } - ++ n; + n = n + 1 | 0; } return s$prime; } diff --git a/jscomp/test/test_char.js b/jscomp/test/test_char.js index 418595cda4..a7c8376d13 100644 --- a/jscomp/test/test_char.js +++ b/jscomp/test/test_char.js @@ -4,7 +4,7 @@ var Caml_builtin_exceptions = require("../runtime/caml_builtin_exceptions"); function f(x) { - return x + 1; + return x + 1 | 0; } function chr(n) { @@ -21,7 +21,7 @@ function chr(n) { function lowercase(c) { if (c >= /* "A" */65 && c <= /* "Z" */90 || c >= /* "\192" */192 && c <= /* "\214" */214 || c >= /* "\216" */216 && c <= /* "\222" */222) { - return c + 32; + return c + 32 | 0; } else { return c; diff --git a/jscomp/test/test_closure.js b/jscomp/test/test_closure.js index 886b6a5e90..6d765953d9 100644 --- a/jscomp/test/test_closure.js +++ b/jscomp/test/test_closure.js @@ -15,7 +15,7 @@ function f() { for(var i = 0; i<= 9; ++i){ arr[i] = (function(i){ return function () { - v[0] += i; + v[0] = v[0] + i | 0; return /* () */0; } }(i)); diff --git a/jscomp/test/test_demo.js b/jscomp/test/test_demo.js index eef42edd96..3a8832e76c 100644 --- a/jscomp/test/test_demo.js +++ b/jscomp/test/test_demo.js @@ -9,7 +9,7 @@ function fib(n) { return 1; } else { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } } @@ -39,26 +39,26 @@ function map(f, param) { function sum(n) { var v = 0; for(var i = 0; i<= n; ++i){ - v += i; + v = v + i | 0; } return v; } function f(x, y, z) { - return x + y + z; + return (x + y | 0) + z | 0; } function g(x, y) { - var u = x + y; + var u = x + y | 0; return function (z) { - return u + z; + return u + z | 0; }; } function g1(x, y) { - var u = x + y; + var u = x + y | 0; return function (xx, yy) { - return xx + yy + u; + return (xx + yy | 0) + u | 0; }; } diff --git a/jscomp/test/test_eq.js b/jscomp/test/test_eq.js index f6ba2eebc9..31fad8ec71 100644 --- a/jscomp/test/test_eq.js +++ b/jscomp/test/test_eq.js @@ -3,7 +3,7 @@ function f(x, y) { - return x + y; + return x + y | 0; } exports.f = f; diff --git a/jscomp/test/test_export2.js b/jscomp/test/test_export2.js index 92d95b7a63..01a75e3d6e 100644 --- a/jscomp/test/test_export2.js +++ b/jscomp/test/test_export2.js @@ -1,9 +1,10 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; +var Caml_primitive = require("../runtime/caml_primitive"); function f(x, y) { - return x * y; + return Caml_primitive.imul(x, y); } exports.f = f; diff --git a/jscomp/test/test_fib.js b/jscomp/test/test_fib.js index 166107a6c8..7986dc0174 100644 --- a/jscomp/test/test_fib.js +++ b/jscomp/test/test_fib.js @@ -8,7 +8,7 @@ function fib(n) { return 1; } else { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } } @@ -17,14 +17,14 @@ function fib2(n) { return 1; } else { - return fib2(n - 1) + fib2(n - 2); + return fib2(n - 1) + fib2(n - 2) | 0; } } var v = 0; for(var i = 0; i<= 10; ++i){ - v += i; + v = v + i | 0; } var sum = v; @@ -32,7 +32,7 @@ var sum = v; var v$1 = 0; for(var i$1 = 10; i$1>= 0; --i$1){ - v$1 += i$1; + v$1 = v$1 + i$1 | 0; } var sumdown = v$1; @@ -48,7 +48,7 @@ function cons(x, y) { function length(x) { if (x) { - return 1 + length(x[1]); + return 1 + length(x[1]) | 0; } else { return 0; @@ -73,8 +73,8 @@ function f(x) { var v = x; var sum = 0; while(v > 0) { - sum += v; - -- v; + sum = sum + v | 0; + v = v - 1 | 0; }; return sum; } @@ -89,7 +89,7 @@ function fib3(n) { var a = _a; if (n$1 > 0) { _n = n$1 - 1; - _b = a + b; + _b = a + b | 0; _a = b; continue ; diff --git a/jscomp/test/test_for_loop.js b/jscomp/test/test_for_loop.js index 1498707450..e3c1285623 100644 --- a/jscomp/test/test_for_loop.js +++ b/jscomp/test/test_for_loop.js @@ -1,8 +1,9 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; -var $$Array = require("../stdlib/array"); -var Caml_curry = require("../runtime/caml_curry"); +var Caml_primitive = require("../runtime/caml_primitive"); +var $$Array = require("../stdlib/array"); +var Caml_curry = require("../runtime/caml_curry"); function for_(x) { for(var i = 0 ,i_finish = (console.log("hi"), x.length); i<= i_finish; ++i){ @@ -24,10 +25,10 @@ function for_3(x) { return /* () */0; }, x); for(var i = 0 ,i_finish = x.length; i<= i_finish; ++i){ - var j = i * 2; + var j = (i << 1); arr[i] = (function(j){ return function () { - v[0] += j; + v[0] = v[0] + j | 0; return /* () */0; } }(j)); @@ -44,11 +45,11 @@ function for_4(x) { return /* () */0; }, x); for(var i = 0 ,i_finish = x.length; i<= i_finish; ++i){ - var j = i * 2; - var k = 2 * j; + var j = (i << 1); + var k = (j << 1); arr[i] = (function(k){ return function () { - v[0] += k; + v[0] = v[0] + k | 0; return /* () */0; } }(k)); @@ -65,10 +66,10 @@ function for_5(x, u) { return /* () */0; }, x); for(var i = 0 ,i_finish = x.length; i<= i_finish; ++i){ - var k = 2 * u * u; + var k = Caml_primitive.imul((u << 1), u); arr[i] = (function(k){ return function () { - v[0] += k; + v[0] = v[0] + k | 0; return /* () */0; } }(k)); @@ -86,18 +87,18 @@ function for_6(x, u) { }, x); var v4 = [0]; var v5 = [0]; - ++ v4[0]; + v4[0] = v4[0] + 1 | 0; for(var j = 0; j<= 1; ++j){ - ++ v5[0]; + v5[0] = v5[0] + 1 | 0; var v2 = [0]; (function(v2){ for(var i = 0 ,i_finish = x.length; i<= i_finish; ++i){ - var k = 2 * u * u; - var h = 2 * v5[0]; - ++ v2[0]; + var k = Caml_primitive.imul((u << 1), u); + var h = (v5[0] << 1); + v2[0] = v2[0] + 1 | 0; arr[i] = (function(k,h){ return function () { - v[0] = v[0] + k + v2[0] + u + v4[0] + v5[0] + h; + v[0] = (((((v[0] + k | 0) + v2[0] | 0) + u | 0) + v4[0] | 0) + v5[0] | 0) + h | 0; return /* () */0; } }(k,h)); diff --git a/jscomp/test/test_for_map.js b/jscomp/test/test_for_map.js index 5ba1591a57..171c755401 100644 --- a/jscomp/test/test_for_map.js +++ b/jscomp/test/test_for_map.js @@ -22,7 +22,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -43,7 +43,7 @@ function singleton(x, d) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -69,7 +69,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -101,7 +101,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -440,10 +440,10 @@ function join(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], l[2], join(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -713,7 +713,7 @@ function equal(cmp, m1, m2) { function cardinal(param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; diff --git a/jscomp/test/test_google_closure.js b/jscomp/test/test_google_closure.js index dc227d879e..3c725b4425 100644 --- a/jscomp/test/test_google_closure.js +++ b/jscomp/test/test_google_closure.js @@ -4,12 +4,12 @@ var $$Array = require("../stdlib/array"); function f(a, b, _) { - return a + b; + return a + b | 0; } function f2(a) { return function () { - return a + 1; + return a + 1 | 0; }; } @@ -18,7 +18,7 @@ var arr = $$Array.init(2, function () { }); for(var i = 0; i<= 2; ++i){ - arr[i] = i + 1; + arr[i] = i + 1 | 0; } var match_000 = "" + 3; diff --git a/jscomp/test/test_incomplete.js b/jscomp/test/test_incomplete.js index 089b201ce7..4925092339 100644 --- a/jscomp/test/test_incomplete.js +++ b/jscomp/test/test_incomplete.js @@ -32,10 +32,10 @@ function f3(x) { switch (x.tag | 0) { case 0 : case 2 : - return x[0] + 1; + return x[0] + 1 | 0; case 1 : case 3 : - return x[0] + 2; + return x[0] + 2 | 0; } } diff --git a/jscomp/test/test_incr_ref.js b/jscomp/test/test_incr_ref.js index 2d22f5ff4b..349978bf77 100644 --- a/jscomp/test/test_incr_ref.js +++ b/jscomp/test/test_incr_ref.js @@ -4,7 +4,7 @@ var u = 0; -++ u; +u = u + 1 | 0; var v = /* () */0; diff --git a/jscomp/test/test_int_map_find.js b/jscomp/test/test_int_map_find.js index ecdd775c9c..8eaea57496 100644 --- a/jscomp/test/test_int_map_find.js +++ b/jscomp/test/test_int_map_find.js @@ -22,7 +22,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -31,7 +31,7 @@ function create(l, x, d, r) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -57,7 +57,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -89,7 +89,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; diff --git a/jscomp/test/test_internalOO.js b/jscomp/test/test_internalOO.js index 77ef938219..adb6ded595 100644 --- a/jscomp/test/test_internalOO.js +++ b/jscomp/test/test_internalOO.js @@ -6,6 +6,7 @@ var Caml_obj = require("../runtime/caml_obj"); var Obj = require("../stdlib/obj"); var Caml_oo = require("../runtime/caml_oo"); var Sys = require("../stdlib/sys"); +var Caml_primitive = require("../runtime/caml_primitive"); var Caml_array = require("../runtime/caml_array"); var $$Array = require("../stdlib/array"); var Caml_curry = require("../runtime/caml_curry"); @@ -31,7 +32,7 @@ var dummy_item = /* () */0; function public_method_label(s) { var accu = 0; for(var i = 0 ,i_finish = s.length - 1; i<= i_finish; ++i){ - accu = 223 * accu + s.charCodeAt(i); + accu = Caml_primitive.imul(223, accu) + s.charCodeAt(i) | 0; } accu = accu & (1 << 31) - 1; if (accu > 1073741823) { @@ -59,7 +60,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -80,7 +81,7 @@ function singleton(x, d) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -106,7 +107,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -138,7 +139,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -477,10 +478,10 @@ function join(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], l[2], join(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -748,7 +749,7 @@ function equal(cmp, m1, m2) { function cardinal(param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; @@ -825,7 +826,7 @@ function create$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -846,7 +847,7 @@ function singleton$1(x, d) { function bal$1(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -872,7 +873,7 @@ function bal$1(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -904,7 +905,7 @@ function bal$1(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -1243,10 +1244,10 @@ function join$1(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal$1(l[0], l[1], l[2], join$1(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal$1(join$1(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -1514,7 +1515,7 @@ function equal$1(cmp, m1, m2) { function cardinal$1(param) { if (param) { - return cardinal$1(param[0]) + 1 + cardinal$1(param[3]); + return (cardinal$1(param[0]) + 1 | 0) + cardinal$1(param[3]) | 0; } else { return 0; @@ -1591,7 +1592,7 @@ function create$2(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -1612,7 +1613,7 @@ function singleton$2(x, d) { function bal$2(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -1638,7 +1639,7 @@ function bal$2(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -1670,7 +1671,7 @@ function bal$2(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -2009,10 +2010,10 @@ function join$2(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal$2(l[0], l[1], l[2], join$2(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal$2(join$2(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -2282,7 +2283,7 @@ function equal$2(cmp, m1, m2) { function cardinal$2(param) { if (param) { - return cardinal$2(param[0]) + 1 + cardinal$2(param[3]); + return (cardinal$2(param[0]) + 1 | 0) + cardinal$2(param[3]) | 0; } else { return 0; @@ -2362,18 +2363,18 @@ function fit_size(n) { return n; } else { - return fit_size((n + 1) / 2 | 0) * 2; + return (fit_size((n + 1 | 0) / 2 | 0) << 1); } } function new_table(pub_labels) { - ++ table_count[0]; + table_count[0] = table_count[0] + 1 | 0; var len = pub_labels.length; - var methods = Caml_array.caml_make_vect(len * 2 + 2, dummy_met); + var methods = Caml_array.caml_make_vect((len << 1) + 2 | 0, dummy_met); methods[0] = len; - methods[1] = (fit_size(len) * Sys.word_size / 8 | 0) - 1; + methods[1] = (Caml_primitive.imul(fit_size(len), Sys.word_size) / 8 | 0) - 1; for(var i = 0 ,i_finish = len - 1; i<= i_finish; ++i){ - methods[i * 2 + 3] = pub_labels[i]; + methods[(i << 1) + 3 | 0] = pub_labels[i]; } return /* record */[ 2, @@ -2401,7 +2402,7 @@ function resize(array, new_size) { } function put(array, label, element) { - resize(array, label + 1); + resize(array, label + 1 | 0); array[/* methods */1][label] = element; return /* () */0; } @@ -2412,7 +2413,7 @@ var inst_var_count = [0]; function new_method(table) { var index = table[/* methods */1].length; - resize(table, index + 1); + resize(table, index + 1 | 0); return index; } @@ -2440,7 +2441,7 @@ function get_method_labels(table, names) { } function set_method(table, label, element) { - ++ method_count[0]; + method_count[0] = method_count[0] + 1 | 0; if (find$2(label, table[/* methods_by_label */3])) { return put(table, label, element); } @@ -2573,7 +2574,7 @@ function widen(table) { function new_slot(table) { var index = table[/* size */0]; - table[/* size */0] = index + 1; + table[/* size */0] = index + 1 | 0; return index; } @@ -2608,12 +2609,12 @@ function new_methods_variables(table, meths, vals) { var meths$1 = to_array(meths); var nmeths = meths$1.length; var nvals = vals.length; - var res = Caml_array.caml_make_vect(nmeths + nvals, 0); + var res = Caml_array.caml_make_vect(nmeths + nvals | 0, 0); for(var i = 0 ,i_finish = nmeths - 1; i<= i_finish; ++i){ res[i] = get_method_label(table, meths$1[i]); } for(var i$1 = 0 ,i_finish$1 = nvals - 1; i$1<= i_finish$1; ++i$1){ - res[i$1 + nmeths] = new_variable(table, vals[i$1]); + res[i$1 + nmeths | 0] = new_variable(table, vals[i$1]); } return res; } @@ -2658,7 +2659,7 @@ function create_table(public_methods) { var tags = $$Array.map(public_method_label, public_methods); var table = new_table(tags); $$Array.iteri(function (i, met) { - var lab = i * 2 + 2; + var lab = (i << 1) + 2 | 0; table[/* methods_by_name */2] = add$1(met, lab, table[/* methods_by_name */2]); table[/* methods_by_label */3] = add$2(lab, /* true */1, table[/* methods_by_label */3]); return /* () */0; @@ -2671,9 +2672,9 @@ function create_table(public_methods) { } function init_class(table) { - inst_var_count[0] = inst_var_count[0] + table[/* size */0] - 1; + inst_var_count[0] = (inst_var_count[0] + table[/* size */0] | 0) - 1; table[/* initializers */7] = List.rev(table[/* initializers */7]); - return resize(table, 3 + (table[/* methods */1][1] * 16 / Sys.word_size | 0)); + return resize(table, 3 + ((table[/* methods */1][1] << 4) / Sys.word_size | 0) | 0); } function inherits(cla, vals, virt_meths, concr_meths, param, top) { @@ -3013,14 +3014,14 @@ function send_meth(m, n, _) { function new_cache(table) { var n = new_method(table); - var n$1 = n % 2 === 0 || n > 2 + (table[/* methods */1][1] * 16 / Sys.word_size | 0) ? n : new_method(table); + var n$1 = n % 2 === 0 || n > (2 + ((table[/* methods */1][1] << 4) / Sys.word_size | 0) | 0) ? n : new_method(table); table[/* methods */1][n$1] = 0; return n$1; } function method_impl(table, i, arr) { var next = function () { - ++ i[0]; + i[0] = i[0] + 1 | 0; return arr[i[0]]; }; var clo = next(/* () */0); @@ -3157,7 +3158,7 @@ function set_methods(table, methods) { var label = methods[i[0]]; var clo = method_impl(table, i, methods); set_method(table, label, clo); - ++ i[0]; + i[0] = i[0] + 1 | 0; }; return /* () */0; } diff --git a/jscomp/test/test_list.js b/jscomp/test/test_list.js index 9e93b09910..2350efc5af 100644 --- a/jscomp/test/test_list.js +++ b/jscomp/test/test_list.js @@ -13,7 +13,7 @@ function length_aux(_len, _param) { var len = _len; if (param) { _param = param[1]; - _len = len + 1; + _len = len + 1 | 0; continue ; } @@ -135,7 +135,7 @@ function mapi(i, f, param) { var r = Caml_curry.app2(f, i, param[0]); return /* :: */[ r, - mapi(i + 1, f, param[1]) + mapi(i + 1 | 0, f, param[1]) ]; } else { @@ -193,7 +193,7 @@ function iteri(f, l) { if (param) { Caml_curry.app2(f$1, i, param[0]); _param = param[1]; - _i = i + 1; + _i = i + 1 | 0; continue ; } diff --git a/jscomp/test/test_nested_print.js b/jscomp/test/test_nested_print.js index f7ec2a130b..d9d0d4692e 100644 --- a/jscomp/test/test_nested_print.js +++ b/jscomp/test/test_nested_print.js @@ -4,12 +4,12 @@ var Caml_curry = require("../runtime/caml_curry"); function u(_, x) { - return x + x; + return x + x | 0; } function f(g, x) { var u = Caml_curry.app1(g, x); - return u + u; + return u + u | 0; } exports.u = u; diff --git a/jscomp/test/test_order_tailcall.js b/jscomp/test/test_order_tailcall.js index 366dd12318..8dc302ba2d 100644 --- a/jscomp/test/test_order_tailcall.js +++ b/jscomp/test/test_order_tailcall.js @@ -25,7 +25,7 @@ function f1(_x, _y, _z) { function f2(_, _y) { while(true) { var y = _y; - _y = y + 10; + _y = y + 10 | 0; continue ; }; @@ -35,7 +35,7 @@ function f3(_x, _y) { while(true) { var y = _y; var x = _x; - _y = x + 10; + _y = x + 10 | 0; _x = y; continue ; @@ -46,8 +46,8 @@ function f4(_x, _y) { while(true) { var y = _y; var x = _x; - _y = y + x; - _x = x + 10; + _y = y + x | 0; + _x = x + 10 | 0; continue ; }; @@ -56,8 +56,8 @@ function f4(_x, _y) { function f5(_x, _y, z) { while(true) { var y = _y; - _y = z + 20; - _x = y + 10; + _y = z + 20 | 0; + _x = y + 10 | 0; continue ; }; @@ -116,7 +116,7 @@ function f8(_x, _y) { var y = _y; var x = _x; if (x > 10) { - _y = y + 1; + _y = y + 1 | 0; continue ; } @@ -131,7 +131,7 @@ function f8(_x, _y) { } else { - return f8(x, y + 1) + f8(x - 1, y); + return f8(x, y + 1 | 0) + f8(x - 1, y) | 0; } }; } diff --git a/jscomp/test/test_per.js b/jscomp/test/test_per.js index 2c6f49387b..2b23055fc9 100644 --- a/jscomp/test/test_per.js +++ b/jscomp/test/test_per.js @@ -64,12 +64,12 @@ function lnot(x) { var max_int = 2147483647; -var min_int = max_int + 1; +var min_int = max_int + 1 | 0; function $caret(s1, s2) { var l1 = s1.length; var l2 = s2.length; - var s = Caml_string.caml_create_string(l1 + l2); + var s = Caml_string.caml_create_string(l1 + l2 | 0); Caml_string.caml_blit_string(s1, 0, s, 0, l1); Caml_string.caml_blit_string(s2, 0, s, l1, l2); return s; @@ -129,7 +129,7 @@ function valid_float_lexem(s) { return s; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -138,7 +138,7 @@ function valid_float_lexem(s) { return s; } else { - _i = i + 1; + _i = i + 1 | 0; continue ; } @@ -328,7 +328,7 @@ function unsafe_really_input(ic, s, _ofs, _len) { var r = Caml_primitive.caml_ml_input(ic, s, ofs, len); if (r) { _len = len - r; - _ofs = ofs + r; + _ofs = ofs + r | 0; continue ; } @@ -388,7 +388,7 @@ function input_line(chan) { Caml_primitive.caml_ml_input(chan, res, 0, n - 1); Caml_io.caml_ml_input_char(chan); if (accu) { - var len$1 = len + n - 1; + var len$1 = (len + n | 0) - 1; return build_result(Caml_string.caml_create_string(len$1), len$1, /* :: */[ res, accu diff --git a/jscomp/test/test_primitive.js b/jscomp/test/test_primitive.js index b9b3a4f148..6574239a5e 100644 --- a/jscomp/test/test_primitive.js +++ b/jscomp/test/test_primitive.js @@ -94,7 +94,7 @@ function fib(n) { else { var fib1 = fib(n - 1); var fib2 = fib(n - 2); - return fib1 + fib2 + 3; + return (fib1 + fib2 | 0) + 3 | 0; } } diff --git a/jscomp/test/test_ramification.js b/jscomp/test/test_ramification.js index 31851f01fc..d4204aae4f 100644 --- a/jscomp/test/test_ramification.js +++ b/jscomp/test/test_ramification.js @@ -22,13 +22,13 @@ function ff(x) { default: a = 8; } - return a + 3; + return a + 3 | 0; } function f(x) { var y; y = x.tag ? 4 : 3; - return y + 32; + return y + 32 | 0; } function f2(x) { @@ -37,13 +37,13 @@ function f2(x) { v = 1; if (x.tag) { var z = 33; - y = z + 4; + y = z + 4 | 0; } else { var z$1 = 33; - y = z$1 + 3; + y = z$1 + 3 | 0; } - return y + 32; + return y + 32 | 0; } function f3(x) { @@ -56,7 +56,7 @@ function f3(x) { else { y = 3; } - return y + 32; + return y + 32 | 0; } exports.ff = ff; diff --git a/jscomp/test/test_set.js b/jscomp/test/test_set.js index ca1ce86911..187fa69cda 100644 --- a/jscomp/test/test_set.js +++ b/jscomp/test/test_set.js @@ -21,7 +21,7 @@ function Make(Ord) { 0: l, 1: v, 2: r, - 3: hl >= hr ? hl + 1 : hr + 1, + 3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 4, tag: 0 }; @@ -29,7 +29,7 @@ function Make(Ord) { var bal = function (l, v, r) { var hl = l ? l[3] : 0; var hr = r ? r[3] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[2]; var lv = l[1]; @@ -54,7 +54,7 @@ function Make(Ord) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[2]; var rv = r[1]; @@ -84,7 +84,7 @@ function Make(Ord) { 0: l, 1: v, 2: r, - 3: hl >= hr ? hl + 1 : hr + 1, + 3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 4, tag: 0 }; @@ -150,10 +150,10 @@ function Make(Ord) { if (r) { var rh = r[3]; var lh = l[3]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], join(l[2], v, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, r[0]), r[1], r[2]); } else { @@ -661,7 +661,7 @@ function Make(Ord) { }; var cardinal = function (param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[2]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[2]) | 0; } else { return 0; diff --git a/jscomp/test/test_side_effect_functor.js b/jscomp/test/test_side_effect_functor.js index 0b21da3579..c2050b87de 100644 --- a/jscomp/test/test_side_effect_functor.js +++ b/jscomp/test/test_side_effect_functor.js @@ -4,7 +4,7 @@ var v = 0; -++ v; +v = v + 1 | 0; console.log("" + v); diff --git a/jscomp/test/test_simple_obj.js b/jscomp/test/test_simple_obj.js index 5809b9208d..3a38096513 100644 --- a/jscomp/test/test_simple_obj.js +++ b/jscomp/test/test_simple_obj.js @@ -32,7 +32,7 @@ var hello = ids[3]; CamlinternalOO.set_methods($$class, /* array */[ hi, function (_, v, z) { - return v + z; + return v + z | 0; }, id1, function () { @@ -69,7 +69,7 @@ var $$class$2 = CamlinternalOO.create_table(shared); var add = CamlinternalOO.get_method_label($$class$2, "add"); CamlinternalOO.set_method($$class$2, add, function (_, x, y) { - return x + y; + return x + y | 0; }); CamlinternalOO.init_class($$class$2); @@ -81,7 +81,7 @@ var $$class$3 = CamlinternalOO.create_table(shared); var add$1 = CamlinternalOO.get_method_label($$class$3, "add"); CamlinternalOO.set_method($$class$3, add$1, function (_, x, y) { - return x + y; + return x + y | 0; }); CamlinternalOO.init_class($$class$3); diff --git a/jscomp/test/test_simple_ref.js b/jscomp/test/test_simple_ref.js index b1cf383aaa..0a2dd2abb6 100644 --- a/jscomp/test/test_simple_ref.js +++ b/jscomp/test/test_simple_ref.js @@ -6,7 +6,7 @@ var Caml_curry = require("../runtime/caml_curry"); var v = [0]; function gen() { - ++ v[0]; + v[0] = v[0] + 1 | 0; return v[0]; } diff --git a/jscomp/test/test_simple_tailcall.js b/jscomp/test/test_simple_tailcall.js index 9fbce42541..3583466aee 100644 --- a/jscomp/test/test_simple_tailcall.js +++ b/jscomp/test/test_simple_tailcall.js @@ -11,7 +11,7 @@ function tailcall() { function non_length(x) { if (x) { - return 1 + non_length(x[1]); + return 1 + non_length(x[1]) | 0; } else { return 0; @@ -25,11 +25,11 @@ function length(_acc, _x) { if (x) { var tl = x[1]; if (tl) { - return 1 + length(acc + 1, tl[1]); + return 1 + length(acc + 1 | 0, tl[1]) | 0; } else { _x = tl; - _acc = acc + 1; + _acc = acc + 1 | 0; continue ; } diff --git a/jscomp/test/test_string_map.js b/jscomp/test/test_string_map.js index 0d8228e767..97c2dc23a4 100644 --- a/jscomp/test/test_string_map.js +++ b/jscomp/test/test_string_map.js @@ -22,7 +22,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -31,7 +31,7 @@ function create(l, x, d, r) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -57,7 +57,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -89,7 +89,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; diff --git a/jscomp/test/test_tuple.js b/jscomp/test/test_tuple.js index ca0c9f0f7f..258f38cc22 100644 --- a/jscomp/test/test_tuple.js +++ b/jscomp/test/test_tuple.js @@ -1,6 +1,7 @@ // Generated CODE, PLEASE EDIT WITH CARE 'use strict'; +var Caml_primitive = require("../runtime/caml_primitive"); var r = 0; @@ -8,12 +9,12 @@ for(var k = 1; k<= 10; ++k){ for(var i = 1; i<= 10; ++i){ var match = i % 2 ? /* tuple */[ 2, - i * 3 + Caml_primitive.imul(i, 3) ] : /* tuple */[ 1, - i * 2 + (i << 1) ]; - r = r * match[0] + match[1]; + r = Caml_primitive.imul(r, match[0]) + match[1] | 0; } } diff --git a/jscomp/test/test_u.js b/jscomp/test/test_u.js index f620d6b8d4..e0f1a6f459 100644 --- a/jscomp/test/test_u.js +++ b/jscomp/test/test_u.js @@ -6,8 +6,8 @@ function f(x) { var v = x; var sum = 0; while(v > 0) { - sum += v; - -- v; + sum = sum + v | 0; + v = v - 1 | 0; }; return sum; } diff --git a/jscomp/test/test_while_closure.js b/jscomp/test/test_while_closure.js index 482ad1a2ef..a3d09da909 100644 --- a/jscomp/test/test_while_closure.js +++ b/jscomp/test/test_while_closure.js @@ -18,11 +18,11 @@ function f() { var j = n; arr[j] = (function(j){ return function () { - v[0] += j; + v[0] = v[0] + j | 0; return /* () */0; } }(j)); - ++ n; + n = n + 1 | 0; }; return /* () */0; } diff --git a/jscomp/test/test_while_side_effect.js b/jscomp/test/test_while_side_effect.js index accc08ca90..a019b19cc9 100644 --- a/jscomp/test/test_while_side_effect.js +++ b/jscomp/test/test_while_side_effect.js @@ -4,7 +4,7 @@ var v = [0]; -while(console.log("" + v[0]), ++ v[0], +(v[0] < 10)) { +while(console.log("" + v[0]), v[0] = v[0] + 1 | 0, +(v[0] < 10)) { }; @@ -13,7 +13,7 @@ function fib(n) { return 1; } else { - return fib(n - 1) + fib(n - 2); + return fib(n - 1) + fib(n - 2) | 0; } } @@ -22,9 +22,9 @@ var x = [3]; while(function () { var y = 3; console.log("" + x[0]); - ++ y; - ++ x[0]; - return +(fib(x[0]) + fib(x[0]) < 20); + y = y + 1 | 0; + x[0] = x[0] + 1 | 0; + return +((fib(x[0]) + fib(x[0]) | 0) < 20); }()) { console.log("" + 3); }; diff --git a/jscomp/test/test_zero_nullable.js b/jscomp/test/test_zero_nullable.js index a6a2b9c435..49ae58e7d4 100644 --- a/jscomp/test/test_zero_nullable.js +++ b/jscomp/test/test_zero_nullable.js @@ -8,7 +8,7 @@ function f1(x) { return 3; } else { - return x + 1; + return x + 1 | 0; } } @@ -17,7 +17,7 @@ function f2(x) { return 3; } else { - return x + 1; + return x + 1 | 0; } } @@ -27,18 +27,18 @@ function f5(h, _) { return 3; } else { - return u + 1; + return u + 1 | 0; } } function f4(h, x) { var u = Caml_curry.app1(h, 32); - var v = 32 + x; + var v = 32 + x | 0; if (u === null) { - return 1 + v; + return 1 + v | 0; } else { - return u + 1; + return u + 1 | 0; } } @@ -84,7 +84,7 @@ function f1$1(x) { return 3; } else { - return x + 1; + return x + 1 | 0; } } @@ -93,7 +93,7 @@ function f2$1(x) { return 3; } else { - return x + 1; + return x + 1 | 0; } } @@ -103,18 +103,18 @@ function f5$1(h, _) { return 3; } else { - return u + 1; + return u + 1 | 0; } } function f4$1(h, x) { var u = Caml_curry.app1(h, 32); - var v = 32 + x; + var v = 32 + x | 0; if (u === undefined) { - return 1 + v; + return 1 + v | 0; } else { - return u + 1; + return u + 1 | 0; } } diff --git a/jscomp/test/ticker.js b/jscomp/test/ticker.js index 807b98d64c..bfbaae862a 100644 --- a/jscomp/test/ticker.js +++ b/jscomp/test/ticker.js @@ -37,7 +37,7 @@ function split(delim, s) { } } if (exit === 1) { - var l_000 = $$String.sub(s, i$prime + 1, i - i$prime - 1); + var l_000 = $$String.sub(s, i$prime + 1 | 0, i - i$prime - 1); var l$1 = /* :: */[ l_000, l @@ -156,7 +156,7 @@ function create(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -177,7 +177,7 @@ function singleton(x, d) { function bal(l, x, d, r) { var hl = l ? l[4] : 0; var hr = r ? r[4] : 0; - if (hl > hr + 2) { + if (hl > (hr + 2 | 0)) { if (l) { var lr = l[3]; var ld = l[2]; @@ -203,7 +203,7 @@ function bal(l, x, d, r) { ]; } } - else if (hr > hl + 2) { + else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[3]; var rd = r[2]; @@ -235,7 +235,7 @@ function bal(l, x, d, r) { 1: x, 2: d, 3: r, - 4: hl >= hr ? hl + 1 : hr + 1, + 4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, length: 5, tag: 0 }; @@ -574,10 +574,10 @@ function join(l, v, d, r) { if (r) { var rh = r[4]; var lh = l[4]; - if (lh > rh + 2) { + if (lh > (rh + 2 | 0)) { return bal(l[0], l[1], l[2], join(l[3], v, d, r)); } - else if (rh > lh + 2) { + else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[0]), r[1], r[2], r[3]); } else { @@ -845,7 +845,7 @@ function equal(cmp, m1, m2) { function cardinal(param) { if (param) { - return cardinal(param[0]) + 1 + cardinal(param[3]); + return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; } else { return 0; @@ -920,7 +920,7 @@ function compute_update_sequences(all_tickers) { var match$1 = match[0]; var counter$1 = loop(counter, match$1[/* lhs */2]); var counter$2 = loop(counter$1, match$1[/* rhs */1]); - var counter$3 = counter$2 + 1; + var counter$3 = counter$2 + 1 | 0; ticker[/* rank */1] = /* Ranked */{ 0: counter$3, length: 1, @@ -929,7 +929,7 @@ function compute_update_sequences(all_tickers) { return counter$3; } else { - var counter$4 = counter + 1; + var counter$4 = counter + 1 | 0; ticker[/* rank */1] = /* Ranked */{ 0: counter$4, length: 1,