Skip to content

Commit 65dd16a

Browse files
committed
remove caml_obj_extern
1 parent 9e6876f commit 65dd16a

12 files changed

+37
-80
lines changed

jscomp/runtime/bs_stdlib_mini.mli

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ module Obj : sig
6262
external set_tag : t -> int -> unit = "tag" [@@bs.set]
6363
external repr : 'a -> t = "%identity"
6464
external magic : 'a -> 'b = "%identity"
65+
external size : t -> int = "#obj_length"
6566
end
6667

6768

jscomp/runtime/caml_hash.ml

+3-5
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,8 @@ let caml_hash (count : int) _limit (seed : nativeint)
129129
else if Js.typeof obj = "function" then
130130
()
131131
else
132-
let size = Caml_obj_extern.size_of_t obj in
133-
match Js.undefinedToOption size with
134-
| None -> ()
135-
| Some size ->
132+
let size = Obj.size obj in
133+
if size <> 0 then
136134
let obj_tag = Obj.tag obj in
137135
let tag = (size lsl 10) lor obj_tag in
138136
if tag = 248 (* Obj.object_tag*) then
@@ -143,7 +141,7 @@ let caml_hash (count : int) _limit (seed : nativeint)
143141
let block =
144142
let v = size - 1 in if v < num.contents then v else num.contents in
145143
for i = 0 to block do
146-
push_back queue (Obj.field obj i )
144+
push_back queue (Obj.field obj i )
147145
done
148146
end
149147
done;

jscomp/runtime/caml_obj.ml

+4-4
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,8 @@ let rec caml_compare (a : Caml_obj_extern.t) (b : Caml_obj_extern.t) : int =
215215
else if tag_a <> tag_b then
216216
if tag_a < tag_b then (-1) else 1
217217
else
218-
let len_a = Caml_obj_extern.length a in
219-
let len_b = Caml_obj_extern.length b in
218+
let len_a = Obj.size a in
219+
let len_b = Obj.size b in
220220
if len_a = len_b then
221221
if O.isArray(a)
222222
then aux_same_length a b 0 len_a
@@ -312,8 +312,8 @@ let rec caml_equal (a : Caml_obj_extern.t) (b : Caml_obj_extern.t) : bool =
312312
else if tag_a = 256 then
313313
(Obj.magic (Obj.field a 1) : int) = Obj.magic (Obj.field b 1)
314314
else
315-
let len_a = Caml_obj_extern.length a in
316-
let len_b = Caml_obj_extern.length b in
315+
let len_a = Obj.size a in
316+
let len_b = Obj.size b in
317317
if len_a = len_b then
318318
if O.isArray(a)
319319
then aux_equal_length a b 0 len_a

jscomp/runtime/caml_obj_extern.ml

-40
This file was deleted.

jscomp/runtime/release.ninja

