deopt array unpack optimisation on member expressions - fixes #1241

This commit is contained in:
Sebastian McKenzie
2015-04-12 20:59:17 -07:00
parent 61b57ea055
commit 8a0317132e
4 changed files with 15 additions and 4 deletions

View File

@@ -403,9 +403,14 @@ class DestructuringTransformer {
if (pattern.elements.length > arr.elements.length) return;
if (pattern.elements.length < arr.elements.length && !hasRest(pattern)) return false;
// deopt on holes
for (var i = 0; i < pattern.elements.length; i++) {
if (!pattern.elements[i]) return false;
var elem = pattern.elements[i];
// deopt on holes
if (!elem) return false;
// deopt on member expressions
if (t.isMemberExpression(elem)) return false;
}
// deopt on reference to left side identifiers