From c3ed0f176b36a502ef2e1fd915550a808b8d8f0b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 24 Apr 2019 15:27:05 -0700 Subject: 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. --- test/wasm2js/switch.2asm.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'test/wasm2js/switch.2asm.js') diff --git a/test/wasm2js/switch.2asm.js b/test/wasm2js/switch.2asm.js index f60adde0f..fd7245dc2 100644 --- a/test/wasm2js/switch.2asm.js +++ b/test/wasm2js/switch.2asm.js @@ -139,8 +139,8 @@ function asmFunc(global, env, buffer) { $7$hi = i64toi32_i32$5; break switch_; } - i64toi32_i32$5 = 4294967295; - $7_1 = 4294967291; + i64toi32_i32$5 = -1; + $7_1 = -5; $7$hi = i64toi32_i32$5; } i64toi32_i32$5 = $7$hi; @@ -186,8 +186,6 @@ function asmFunc(global, env, buffer) { } function legalstub$1($0_2, $1_2) { - $0_2 = $0_2 | 0; - $1_2 = $1_2 | 0; var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_2 = 0, $2$hi = 0; i64toi32_i32$0 = 0; $4_1 = $0_2; @@ -214,7 +212,7 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = $7$hi; i64toi32_i32$3 = $12; i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2; - i64toi32_i32$2 = $1(i64toi32_i32$0 | i64toi32_i32$3, i64toi32_i32$2 | 0) | 0; + i64toi32_i32$2 = $1(i64toi32_i32$0 | i64toi32_i32$3, i64toi32_i32$2); i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; $2_2 = i64toi32_i32$2; $2$hi = i64toi32_i32$0; @@ -235,7 +233,7 @@ function asmFunc(global, env, buffer) { } setTempRet0($13 | 0); i64toi32_i32$2 = $2$hi; - return $2_2 | 0; + return $2_2; } var FUNCTION_TABLE = []; -- cgit v1.2.3