+18-19
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,22 @@ build runtime/bs_stdlib_mini.cmi : cc runtime/bs_stdlib_mini.mli
1313
bsc_flags = -nostdlib -nopervasives
1414
build runtime/js.cmj runtime/js.cmi : cc runtime/js.ml
1515
bsc_flags = $bsc_no_open_flags
16-
build runtime/block.cmj : cc_cmi runtime/block.ml | runtime/block.cmi runtime/caml_obj_extern.cmj
17-
build runtime/block.cmi : cc runtime/block.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/js.cmi runtime/js.cmj
16+
build runtime/block.cmj : cc_cmi runtime/block.ml | runtime/block.cmi
17+
build runtime/block.cmi : cc runtime/block.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
1818
build runtime/caml_array.cmj : cc_cmi runtime/caml_array.ml | runtime/caml_array.cmi runtime/caml_array_extern.cmj
1919
build runtime/caml_array.cmi : cc runtime/caml_array.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
2020
build runtime/caml_bytes.cmj : cc_cmi runtime/caml_bytes.ml | runtime/caml_bytes.cmi runtime/caml_bytes_extern.cmj runtime/caml_string_extern.cmj
2121
build runtime/caml_bytes.cmi : cc runtime/caml_bytes.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
22-
build runtime/caml_chrome_debugger.cmj : cc_cmi runtime/caml_chrome_debugger.ml | runtime/block.cmj runtime/caml_chrome_debugger.cmi runtime/caml_obj_extern.cmj
23-
build runtime/caml_chrome_debugger.cmi : cc runtime/caml_chrome_debugger.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/js.cmi runtime/js.cmj
22+
build runtime/caml_chrome_debugger.cmj : cc_cmi runtime/caml_chrome_debugger.ml | runtime/block.cmj runtime/caml_chrome_debugger.cmi
23+
build runtime/caml_chrome_debugger.cmi : cc runtime/caml_chrome_debugger.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
2424
build runtime/caml_float.cmj : cc_cmi runtime/caml_float.ml | runtime/caml_float.cmi runtime/caml_float_extern.cmj
2525
build runtime/caml_float.cmi : cc runtime/caml_float.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
2626
build runtime/caml_format.cmj : cc_cmi runtime/caml_format.ml | runtime/caml_char.cmj runtime/caml_float.cmj runtime/caml_float_extern.cmj runtime/caml_format.cmi runtime/caml_int64.cmj runtime/caml_int64_extern.cmj runtime/caml_nativeint_extern.cmj runtime/caml_string_extern.cmj
2727
build runtime/caml_format.cmi : cc runtime/caml_format.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
2828
build runtime/caml_gc.cmj : cc_cmi runtime/caml_gc.ml | runtime/caml_gc.cmi
2929
build runtime/caml_gc.cmi : cc runtime/caml_gc.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
30-
build runtime/caml_hash.cmj : cc_cmi runtime/caml_hash.ml | runtime/caml_hash.cmi runtime/caml_hash_primitive.cmj runtime/caml_nativeint_extern.cmj runtime/caml_obj_extern.cmj runtime/js.cmj
31-
build runtime/caml_hash.cmi : cc runtime/caml_hash.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/js.cmi runtime/js.cmj
30+
build runtime/caml_hash.cmj : cc_cmi runtime/caml_hash.ml | runtime/caml_hash.cmi runtime/caml_hash_primitive.cmj runtime/caml_nativeint_extern.cmj runtime/js.cmj
31+
build runtime/caml_hash.cmi : cc runtime/caml_hash.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
3232
build runtime/caml_hash_primitive.cmj : cc_cmi runtime/caml_hash_primitive.ml | runtime/caml_char.cmj runtime/caml_hash_primitive.cmi runtime/caml_nativeint_extern.cmj runtime/caml_string_extern.cmj
3333
build runtime/caml_hash_primitive.cmi : cc runtime/caml_hash_primitive.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
3434
build runtime/caml_int32.cmj : cc_cmi runtime/caml_int32.ml | runtime/caml_int32.cmi runtime/caml_nativeint_extern.cmj
@@ -41,20 +41,20 @@ build runtime/caml_lexer.cmj : cc_cmi runtime/caml_lexer.ml | runtime/caml_lexer
4141
build runtime/caml_lexer.cmi : cc runtime/caml_lexer.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
4242
build runtime/caml_md5.cmj : cc_cmi runtime/caml_md5.ml | runtime/caml_array_extern.cmj runtime/caml_char.cmj runtime/caml_int32_extern.cmj runtime/caml_md5.cmi runtime/caml_string_extern.cmj
4343
build runtime/caml_md5.cmi : cc runtime/caml_md5.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
44-
build runtime/caml_module.cmj : cc_cmi runtime/caml_module.ml | runtime/caml_array_extern.cmj runtime/caml_module.cmi runtime/caml_obj.cmj runtime/caml_obj_extern.cmj
45-
build runtime/caml_module.cmi : cc runtime/caml_module.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/js.cmi runtime/js.cmj
46-
build runtime/caml_obj.cmj : cc_cmi runtime/caml_obj.ml | runtime/caml_array_extern.cmj runtime/caml_obj.cmi runtime/caml_obj_extern.cmj runtime/caml_primitive.cmj runtime/js.cmj
47-
build runtime/caml_obj.cmi : cc runtime/caml_obj.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/js.cmi runtime/js.cmj
44+
build runtime/caml_module.cmj : cc_cmi runtime/caml_module.ml | runtime/caml_array_extern.cmj runtime/caml_module.cmi runtime/caml_obj.cmj
45+
build runtime/caml_module.cmi : cc runtime/caml_module.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
46+
build runtime/caml_obj.cmj : cc_cmi runtime/caml_obj.ml | runtime/caml_array_extern.cmj runtime/caml_obj.cmi runtime/caml_primitive.cmj runtime/js.cmj
47+
build runtime/caml_obj.cmi : cc runtime/caml_obj.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
4848
build runtime/caml_oo.cmj : cc_cmi runtime/caml_oo.ml | runtime/caml_array.cmj runtime/caml_array_extern.cmj runtime/caml_exceptions.cmj runtime/caml_oo.cmi
4949
build runtime/caml_oo.cmi : cc runtime/caml_oo.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
50-
build runtime/caml_option.cmj : cc_cmi runtime/caml_option.ml | runtime/caml_obj_extern.cmj runtime/caml_option.cmi runtime/caml_undefined_extern.cmj runtime/js.cmj
51-
build runtime/caml_option.cmi : cc runtime/caml_option.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/caml_undefined_extern.cmj runtime/js.cmi runtime/js.cmj
52-
build runtime/caml_parser.cmj : cc_cmi runtime/caml_parser.ml | runtime/caml_obj_extern.cmj runtime/caml_parser.cmi
53-
build runtime/caml_parser.cmi : cc runtime/caml_parser.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/js.cmi runtime/js.cmj
50+
build runtime/caml_option.cmj : cc_cmi runtime/caml_option.ml | runtime/caml_option.cmi runtime/caml_undefined_extern.cmj runtime/js.cmj
51+
build runtime/caml_option.cmi : cc runtime/caml_option.mli | runtime/bs_stdlib_mini.cmi runtime/caml_undefined_extern.cmj runtime/js.cmi runtime/js.cmj
52+
build runtime/caml_parser.cmj : cc_cmi runtime/caml_parser.ml | runtime/caml_parser.cmi
53+
build runtime/caml_parser.cmi : cc runtime/caml_parser.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
5454
build runtime/caml_primitive.cmj : cc_cmi runtime/caml_primitive.ml | runtime/caml_bytes_extern.cmj runtime/caml_primitive.cmi
5555
build runtime/caml_primitive.cmi : cc runtime/caml_primitive.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
56-
build runtime/caml_splice_call.cmj : cc_cmi runtime/caml_splice_call.ml | runtime/caml_obj_extern.cmj runtime/caml_splice_call.cmi
57-
build runtime/caml_splice_call.cmi : cc runtime/caml_splice_call.mli | runtime/bs_stdlib_mini.cmi runtime/caml_obj_extern.cmj runtime/js.cmi runtime/js.cmj
56+
build runtime/caml_splice_call.cmj : cc_cmi runtime/caml_splice_call.ml | runtime/caml_splice_call.cmi
57+
build runtime/caml_splice_call.cmi : cc runtime/caml_splice_call.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
5858
build runtime/caml_string.cmj : cc_cmi runtime/caml_string.ml | runtime/caml_string.cmi runtime/caml_string_extern.cmj
5959
build runtime/caml_string.cmi : cc runtime/caml_string.mli | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
6060
build runtime/caml_sys.cmj : cc_cmi runtime/caml_sys.ml | runtime/caml_array_extern.cmj runtime/caml_nativeint_extern.cmj runtime/caml_sys.cmi runtime/caml_undefined_extern.cmj runtime/js.cmj
@@ -67,11 +67,10 @@ build runtime/caml_external_polyfill.cmi runtime/caml_external_polyfill.cmj : cc
6767
build runtime/caml_float_extern.cmi runtime/caml_float_extern.cmj : cc runtime/caml_float_extern.ml | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
6868
build runtime/caml_int32_extern.cmi runtime/caml_int32_extern.cmj : cc runtime/caml_int32_extern.ml | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
6969
build runtime/caml_int64_extern.cmi runtime/caml_int64_extern.cmj : cc runtime/caml_int64_extern.ml | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
70-
build runtime/caml_js_exceptions.cmi runtime/caml_js_exceptions.cmj : cc runtime/caml_js_exceptions.ml | runtime/bs_stdlib_mini.cmi runtime/caml_exceptions.cmj runtime/caml_obj_extern.cmj runtime/caml_option.cmj runtime/js.cmi runtime/js.cmj
70+
build runtime/caml_js_exceptions.cmi runtime/caml_js_exceptions.cmj : cc runtime/caml_js_exceptions.ml | runtime/bs_stdlib_mini.cmi runtime/caml_exceptions.cmj runtime/caml_option.cmj runtime/js.cmi runtime/js.cmj
7171
build runtime/caml_nativeint_extern.cmi runtime/caml_nativeint_extern.cmj : cc runtime/caml_nativeint_extern.ml | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
72-
build runtime/caml_obj_extern.cmi runtime/caml_obj_extern.cmj : cc runtime/caml_obj_extern.ml | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
7372
build runtime/caml_oo_curry.cmi runtime/caml_oo_curry.cmj : cc runtime/caml_oo_curry.ml | runtime/bs_stdlib_mini.cmi runtime/caml_oo.cmj runtime/curry.cmj runtime/js.cmi runtime/js.cmj
7473
build runtime/caml_string_extern.cmi runtime/caml_string_extern.cmj : cc runtime/caml_string_extern.ml | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
7574
build runtime/caml_undefined_extern.cmi runtime/caml_undefined_extern.cmj : cc runtime/caml_undefined_extern.ml | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
7675
build runtime/curry.cmi runtime/curry.cmj : cc runtime/curry.ml | runtime/bs_stdlib_mini.cmi runtime/caml_array.cmj runtime/caml_array_extern.cmj runtime/js.cmi runtime/js.cmj
77-
build runtime : phony runtime/bs_stdlib_mini.cmi runtime/js.cmj runtime/js.cmi runtime/block.cmi runtime/block.cmj runtime/caml_array.cmi runtime/caml_array.cmj runtime/caml_bytes.cmi runtime/caml_bytes.cmj runtime/caml_chrome_debugger.cmi runtime/caml_chrome_debugger.cmj runtime/caml_float.cmi runtime/caml_float.cmj runtime/caml_format.cmi runtime/caml_format.cmj runtime/caml_gc.cmi runtime/caml_gc.cmj runtime/caml_hash.cmi runtime/caml_hash.cmj runtime/caml_hash_primitive.cmi runtime/caml_hash_primitive.cmj runtime/caml_int32.cmi runtime/caml_int32.cmj runtime/caml_int64.cmi runtime/caml_int64.cmj runtime/caml_io.cmi runtime/caml_io.cmj runtime/caml_lexer.cmi runtime/caml_lexer.cmj runtime/caml_md5.cmi runtime/caml_md5.cmj runtime/caml_module.cmi runtime/caml_module.cmj runtime/caml_obj.cmi runtime/caml_obj.cmj runtime/caml_oo.cmi runtime/caml_oo.cmj runtime/caml_option.cmi runtime/caml_option.cmj runtime/caml_parser.cmi runtime/caml_parser.cmj runtime/caml_primitive.cmi runtime/caml_primitive.cmj runtime/caml_splice_call.cmi runtime/caml_splice_call.cmj runtime/caml_string.cmi runtime/caml_string.cmj runtime/caml_sys.cmi runtime/caml_sys.cmj runtime/caml_array_extern.cmi runtime/caml_array_extern.cmj runtime/caml_bytes_extern.cmi runtime/caml_bytes_extern.cmj runtime/caml_char.cmi runtime/caml_char.cmj runtime/caml_exceptions.cmi runtime/caml_exceptions.cmj runtime/caml_external_polyfill.cmi runtime/caml_external_polyfill.cmj runtime/caml_float_extern.cmi runtime/caml_float_extern.cmj runtime/caml_int32_extern.cmi runtime/caml_int32_extern.cmj runtime/caml_int64_extern.cmi runtime/caml_int64_extern.cmj runtime/caml_js_exceptions.cmi runtime/caml_js_exceptions.cmj runtime/caml_nativeint_extern.cmi runtime/caml_nativeint_extern.cmj runtime/caml_obj_extern.cmi runtime/caml_obj_extern.cmj runtime/caml_oo_curry.cmi runtime/caml_oo_curry.cmj runtime/caml_string_extern.cmi runtime/caml_string_extern.cmj runtime/caml_undefined_extern.cmi runtime/caml_undefined_extern.cmj runtime/curry.cmi runtime/curry.cmj
76+
build runtime : phony runtime/bs_stdlib_mini.cmi runtime/js.cmj runtime/js.cmi runtime/block.cmi runtime/block.cmj runtime/caml_array.cmi runtime/caml_array.cmj runtime/caml_bytes.cmi runtime/caml_bytes.cmj runtime/caml_chrome_debugger.cmi runtime/caml_chrome_debugger.cmj runtime/caml_float.cmi runtime/caml_float.cmj runtime/caml_format.cmi runtime/caml_format.cmj runtime/caml_gc.cmi runtime/caml_gc.cmj runtime/caml_hash.cmi runtime/caml_hash.cmj runtime/caml_hash_primitive.cmi runtime/caml_hash_primitive.cmj runtime/caml_int32.cmi runtime/caml_int32.cmj runtime/caml_int64.cmi runtime/caml_int64.cmj runtime/caml_io.cmi runtime/caml_io.cmj runtime/caml_lexer.cmi runtime/caml_lexer.cmj runtime/caml_md5.cmi runtime/caml_md5.cmj runtime/caml_module.cmi runtime/caml_module.cmj runtime/caml_obj.cmi runtime/caml_obj.cmj runtime/caml_oo.cmi runtime/caml_oo.cmj runtime/caml_option.cmi runtime/caml_option.cmj runtime/caml_parser.cmi runtime/caml_parser.cmj runtime/caml_primitive.cmi runtime/caml_primitive.cmj runtime/caml_splice_call.cmi runtime/caml_splice_call.cmj runtime/caml_string.cmi runtime/caml_string.cmj runtime/caml_sys.cmi runtime/caml_sys.cmj runtime/caml_array_extern.cmi runtime/caml_array_extern.cmj runtime/caml_bytes_extern.cmi runtime/caml_bytes_extern.cmj runtime/caml_char.cmi runtime/caml_char.cmj runtime/caml_exceptions.cmi runtime/caml_exceptions.cmj runtime/caml_external_polyfill.cmi runtime/caml_external_polyfill.cmj runtime/caml_float_extern.cmi runtime/caml_float_extern.cmj runtime/caml_int32_extern.cmi runtime/caml_int32_extern.cmj runtime/caml_int64_extern.cmi runtime/caml_int64_extern.cmj runtime/caml_js_exceptions.cmi runtime/caml_js_exceptions.cmj runtime/caml_nativeint_extern.cmi runtime/caml_nativeint_extern.cmj runtime/caml_oo_curry.cmi runtime/caml_oo_curry.cmj runtime/caml_string_extern.cmi runtime/caml_string_extern.cmj runtime/caml_undefined_extern.cmi runtime/caml_undefined_extern.cmj runtime/curry.cmi runtime/curry.cmj

