diff --git a/package-lock.json b/package-lock.json index 986dc0593c..31d47ea1d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "dependencies": { "binaryen": "102.0.0-nightly.20211028", - "long": "^5.1.0", + "long": "^5.2.0", "source-map-support": "^0.5.20", "ts-node": "^10.4.0" }, @@ -1749,9 +1749,9 @@ "dev": true }, "node_modules/long": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.1.0.tgz", - "integrity": "sha512-eNc10JP6ezXp/qxXZlKS4OHAKNae3je9LUkjmXPDEa+Iidlz0n4nFi/9LT+GOgcayMWhykLoISN+v0THeOiWQQ==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", + "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" }, "node_modules/lru-cache": { "version": "6.0.0", @@ -4124,9 +4124,9 @@ "dev": true }, "long": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.1.0.tgz", - "integrity": "sha512-eNc10JP6ezXp/qxXZlKS4OHAKNae3je9LUkjmXPDEa+Iidlz0n4nFi/9LT+GOgcayMWhykLoISN+v0THeOiWQQ==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", + "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" }, "lru-cache": { "version": "6.0.0", diff --git a/package.json b/package.json index 58153649a1..1be706a1eb 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "binaryen": "102.0.0-nightly.20211028", - "long": "^5.1.0", + "long": "^5.2.0", "source-map-support": "^0.5.20", "ts-node": "^10.4.0" }, diff --git a/src/glue/js/i64.d.ts b/src/glue/js/i64.d.ts index 14df43bcfb..8b4780cde9 100644 --- a/src/glue/js/i64.d.ts +++ b/src/glue/js/i64.d.ts @@ -13,6 +13,10 @@ declare function i64_new(lo: i32, hi?: i32): i64; declare function i64_low(value: i64): i32; declare function i64_high(value: i64): i32; +declare function i64_not(value: i64): i64; +declare function i64_clz(value: i64): i32; +declare function i64_ctz(value: i64): i32; + declare function i64_add(left: i64, right: i64): i64; declare function i64_sub(left: i64, right: i64): i64; declare function i64_mul(left: i64, right: i64): i64; @@ -27,8 +31,6 @@ declare function i64_xor(left: i64, right: i64): i64; declare function i64_shl(left: i64, right: i64): i64; declare function i64_shr(left: i64, right: i64): i64; declare function i64_shr_u(left: i64, right: i64): i64; -declare function i64_not(value: i64): i64; - declare function i64_eq(left: i64, right: i64): boolean; declare function i64_ne(left: i64, right: i64): boolean; declare function i64_gt(left: i64, right: i64): boolean; diff --git a/src/glue/js/i64.js b/src/glue/js/i64.js index 97a7279bf1..da7835984f 100644 --- a/src/glue/js/i64.js +++ b/src/glue/js/i64.js @@ -27,6 +27,18 @@ global.i64_high = function i64_high(value) { return value.high; }; +global.i64_not = function i64_not(value) { + return value.not(); +}; + +global.i64_clz = function i64_clz(value) { + return value.clz(); +}; + +global.i64_ctz = function i64_ctz(value) { + return value.ctz(); +}; + global.i64_add = function i64_add(left, right) { return left.add(right); }; @@ -104,10 +116,6 @@ global.i64_shr_u = function i64_shr_u(left, right) { return left.shru(right); }; -global.i64_not = function i64_not(value) { - return value.not(); -}; - global.i64_eq = function i64_eq(left, right) { return left.eq(right); }; diff --git a/src/glue/wasm/i64.ts b/src/glue/wasm/i64.ts index ddea1ed57e..03e4d121e3 100644 --- a/src/glue/wasm/i64.ts +++ b/src/glue/wasm/i64.ts @@ -32,6 +32,24 @@ function i64_low(value: i64): i32 { return value; } +// @ts-ignore: decorator +@global @inline +function i64_not(value: i64): i64 { + return ~value; +} + +// @ts-ignore: decorator +@global @inline +function i64_clz(value: i64): i32 { + return clz(value); +} + +// @ts-ignore: decorator +@global @inline +function i64_ctz(value: i64): i32 { + return ctz(value); +} + // @ts-ignore: decorator @global @inline function i64_high(value: i64): i32 { @@ -134,12 +152,6 @@ function i64_shr_u(left: i64, right: i64): i64 { return left >>> right; } -// @ts-ignore: decorator -@global @inline -function i64_not(value: i64): i64 { - return ~value; -} - // @ts-ignore: decorator @global @inline function i64_eq(left: i64, right: i64): bool {