Skip to content

Commit dd21c9b

Browse files
committed
Compiler: use Object.is for phys_equal
1 parent c7bd0c4 commit dd21c9b

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

compiler/lib/generate.ml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,11 +1461,25 @@ let rec translate_expr ctx queue loc x e level : _ * J.statement_list =
14611461
| Eq, [ x; y ] ->
14621462
let (px, cx), queue = access_queue' ~ctx queue x in
14631463
let (py, cy), queue = access_queue' ~ctx queue y in
1464-
bool (J.EBin (J.EqEqEq, cx, cy)), or_p px py, queue
1464+
( bool
1465+
(J.call
1466+
(J.dot (s_var "Object") (Utf8_string.of_string_exn "is"))
1467+
[ cx; cy ]
1468+
loc)
1469+
, or_p px py
1470+
, queue )
14651471
| Neq, [ x; y ] ->
14661472
let (px, cx), queue = access_queue' ~ctx queue x in
14671473
let (py, cy), queue = access_queue' ~ctx queue y in
1468-
bool (J.EBin (J.NotEqEq, cx, cy)), or_p px py, queue
1474+
( J.EBin
1475+
( J.Minus
1476+
, one
1477+
, J.call
1478+
(J.dot (s_var "Object") (Utf8_string.of_string_exn "is"))
1479+
[ cx; cy ]
1480+
loc )
1481+
, or_p px py
1482+
, queue )
14691483
| IsInt, [ x ] ->
14701484
let (px, cx), queue = access_queue' ~ctx queue x in
14711485
bool (Mlvalue.is_immediate cx), px, queue

compiler/tests-jsoo/test_obj.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,6 @@ let%expect_test "dup" =
7373

7474
let%expect_test "sameness" =
7575
print_bool (nan == nan);
76-
[%expect {| false |}];
76+
[%expect {| true |}];
7777
print_bool (-0. == 0.);
78-
[%expect {| true |}]
78+
[%expect {| false |}]

0 commit comments

Comments
 (0)