jscomp/stdlib-406/obj.ml

+1-3
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ external magic : 'a -> 'b = "%identity"
2323
external is_int : t -> bool = "%obj_is_int"
2424
let [@inline always] is_block a = not (is_int a)
2525
external tag : t -> int = "caml_obj_tag"
26-
(* external set_tag : t -> int -> unit = "caml_obj_set_tag" *)
27-
external size : t -> int = "%obj_size"
28-
26+
external size : t -> int = "#obj_length"
2927
external field : t -> int -> t = "%obj_field"
3028
external set_field : t -> int -> t -> unit = "%obj_set_field"
3129

jscomp/stdlib-406/obj.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ external magic : 'a -> 'b = "%identity"
2626
val [@inline always] is_block : t -> bool
2727

2828
external tag : t -> int = "caml_obj_tag"
29-
external size : t -> int = "%obj_size"
29+
external size : t -> int = "#obj_length"
3030

3131
(**
3232
Computes the total size (in words, including the headers) of all

jscomp/test/undef_regression_test.ml

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11

22

3+
external size_of_t : Obj.t -> 'a Js.undefined = "length" [@@bs.get]
34

45
let f obj =
56
if Js.typeof obj = "function" then
67
()
78
else
8-
let size = Caml_obj_extern.size_of_t obj in
9+
let size = size_of_t obj in
910
match Js.Undefined.toOption size with
1011
| None -> ()
11-
| Some s -> Js.log s (* TODO: This case should be peepwholed .. *)
12+
| Some s -> Js.log s (* TODO: This case should be peepwholed ..*)

lib/es6/caml_hash.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ function caml_hash(count, _limit, seed, obj) {
6363
hash = Caml_hash_primitive.caml_hash_mix_string(hash, obj$1);
6464
num = num - 1 | 0;
6565
} else if (typeof obj$1 !== "boolean" && typeof obj$1 !== "undefined" && typeof obj$1 !== "symbol" && typeof obj$1 !== "function") {
66-
var size = obj$1.length;
67-
if (size !== undefined) {
66+
var size = obj$1.length | 0;
67+
if (size !== 0) {
6868
var obj_tag = obj$1.tag | 0;
6969
var tag = (size << 10) | obj_tag;
7070
if (tag === 248) {

lib/es6/obj.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ function is_block(a) {
77
}
88

99
function length(x) {
10-
return x.length - 2 | 0;
10+
return (x.length | 0) - 2 | 0;
1111
}
1212

1313
function Ephemeron_create(prim) {

lib/js/caml_hash.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ function caml_hash(count, _limit, seed, obj) {
6363
hash = Caml_hash_primitive.caml_hash_mix_string(hash, obj$1);
6464
num = num - 1 | 0;
6565
} else if (typeof obj$1 !== "boolean" && typeof obj$1 !== "undefined" && typeof obj$1 !== "symbol" && typeof obj$1 !== "function") {
66-
var size = obj$1.length;
67-
if (size !== undefined) {
66+
var size = obj$1.length | 0;
67+
if (size !== 0) {
6868
var obj_tag = obj$1.tag | 0;
6969
var tag = (size << 10) | obj_tag;
7070
if (tag === 248) {

lib/js/obj.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ function is_block(a) {
77
}
88

99
function length(x) {
10-
return x.length - 2 | 0;
10+
return (x.length | 0) - 2 | 0;
1111
}
1212

1313
function Ephemeron_create(prim) {

0 commit comments

Comments
 (0)