JS/Inlining: rename IneffectiveStatementElimination to RedundantStatementElimination

This commit is contained in:
Alexey Andreev
2016-06-06 12:42:39 +03:00
parent 07d5a4506c
commit f0e64f8e38
13 changed files with 3 additions and 3 deletions
@@ -0,0 +1,70 @@
var global = 0;
function se() {
return ++global;
}
function se2(value) {
++global;
return value;
}
function test1() {
se("a1"); se("a2"); se("a3"); se("a4");
se("b1"); se("b2"); se("b3");
se("c1"); se("c2");
se("d1"); se("d2");
se("e1"); se("e2");
se("f1"); se("f2"); se("f3"); se("f4");
se("g1_1"); se("g1_2"); se("g2_1"); se("g2_2");
se("g3_1"); se("g3_2"); se("g4_1"); se("g4_2");
se("h1_1"); se("h1_2"); se("h2_1"); se("h2_2");
se("h3_1"); se("h3_2"); se("h4_1"); se("h4_2");
}
function test2() {
try {
se() in se();
return "fail2a: `in` should not be removed"
}
catch (e) {
// Do nothing
}
try {
se() instanceof se();
return "fail2b: `instanceof` should not be removed"
}
catch (e) {
// Do nothing
}
return "OK"
}
function test3() {
var x = true;
var y = false;
se2(true);
x && se2(true);
se2(true) && se2(true);
se2(false);
y || se2(false);
se2(false) || se2(false);
}
function box() {
test1();
if (global != 33) return "fail1: " + global;
var result = test2();
if (result !== "OK") return result;
if (global != 37) return "fail2: " + global;
test3();
if (global != 45) return "fail3: " + global;
return "OK";
}
@@ -0,0 +1,76 @@
var global = 0;
function se() {
return ++global;
}
function se2(value) {
++global;
return value;
}
function test1() {
var $a = (se("a1") - se("a2") + se("a3")) * se("a4");
var $b = se("b1") % se("b2") / se("b3");
var $c = se("c1") >> se("c2");
var $d = se("d1") << se("d2");
var $e = se("e1") >>> se("e2");
var $f = se("f1") | se("f2") & se("f3") ^ se("f4");
var $g1 = se("g1_1") == se("g1_2");
var $g2 = se("g2_1") === se("g2_2");
var $g3 = se("g3_1") != se("g3_2");
var $g4 = se("g4_1") !== se("g4_2");
var $h1 = se("h1_1") > se("h1_2");
var $h2 = se("h2_1") >= se("h2_2");
var $h3 = se("h3_1") < se("h3_2");
var $h4 = se("h4_1") <= se("h4_2");
}
function test2() {
try {
var $a = se() in se();
return "fail2a: `in` should not be removed"
}
catch (e) {
// Do nothing
}
try {
var $b = se() instanceof se();
return "fail2b: `instanceof` should not be removed"
}
catch (e) {
// Do nothing
}
return "OK"
}
function test3() {
var x = true;
var y = false;
var $a1 = se2(true) && x;
var $a2 = x && se2(true);
var $a3 = se2(true) && se2(true);
var $a4 = x && x;
var $b1 = se2(false) || y;
var $b2 = y || se2(false);
var $b3 = se2(false) || se2(false);
var $b4 = y || y;
}
function box() {
test1();
if (global != 33) return "fail1: " + global;
var result = test2();
if (result !== "OK") return result;
if (global != 37) return "fail2: " + global;
test3();
if (global != 45) return "fail3: " + global;
return "OK";
}
@@ -0,0 +1,22 @@
var global = 0;
function se(value) {
++global;
return value;
}
function test() {
var x = true;
se(x);
x ? se("foo") : se("bar");
x || se("bar");
x && se("foo");
se(x) ? se("foo") : se("bar");
}
function box() {
test();
if (global != 5) return "fail1: " + global;
return "OK";
}
@@ -0,0 +1,23 @@
var global = 0;
function se(value) {
++global;
return value;
}
function test() {
var x = true;
var $a = se(x) ? "foo" : "bar";
var $b = x ? "foo" : "bar";
var $c = x ? se("foo") : se("bar");
var $d = x ? "foo" : se("bar");
var $e = x ? se("foo") : "bar";
var $f = se(x) ? se("foo") : se("bar");
}
function box() {
test();
if (global != 5) return "fail1: " + global;
return "OK";
}
@@ -0,0 +1,23 @@
var global = 0;
function se(value) {
++global;
return value;
}
function test() {
se(2);
se(3);
se('foo');
se('bar');
se('y');
se(3);
se('null');
}
function box() {
test();
if (global != 7) return "fail: " + test();
return "OK";
}
@@ -0,0 +1,21 @@
var global = 0;
function se(value) {
++global;
return value;
}
function test() {
var $a = { x: se(2), y: se(3) };
var $b = [se("foo"), se("bar")];
var $c = "x" + se("y");
var $d = 2 + se(3);
var $e = se("null") + null;
}
function box() {
test();
if (global != 7) return "fail: " + test();
return "OK";
}
@@ -0,0 +1,16 @@
var log = "";
function se(x) {
log += x;
return x;
}
function test(param) {
se("test:" + param);
}
function box() {
test(23);
if (log != "test:23") return "fail: " + log;
return "OK";
}
@@ -0,0 +1,16 @@
var log = "";
function se(x) {
log += x;
return x;
}
function test(param) {
var $tmp = param + se("test:" + param);
}
function box() {
test(23);
if (log != "test:23") return "fail: " + log;
return "OK";
}
@@ -0,0 +1,41 @@
var global = 0;
function se(value) {
++global;
return value;
}
function test1() {
se(23);
se(23);
se(false);
se(-1);
se(23);
se(23);
}
function test2() {
++global;
global++;
--global;
global--;
}
function test3() {
var obj = { x: 2, y: 3};
delete obj.x;
return ("x" in obj) + ":" + ("y" in obj);
}
function box() {
test1();
if (global != 6) return "fail1: " + global;
test2();
if (global != 6) return "fail2: " + global;
var result = test3();
if (result != "false:true") return "fail3: " + result;
return "OK";
}
@@ -0,0 +1,41 @@
var global = 0;
function se(value) {
++global;
return value;
}
function test1() {
var $a = +se(23);
var $b = -se(23);
var $c = !se(false);
var $d = ~se(-1);
var $e = typeof se(23);
var $f = void se(23);
}
function test2() {
var $a = ++global;
var $b = global++;
var $c = --global;
var $d = global--;
}
function test3() {
var obj = { x: 2, y: 3};
var $tmp = delete obj.x;
return ("x" in obj) + ":" + ("y" in obj);
}
function box() {
test1();
if (global != 6) return "fail1: " + global;
test2();
if (global != 6) return "fail2: " + global;
var result = test3();
if (result != "false:true") return "fail3: " + result;
return "OK";
}