do not track eliminatable variables from inside a switch to outside

This commit is contained in:
Alon Zakai 2014-09-24 11:12:11 -07:00
Родитель 1821cda0f0
Коммит 90338a7dcd
3 изменённых файлов: 50 добавлений и 0 удалений

Просмотреть файл

@ -108,6 +108,30 @@ function switchy() {
break;
}
}
function switchy2($inFormat) {
$inFormat = $inFormat | 0;
var label = 0;
switch ($inFormat | 0) {
case 14:
{
return 5;
}
case 10:
case 11:
case 12:
case 22:
{
label = 4;
break;
}
default:
{}
}
if ((label | 0) == 4) {
return 8;
}
return 1;
}
function tempDouble(a) {
a = +a;
f(a * a);

Просмотреть файл

@ -149,6 +149,31 @@ function switchy() {
break;
}
}
function switchy2($inFormat) {
$inFormat = $inFormat | 0;
var label = 0;
switch ($inFormat | 0) {
case 14:
{
return 5;
break;
}
case 10:
case 11:
case 12:
case 22:
{
label = 4;
break;
}
default:
{}
}
if ((label | 0) == 4) {
return 8;
}
return 1;
}
function tempDouble(a) {
a = +a;
var x = +0, y = +0;

Просмотреть файл

@ -3909,6 +3909,7 @@ function eliminate(ast, memSafe) {
}
}
}
tracked = {}; // do not track from inside the switch to outside
} else {
if (!(type in ABORTING_ELIMINATOR_SCAN_NODES)) {
printErr('unfamiliar eliminator scan node: ' + JSON.stringify(node));