From b55a8ea70424032c19ef85ef95c5eee8b50d55c3 Mon Sep 17 00:00:00 2001
From: Sylvain Henry <sylvain@haskus.fr>
Date: Fri, 14 Jul 2023 16:40:51 +0200
Subject: [PATCH] JS: better implementation for plusWord64 (#23597)

---
 rts/js/arith.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/rts/js/arith.js b/rts/js/arith.js
index 835921ae1f8a..902be190c9a7 100644
--- a/rts/js/arith.js
+++ b/rts/js/arith.js
@@ -60,11 +60,11 @@ function h$hs_minusWord64(h1,l1,h2,l2) {
 }
 
 function h$hs_plusWord64(h1,l1,h2,l2) {
-  var a = W64(h1,l1);
-  var b = W64(h2,l2);
-  var r = BigInt.asUintN(64, a + b);
-  TRACE_ARITH("Word64: " + a + " + " + b + " ==> " + r)
-  RETURN_W64(r);
+  var l  = l1+l2;
+  var rl = l>>>0;
+  var rh = (h1+h2+(l!=rl?1:0))>>>0;
+  TRACE_ARITH("Word64: " + (h1,l1) + " + " + (h2,l2) + " ==> " + (rh,rl))
+  RETURN_UBX_TUP2(rh,rl);
 }
 
 function h$hs_timesInt64(h1,l1,h2,l2) {
-- 
GitLab