summaryrefslogtreecommitdiff
path: root/test/wasm2js/f64.2asm.js
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2019-04-24 15:27:05 -0700
committerGitHub <noreply@github.com>2019-04-24 15:27:05 -0700
commitc3ed0f176b36a502ef2e1fd915550a808b8d8f0b (patch)
tree6abff96331025a74e18cfa4f173a997d3c800559 /test/wasm2js/f64.2asm.js
parentbc0a605e8864324d40aafbd00e8de0e50240ce26 (diff)
downloadbinaryen-c3ed0f176b36a502ef2e1fd915550a808b8d8f0b.tar.gz
binaryen-c3ed0f176b36a502ef2e1fd915550a808b8d8f0b.tar.bz2
binaryen-c3ed0f176b36a502ef2e1fd915550a808b8d8f0b.zip
wasm2js: more js optimization (#2050)
* Emit ints as signed, so -1 isn't a big unsigned number. * x - -c (where c is a constant) is larger than x + c in js (but not wasm) * +(+x) => +x * Avoid unnecessary coercions on calls, return, load, etc. - we just need coercions when entering or exiting "wasm" (not internally), and on actual operations that need them.
Diffstat (limited to 'test/wasm2js/f64.2asm.js')
-rw-r--r--test/wasm2js/f64.2asm.js18
1 files changed, 8 insertions, 10 deletions
diff --git a/test/wasm2js/f64.2asm.js b/test/wasm2js/f64.2asm.js
index f66e0d7c9..cfedc6a0b 100644
--- a/test/wasm2js/f64.2asm.js
+++ b/test/wasm2js/f64.2asm.js
@@ -96,12 +96,12 @@ function asmFunc(global, env, buffer) {
function $9(x) {
x = +x;
- return +(+__wasm_trunc_f64(+x));
+ return +__wasm_trunc_f64(x);
}
function $10(x) {
x = +x;
- return +(+__wasm_nearest_f64(+x));
+ return +__wasm_nearest_f64(x);
}
function $11(x) {
@@ -122,14 +122,14 @@ function asmFunc(global, env, buffer) {
i64toi32_i32$0 = wasm2js_scratch_load_i32(1 | 0) | 0;
i64toi32_i32$2 = wasm2js_scratch_load_i32(0 | 0) | 0;
i64toi32_i32$1 = 2147483647;
- i64toi32_i32$3 = 4294967295;
+ i64toi32_i32$3 = -1;
i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1;
$4_1 = i64toi32_i32$2 & i64toi32_i32$3;
$4$hi = i64toi32_i32$1;
wasm2js_scratch_store_f64(+y);
i64toi32_i32$1 = wasm2js_scratch_load_i32(1 | 0) | 0;
i64toi32_i32$0 = wasm2js_scratch_load_i32(0 | 0) | 0;
- i64toi32_i32$2 = 2147483648;
+ i64toi32_i32$2 = -2147483648;
i64toi32_i32$3 = 0;
i64toi32_i32$2 = i64toi32_i32$1 & i64toi32_i32$2;
$7_1 = i64toi32_i32$0 & i64toi32_i32$3;
@@ -141,11 +141,10 @@ function asmFunc(global, env, buffer) {
i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0;
wasm2js_scratch_store_i32(0 | 0, i64toi32_i32$1 | i64toi32_i32$3);
wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$0 | 0);
- return +(+wasm2js_scratch_load_f64());
+ return +wasm2js_scratch_load_f64();
}
function __wasm_nearest_f64(var$0) {
- var$0 = +var$0;
var var$1 = 0.0, var$2 = 0.0, wasm2js_f64$0 = 0.0, wasm2js_f64$1 = 0.0, wasm2js_i32$0 = 0;
var$1 = Math_floor(var$0);
var$2 = var$0 - var$1;
@@ -153,19 +152,18 @@ function asmFunc(global, env, buffer) {
{
var$0 = Math_ceil(var$0);
if (var$2 > .5) {
- return +var$0
+ return var$0
}
var$2 = var$1 * .5;
var$1 = (wasm2js_f64$0 = var$1, wasm2js_f64$1 = var$0, wasm2js_i32$0 = var$2 - Math_floor(var$2) == 0.0, wasm2js_i32$0 ? wasm2js_f64$0 : wasm2js_f64$1);
}
}
- return +var$1;
+ return var$1;
}
function __wasm_trunc_f64(var$0) {
- var$0 = +var$0;
var wasm2js_f64$0 = 0.0, wasm2js_f64$1 = 0.0, wasm2js_i32$0 = 0;
- return +(wasm2js_f64$0 = Math_ceil(var$0), wasm2js_f64$1 = Math_floor(var$0), wasm2js_i32$0 = var$0 < 0.0, wasm2js_i32$0 ? wasm2js_f64$0 : wasm2js_f64$1);
+ return wasm2js_f64$0 = Math_ceil(var$0), wasm2js_f64$1 = Math_floor(var$0), wasm2js_i32$0 = var$0 < 0.0, wasm2js_i32$0 ? wasm2js_f64$0 : wasm2js_f64$1;
}
var FUNCTION_TABLE = [];