Skip to content

Commit 83d9bce

Browse files
committed
Remove unwanted float primitives
1 parent 9ae529f commit 83d9bce

14 files changed

+51
-664
lines changed

Diff for: jscomp/core/lam_dispatch_primitive.ml

-7
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,6 @@ let translate loc (prim_name : string) (args : J.expression list) : J.expression
5252
(******************************************************************************)
5353
(************************* customized primitives ******************************)
5454
(******************************************************************************)
55-
| "?int_of_float" -> (
56-
match args with [ e ] -> E.to_int32 e | _ -> assert false)
57-
| "?int_float_of_bits" | "?int_bits_of_float" | "?modf_float" | "?ldexp_float"
58-
| "?frexp_float" | "?copysign_float" | "?expm1_float" | "?hypot_float" ->
59-
call Js_runtime_modules.float
60-
| "?fmod_float" (* float module like js number module *) -> (
61-
match args with [ e0; e1 ] -> E.float_mod e0 e1 | _ -> assert false)
6255
(* Note we captured [exception/extension] creation in the early pass, this primitive is
6356
like normal one to set the identifier *)
6457
| "?exn_slot_name" | "?is_extension" -> call Js_runtime_modules.exceptions

Diff for: jscomp/runtime/caml_hash.res

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* along with this program; if not, write to the Free Software
2323
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
2424

25-
external int_of_float: float => int = "?int_of_float"
25+
external int_of_float: float => int = "%intoffloat"
2626

2727
type rec cell<'a> = {
2828
content: 'a,

Diff for: jscomp/runtime/primitive_float.res

