JS: performance of numeric primops
The JS implementation of some numeric primops use JavaScript's `BigInt` (see code in `rts/js/arith.js`).
For performance we should replace this with code only using JS `number` type.
See `h$mul2Word32` for an example where we explicitly use numbers limited to 16-bit range to compute 32-bit multiplications. This was faster than allocating `BigInt`s, performing a `BigInt` operation, and finally converting back to `number` values.
- [x] plusWord64 !10873
- [x] minusWord64 !12125
- [x] quotWord64 !15720
- [x] remWord64 !15720
- [x] timesWord64 !12125
- [x] timesInt64 !12125
- [x] quotInt64 !15720
- [x] remInt64 !15720
- [x] plusInt64 !12125
- [x] minusInt64 !12125
- [x] quotWord32 !15720
- [x] remWord32 !15720
- [x] quotRemWord32 !15720
- [x] quotRem2Word32 !15720
issue