[JS IR] Implement MoveTemporaryVariableDeclarationToAssignment optimization
This commit is contained in:
committed by
Space Team
parent
25f7b81d51
commit
524c475834
Vendored
+105
@@ -0,0 +1,105 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test1(o, k) {
|
||||
if (o != k) {
|
||||
var $tmp1 = getArg(k).toUpperCase();
|
||||
var $tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
}
|
||||
|
||||
function test2(o, k) {
|
||||
if (o != k) {
|
||||
var $tmp1 = getArg(k).toUpperCase();
|
||||
var $tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
if (o) {
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function test3(o, k) {
|
||||
if (o != k) {
|
||||
var $tmp1 = getArg(k).toUpperCase();
|
||||
|
||||
if (o) {
|
||||
var $tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function test4(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
}
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test5(ok) {
|
||||
var $tmp;
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
}
|
||||
var OK = getArg($tmp);
|
||||
}
|
||||
}
|
||||
return OK
|
||||
}
|
||||
|
||||
function test6(ok) {
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
var $tmp = 1
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
var OK = getArg($tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
return OK
|
||||
}
|
||||
|
||||
function box() {
|
||||
if (test1("o", "k") != "OK") {
|
||||
return "Fail test1"
|
||||
}
|
||||
if (test2("o", "k") != "OK") {
|
||||
return "Fail test2"
|
||||
}
|
||||
if (test3("o", "k") != "OK") {
|
||||
return "Fail test3"
|
||||
}
|
||||
if (test4("o", "k") != "OK") {
|
||||
return "Fail test4"
|
||||
}
|
||||
if (test5("ok") != "OK") {
|
||||
return "Fail test5"
|
||||
}
|
||||
if (test6("ok") != "OK") {
|
||||
return "Fail test6"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+112
@@ -0,0 +1,112 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test1(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
}
|
||||
|
||||
function test2(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
if (o) {
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function test3(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
|
||||
if (o) {
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function test4(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
}
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test5(ok) {
|
||||
var $tmp;
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
}
|
||||
var OK = getArg($tmp);
|
||||
}
|
||||
}
|
||||
return OK
|
||||
}
|
||||
|
||||
function test6(ok) {
|
||||
var $tmp;
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
$tmp = 1
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
var OK = getArg($tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
return OK
|
||||
}
|
||||
|
||||
function box() {
|
||||
if (test1("o", "k") != "OK") {
|
||||
return "Fail test1"
|
||||
}
|
||||
if (test2("o", "k") != "OK") {
|
||||
return "Fail test2"
|
||||
}
|
||||
if (test3("o", "k") != "OK") {
|
||||
return "Fail test3"
|
||||
}
|
||||
if (test4("o", "k") != "OK") {
|
||||
return "Fail test4"
|
||||
}
|
||||
if (test5("ok") != "OK") {
|
||||
return "Fail test5"
|
||||
}
|
||||
if (test6("ok") != "OK") {
|
||||
return "Fail test6"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
js/js.translator/testData/js-optimizer/move-temporary-variable-declaration/notInitUsage.optimized.js
Vendored
+58
@@ -0,0 +1,58 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test1(ok) {
|
||||
var $tmp
|
||||
getArg($tmp)
|
||||
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function test2(ok) {
|
||||
var $tmp
|
||||
if ($tmp === undefined) {
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function test3(ok) {
|
||||
var $tmp
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
getArg($tmp)
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
}
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function test4(ok) {
|
||||
var $tmp
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
getArg($tmp)
|
||||
}
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function box() {
|
||||
if (test1("ok") != "OK") {
|
||||
return "Fail test1"
|
||||
}
|
||||
if (test2("ok") != "OK") {
|
||||
return "Fail test2"
|
||||
}
|
||||
if (test3("ok") != "OK") {
|
||||
return "Fail test3"
|
||||
}
|
||||
if (test4("ok") != "OK") {
|
||||
return "Fail test4"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+58
@@ -0,0 +1,58 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test1(ok) {
|
||||
var $tmp
|
||||
getArg($tmp)
|
||||
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function test2(ok) {
|
||||
var $tmp
|
||||
if ($tmp === undefined) {
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function test3(ok) {
|
||||
var $tmp
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
getArg($tmp)
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
}
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function test4(ok) {
|
||||
var $tmp
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
getArg($tmp)
|
||||
}
|
||||
$tmp = getArg(ok).toUpperCase();
|
||||
}
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function box() {
|
||||
if (test1("ok") != "OK") {
|
||||
return "Fail test1"
|
||||
}
|
||||
if (test2("ok") != "OK") {
|
||||
return "Fail test2"
|
||||
}
|
||||
if (test3("ok") != "OK") {
|
||||
return "Fail test3"
|
||||
}
|
||||
if (test4("ok") != "OK") {
|
||||
return "Fail test4"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test(o, k) {
|
||||
var $tmp1 = getArg(k).toUpperCase();
|
||||
var $tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function box() {
|
||||
return test("o", "k");
|
||||
}
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function box() {
|
||||
return test("o", "k");
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test1(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
} else {
|
||||
$tmp1 = getArg(k)
|
||||
$tmp2 = getArg(o)
|
||||
}
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test2(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
if (o) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
} else {
|
||||
$tmp1 = getArg(k)
|
||||
$tmp2 = getArg(o)
|
||||
}
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
}
|
||||
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test3(o, k) {
|
||||
if (o != k) {
|
||||
var $tmp1 = getArg(k).toUpperCase();
|
||||
var $tmp2 = getArg(k).toUpperCase();
|
||||
if (o) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
} else {
|
||||
$tmp1 = getArg(k)
|
||||
$tmp2 = getArg(o)
|
||||
}
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
}
|
||||
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test4(ok) {
|
||||
if (ok) {
|
||||
var $tmp1 = getArg(ok).toUpperCase();
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
getArg($tmp1)
|
||||
}
|
||||
} else {
|
||||
getArg($tmp1)
|
||||
}
|
||||
var OK = getArg($tmp1);
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
function test5(ok) {
|
||||
if (ok) {
|
||||
var $tmp1 = 0
|
||||
if (ok) {
|
||||
$tmp1 = 1
|
||||
if (ok) {
|
||||
getArg($tmp1)
|
||||
} else {
|
||||
$tmp1 = 2
|
||||
}
|
||||
$tmp1 = getArg(ok).toUpperCase();
|
||||
} else {
|
||||
getArg($tmp1)
|
||||
}
|
||||
var OK = getArg($tmp1);
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
function box() {
|
||||
if (test1("o", "k") != "OK") {
|
||||
return "Fail test1"
|
||||
}
|
||||
if (test2("o", "k") != "OK") {
|
||||
return "Fail test2"
|
||||
}
|
||||
if (test3("o", "k") != "OK") {
|
||||
return "Fail test3"
|
||||
}
|
||||
if (test4("OK") != "OK") {
|
||||
return "Fail test4"
|
||||
}
|
||||
if (test5("OK") != "OK") {
|
||||
return "Fail test5"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
js/js.translator/testData/js-optimizer/move-temporary-variable-declaration/siblingBlocks.original.js
Vendored
+114
@@ -0,0 +1,114 @@
|
||||
function getArg(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function test1(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
} else {
|
||||
$tmp1 = getArg(k)
|
||||
$tmp2 = getArg(o)
|
||||
}
|
||||
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test2(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
if (o) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
} else {
|
||||
$tmp1 = getArg(k)
|
||||
$tmp2 = getArg(o)
|
||||
}
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
}
|
||||
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test3(o, k) {
|
||||
var $tmp1;
|
||||
var $tmp2;
|
||||
if (o != k) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(k).toUpperCase();
|
||||
if (o) {
|
||||
$tmp1 = getArg(k).toUpperCase();
|
||||
$tmp2 = getArg(o).toUpperCase();
|
||||
} else {
|
||||
$tmp1 = getArg(k)
|
||||
$tmp2 = getArg(o)
|
||||
}
|
||||
var O = getArg($tmp2);
|
||||
var K = getArg($tmp1);
|
||||
}
|
||||
|
||||
return O + K;
|
||||
}
|
||||
|
||||
function test4(ok) {
|
||||
var $tmp1;
|
||||
if (ok) {
|
||||
$tmp1 = getArg(ok).toUpperCase();
|
||||
if (ok) {
|
||||
if (ok) {
|
||||
getArg($tmp1)
|
||||
}
|
||||
} else {
|
||||
getArg($tmp1)
|
||||
}
|
||||
var OK = getArg($tmp1);
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
function test5(ok) {
|
||||
var $tmp1;
|
||||
|
||||
if (ok) {
|
||||
$tmp1 = 0
|
||||
if (ok) {
|
||||
$tmp1 = 1
|
||||
if (ok) {
|
||||
getArg($tmp1)
|
||||
} else {
|
||||
$tmp1 = 2
|
||||
}
|
||||
$tmp1 = getArg(ok).toUpperCase();
|
||||
} else {
|
||||
getArg($tmp1)
|
||||
}
|
||||
var OK = getArg($tmp1);
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
function box() {
|
||||
if (test1("o", "k") != "OK") {
|
||||
return "Fail test1"
|
||||
}
|
||||
if (test2("o", "k") != "OK") {
|
||||
return "Fail test2"
|
||||
}
|
||||
if (test3("o", "k") != "OK") {
|
||||
return "Fail test3"
|
||||
}
|
||||
if (test4("OK") != "OK") {
|
||||
return "Fail test4"
|
||||
}
|
||||
if (test5("OK") != "OK") {
|
||||
return "Fail test5"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
+3
-3
@@ -3,18 +3,18 @@ function f(x) {
|
||||
}
|
||||
|
||||
function box() {
|
||||
var result1, result2, $a, $b;
|
||||
var $a, $b;
|
||||
|
||||
if (f(true)) {
|
||||
$a = "1";
|
||||
}
|
||||
result1 = $a;
|
||||
var result1 = $a;
|
||||
if (result1 !== "1") return "fail1: " + result1;
|
||||
|
||||
if (f(false)) {
|
||||
$b = "1";
|
||||
}
|
||||
result2 = $b;
|
||||
var result2 = $b;
|
||||
if (result2 !== void 0) return "fail2: " + result2;
|
||||
|
||||
return "OK";
|
||||
|
||||
+4
-8
@@ -13,32 +13,28 @@ function testIrregular() {
|
||||
}
|
||||
|
||||
function testDoubleUse1() {
|
||||
var $b;
|
||||
$b = f("testDoubleUse1");
|
||||
var $b = f("testDoubleUse1");
|
||||
var result = $b;
|
||||
f($b);
|
||||
return result;
|
||||
}
|
||||
|
||||
function testDoubleUse2() {
|
||||
var $d;
|
||||
$d = f("testDoubleUse2");
|
||||
var $d = f("testDoubleUse2");
|
||||
var result = $d;
|
||||
f($d);
|
||||
return result;
|
||||
}
|
||||
|
||||
function testDoubleUse3() {
|
||||
var $a;
|
||||
$a = f("testDoubleUse3");
|
||||
var $a = f("testDoubleUse3");
|
||||
var result = $a;
|
||||
f($a);
|
||||
return result;
|
||||
}
|
||||
|
||||
function testCircular() {
|
||||
var $b;
|
||||
$b = f("testCircular");
|
||||
var $b = f("testCircular");
|
||||
$b = $b;
|
||||
var result = $b;
|
||||
return result;
|
||||
|
||||
Vendored
+2
-3
@@ -1,9 +1,8 @@
|
||||
var result = "";
|
||||
|
||||
function box() {
|
||||
var $tmp;
|
||||
$tmp = result;
|
||||
var $tmp = result;
|
||||
result += "fail";
|
||||
result = $tmp + "OK";
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user