diff --git a/rts/js/arith.js b/rts/js/arith.js index 835921ae1f8a28ea70af62e10226b49c849bb068..902be190c9a78f3749a7fb542417bb0feb1dc25d 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) {