aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library.js2
-rw-r--r--src/parseTools.js2
-rw-r--r--tests/runner.py5
3 files changed, 5 insertions, 4 deletions
diff --git a/src/library.js b/src/library.js
index 4bb74001..624e8550 100644
--- a/src/library.js
+++ b/src/library.js
@@ -2209,7 +2209,7 @@ LibraryManager.library = {
} else if (type == 'i64') {
ret = [{{{ makeGetValue('varargs', 'argIndex', 'i32', undefined, undefined, true) }}},
{{{ makeGetValue('varargs', 'argIndex+4', 'i32', undefined, undefined, true) }}}];
- ret = ret[0] + ret[1]*Math.pow(2, 32); // XXX - loss of precision
+ ret = unSign(ret[0], 32) + unSign(ret[1], 32)*Math.pow(2, 32); // XXX - loss of precision
#endif
} else {
ret = {{{ makeGetValue('varargs', 'argIndex', 'i32', undefined, undefined, true) }}};
diff --git a/src/parseTools.js b/src/parseTools.js
index 7fde34fb..39e76307 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -581,7 +581,7 @@ function parseI64Constant(str) {
}
function subtract(v, w) { // v -= w. we assume v >= w
- while (v.length > w.length) w.push(0);
+ while (v.length > w.length) w.splice(0, 0, 0);
for (var i = 0; i < v.length; i++) {
v[i] -= w[i];
if (v[i] < 0) {
diff --git a/tests/runner.py b/tests/runner.py
index 002d9376..36c86bb7 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -365,6 +365,7 @@ if 'benchmark' not in str(sys.argv):
self.do_run(src, output, force_c=True)
def test_i64(self):
+ #for i64_mode in []:
for i64_mode in [0,1]:
if i64_mode == 0 and Settings.USE_TYPED_ARRAYS != 0: continue # Typed arrays truncate i64
Settings.I64_MODE = i64_mode
@@ -422,7 +423,7 @@ if 'benchmark' not in str(sys.argv):
printf("*%Ld*\n", returner2(30));
int64_t maxx = -1ULL;
- //printf("*%Ld*\n", maxx);
+ printf("*%Lu*\n", maxx);
// Make sure params are not modified if they shouldn't be
int64_t t = 123;
@@ -435,7 +436,7 @@ if 'benchmark' not in str(sys.argv):
return 0;
}
'''
- self.do_run(src, '*1311918518731868200\n0,0,0,1,1\n1,0,1,0,1*\n*245127260211081*\n*245127260209443*\n' +
+ self.do_run(src, '*1311918518731868200\n0,0,0,1,1\n1,0,1,0,1*\n*245127260211081*\n*245127260209443*\n*18446744073709552000*\n' +
'm1: 127\n*123*\n*127*\n')