facebookarchive/prepack
Voir sur GitHubEliminate branches in residual functions when the comparison value never leaks
Open
#1 146 ouverte le 10 nov. 2017
bootcampedenhancementhelp wantedlevel 3 (medium)react compilerserializer
Métriques du dépôt
- Stars
- (14 268 stars)
- Métriques de merge PR
- (Aucune PR mergée en 30 j)
Description
I'll just put this on the wish list.
(function() {
const Foo = Symbol();
const Bar = Symbol();
reducer = function(action) {
switch (action) {
case Foo:
console.log('foo');
break;
case Bar:
console.log('bar');
break;
}
};
leak = Bar;
})();
should turn into:
(function () {
var Bar = Symbol();
reducer = function (action) {
switch (action) {
case Bar:
console.log('bar');
break;
}
};
leak = Bar;
})();
Foo doesn't leak anywhere. Therefore it currently gets inlined to be created in the case statement producing a new Symbol every time. However, it should just dead code eliminate the whole conditional branch since it can never happen when the only remaining callsite is a condition.