Skip to content

Commit c67ada8

Browse files
committed
Compiler: use Object.is for phys_equal
1 parent ad1e577 commit c67ada8

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
@@ -1453,11 +1453,25 @@ let rec translate_expr ctx queue loc x e level : _ * J.statement_list =
14531453
| Eq, [ x; y ] ->
14541454
let (px, cx), queue = access_queue' ~ctx queue x in
14551455
let (py, cy), queue = access_queue' ~ctx queue y in
1456-
bool (J.EBin (J.EqEqEq, cx, cy)), or_p px py, queue
1456+
( bool
1457+
(J.call
1458+
(J.dot (s_var "Object") (Utf8_string.of_string_exn "is"))
1459+
[ cx; cy ]
1460+
loc)
1461+
, or_p px py
1462+
, queue )
14571463
| Neq, [ x; y ] ->
14581464
let (px, cx), queue = access_queue' ~ctx queue x in
14591465
let (py, cy), queue = access_queue' ~ctx queue y in
1460-
bool (J.EBin (J.NotEqEq, cx, cy)), or_p px py, queue
1466+
( J.EBin
1467+
( J.Minus
1468+
, one
1469+
, J.call
1470+
(J.dot (s_var "Object") (Utf8_string.of_string_exn "is"))
1471+
[ cx; cy ]
1472+
loc )
1473+
, or_p px py
1474+
, queue )
14611475
| IsInt, [ x ] ->
14621476
let (px, cx), queue = access_queue' ~ctx queue x in
14631477
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)