-115
Original file line numberDiff line numberDiff line change
@@ -26,118 +26,3 @@ let max = (x: float, y: float): float =>
2626
} else {
2727
y
2828
}
29-
30-
// TODO: delete below
31-
32-
/* borrowed from others/js_math.ml */
33-
@val external _LOG2E: float = "Math.LOG2E"
34-
@val external _LOG10E: float = "Math.LOG10E"
35-
@val external abs_float: float => float = "Math.abs"
36-
@val external floor: float => float = "Math.floor"
37-
@val @scope("Math") external exp: float => float = "exp"
38-
@val external log: float => float = "Math.log"
39-
@val @scope("Math") external sqrt: float => float = "sqrt"
40-
@val external pow_float: (~base: float, ~exp: float) => float = "Math.pow"
41-
external int_of_float: float => int = "%intoffloat"
42-
external float_of_int: int => float = "%floatofint"
43-
44-
let int_float_of_bits: int => float = %raw(`function(x){
45-
return new Float32Array(new Int32Array([x]).buffer)[0]
46-
}`)
47-
let int_bits_of_float: float => int = %raw(`function(x){
48-
return new Int32Array(new Float32Array([x]).buffer)[0]
49-
}`)
50-
51-
let modf_float = (x: float): (float, float) =>
52-
if Primitive_float_extern.isFinite(x) {
53-
let neg = 1. /. x < 0.
54-
let x = abs_float(x)
55-
let i = floor(x)
56-
let f = x -. i
57-
if neg {
58-
(-.f, -.i)
59-
} else {
60-
(f, i)
61-
}
62-
} else if Primitive_float_extern.isNaN(x) {
63-
(Primitive_float_extern._NaN, Primitive_float_extern._NaN)
64-
} else {
65-
(1. /. x, x)
66-
}
67-
68-
let ldexp_float = (x: float, exp: int): float => {
69-
let (x', exp') = (ref(x), ref(float_of_int(exp)))
70-
if exp'.contents > 1023. {
71-
exp'.contents = exp'.contents -. 1023.
72-
x'.contents = x'.contents *. pow_float(~base=2., ~exp=1023.)
73-
if exp'.contents > 1023. {
74-
/* in case x is subnormal */
75-
exp'.contents = exp'.contents -. 1023.
76-
x'.contents = x'.contents *. pow_float(~base=2., ~exp=1023.)
77-
}
78-
} else if exp'.contents < -1023. {
79-
exp'.contents = exp'.contents +. 1023.
80-
x'.contents = x'.contents *. pow_float(~base=2., ~exp=-1023.)
81-
}
82-
x'.contents *. pow_float(~base=2., ~exp=exp'.contents)
83-
}
84-
85-
let frexp_float = (x: float): (float, int) =>
86-
if x == 0. || !Primitive_float_extern.isFinite(x) {
87-
(x, 0)
88-
} else {
89-
let neg = x < 0.
90-
let x' = ref(abs_float(x))
91-
let exp = ref(floor(_LOG2E *. log(x'.contents)) +. 1.)
92-
93-
x'.contents = x'.contents *. pow_float(~base=2., ~exp=-.exp.contents)
94-
if x'.contents < 0.5 {
95-
x'.contents = x'.contents *. 2.
96-
exp.contents = exp.contents -. 1.
97-
}
98-
if neg {
99-
x'.contents = -.x'.contents
100-
}
101-
(x'.contents, int_of_float(exp.contents))
102-
}
103-
104-
let copysign_float = (x: float, y: float): float => {
105-
let x = abs_float(x)
106-
let y = if y == 0. {
107-
1. /. y
108-
} else {
109-
y
110-
}
111-
if y < 0. {
112-
-.x
113-
} else {
114-
x
115-
}
116-
}
117-
118-
/* http://www.johndcook.com/blog/cpp_expm1/ */
119-
let expm1_float: float => float = x =>
120-
switch x {
121-
| x =>
122-
let y = exp(x)
123-
let z = y -. 1.
124-
if abs_float(x) > 1. {
125-
z
126-
} else if z == 0. {
127-
x
128-
} else {
129-
x *. z /. log(y)
130-
}
131-
}
132-
133-
let hypot_float = (x: float, y: float): float => {
134-
let (x0, y0) = (abs_float(x), abs_float(y))
135-
let a = max(x0, y0)
136-
let b =
137-
min(x0, y0) /. if a != 0. {
138-
a
139-
} else {
140-
1.
141-
}
142-
a *. sqrt(1. +. b *. b)
143-
}

Diff for: jscomp/runtime/primitive_float_extern.res

-7
This file was deleted.

Diff for: jscomp/runtime/release.ninja

+2-3
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,9 @@ o runtime/curry.cmi runtime/curry.cmj : cc runtime/curry.res | runtime/bs_stdlib
3737
o runtime/primitive_array.cmi runtime/primitive_array.cmj : cc runtime/primitive_array.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
3838
o runtime/primitive_bigint.cmi runtime/primitive_bigint.cmj : cc runtime/primitive_bigint.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
3939
o runtime/primitive_bool.cmi runtime/primitive_bool.cmj : cc runtime/primitive_bool.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
40-
o runtime/primitive_float.cmi runtime/primitive_float.cmj : cc runtime/primitive_float.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj runtime/primitive_float_extern.cmj
41-
o runtime/primitive_float_extern.cmi runtime/primitive_float_extern.cmj : cc runtime/primitive_float_extern.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
40+
o runtime/primitive_float.cmi runtime/primitive_float.cmj : cc runtime/primitive_float.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
4241
o runtime/primitive_int.cmi runtime/primitive_int.cmj : cc runtime/primitive_int.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
4342
o runtime/primitive_promise.cmi runtime/primitive_promise.cmj : cc runtime/primitive_promise.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
4443
o runtime/primitive_string.cmi runtime/primitive_string.cmj : cc runtime/primitive_string.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj runtime/primitive_string_extern.cmj
4544
o runtime/primitive_string_extern.cmi runtime/primitive_string_extern.cmj : cc runtime/primitive_string_extern.res | runtime/bs_stdlib_mini.cmi runtime/js.cmi runtime/js.cmj
46-
o runtime : phony runtime/bs_stdlib_mini.cmi runtime/js.cmj runtime/js.cmi runtime/caml_exceptions.cmi runtime/caml_exceptions.cmj runtime/caml_hash.cmi runtime/caml_hash.cmj runtime/caml_hash_primitive.cmi runtime/caml_hash_primitive.cmj runtime/caml_option.cmi runtime/caml_option.cmj runtime/caml_splice_call.cmi runtime/caml_splice_call.cmj runtime/lazy.cmi runtime/lazy.cmj runtime/primitive_lazy.cmi runtime/primitive_lazy.cmj runtime/primitive_module.cmi runtime/primitive_module.cmj runtime/primitive_object.cmi runtime/primitive_object.cmj runtime/caml_js_exceptions.cmi runtime/caml_js_exceptions.cmj runtime/caml_undefined_extern.cmi runtime/caml_undefined_extern.cmj runtime/curry.cmi runtime/curry.cmj runtime/primitive_array.cmi runtime/primitive_array.cmj runtime/primitive_bigint.cmi runtime/primitive_bigint.cmj runtime/primitive_bool.cmi runtime/primitive_bool.cmj runtime/primitive_float.cmi runtime/primitive_float.cmj runtime/primitive_float_extern.cmi runtime/primitive_float_extern.cmj runtime/primitive_int.cmi runtime/primitive_int.cmj runtime/primitive_promise.cmi runtime/primitive_promise.cmj runtime/primitive_string.cmi runtime/primitive_string.cmj runtime/primitive_string_extern.cmi runtime/primitive_string_extern.cmj
45+
o runtime : phony runtime/bs_stdlib_mini.cmi runtime/js.cmj runtime/js.cmi runtime/caml_exceptions.cmi runtime/caml_exceptions.cmj runtime/caml_hash.cmi runtime/caml_hash.cmj runtime/caml_hash_primitive.cmi runtime/caml_hash_primitive.cmj runtime/caml_option.cmi runtime/caml_option.cmj runtime/caml_splice_call.cmi runtime/caml_splice_call.cmj runtime/lazy.cmi runtime/lazy.cmj runtime/primitive_lazy.cmi runtime/primitive_lazy.cmj runtime/primitive_module.cmi runtime/primitive_module.cmj runtime/primitive_object.cmi runtime/primitive_object.cmj runtime/caml_js_exceptions.cmi runtime/caml_js_exceptions.cmj runtime/caml_undefined_extern.cmi runtime/caml_undefined_extern.cmj runtime/curry.cmi runtime/curry.cmj runtime/primitive_array.cmi runtime/primitive_array.cmj runtime/primitive_bigint.cmi runtime/primitive_bigint.cmj runtime/primitive_bool.cmi runtime/primitive_bool.cmj runtime/primitive_float.cmi runtime/primitive_float.cmj runtime/primitive_int.cmi runtime/primitive_int.cmj runtime/primitive_promise.cmi runtime/primitive_promise.cmj runtime/primitive_string.cmi runtime/primitive_string.cmj runtime/primitive_string_extern.cmi runtime/primitive_string_extern.cmj

Diff for: jscomp/test/UncurriedExternals.js

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: jscomp/test/UncurriedExternals.res

-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ module StandardNotation = {
1212
}
1313
let hh = M.sum(1.0, 2.0)
1414

15-
external mod_float: (float, float) => float = "?fmod_float"
16-
let mf = mod_float(3., 4.)
17-
1815
@get_index external get: (array<string>, int) => option<'a> = ""
1916
let tg = arr => arr->get(0)
2017

Diff for: jscomp/test/build.ninja

+1-2
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)