Fix some rest optimization errors.
Commit message edited by @jmm.
This commit is contained in:
committed by
Jesse McCarthy
parent
6ca07974c9
commit
183fbab967
@@ -60,6 +60,12 @@ let memberExpressionOptimisationVisitor = {
|
||||
let {parentPath} = path;
|
||||
let grandparentPath = parentPath.parentPath;
|
||||
|
||||
// ex: [rest[0]] = [rest[1]]
|
||||
if (grandparentPath.isLVal()) {
|
||||
state.deopted = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// ex: args[0]
|
||||
if (
|
||||
parentPath.isMemberExpression({ computed: true, object: node }) &&
|
||||
@@ -68,7 +74,8 @@ let memberExpressionOptimisationVisitor = {
|
||||
!(
|
||||
grandparentPath.isAssignmentExpression() &&
|
||||
parentPath.node === grandparentPath.node.left
|
||||
)
|
||||
) &&
|
||||
!grandparentPath.isForInStatement()
|
||||
) {
|
||||
// if we know that this member expression is referencing a number then
|
||||
// we can safely optimise it
|
||||
|
||||
@@ -83,10 +83,12 @@ function swap() {
|
||||
rest[_key9] = arguments[_key9];
|
||||
}
|
||||
|
||||
[rest[0], rest[1]] = [rest[1], rest[0]];
|
||||
var _ref = [rest[1], rest[0]];
|
||||
rest[0] = _ref[0];
|
||||
rest[1] = _ref[1];
|
||||
}
|
||||
|
||||
function x() {
|
||||
function forIn() {
|
||||
for (var _len10 = arguments.length, rest = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
||||
rest[_key10] = arguments[_key10];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user