Revert "Improve performance of rest parameter."

This reverts commit e5463cc2a9.
This commit is contained in:
Sebastian McKenzie
2015-01-15 19:34:33 +11:00
parent 060aa5ba0b
commit 55054e45da
5 changed files with 22 additions and 30 deletions

View File

@@ -1,3 +1,3 @@
for (var LEN = ARGUMENTS.length, ARRAY = Array(ARRAY_LEN), KEY = START; KEY < LEN; KEY++) {
for (var KEY = START; KEY < ARGUMENTS.length; KEY++) {
ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];
}

View File

@@ -14,31 +14,23 @@ exports.Function = function (node, parent, file) {
var start = t.literal(node.params.length);
var key = file.generateUidIdentifier("key");
var len = file.generateUidIdentifier("len");
var arrKey = key;
if (node.params.length) {
arrKey = t.binaryExpression("-", key, start);
}
var arrLen = len;
if (node.params.length) {
arrLen = t.conditionalExpression(
t.binaryExpression(">", len, start),
t.binaryExpression("-", len, start),
t.literal(0)
);
arrKey = t.binaryExpression("-", arrKey, start);
}
node.body.body.unshift(
t.variableDeclaration("var", [
t.variableDeclarator(rest, t.arrayExpression([]))
]),
util.template("rest", {
ARGUMENTS: argsId,
ARRAY_KEY: arrKey,
ARRAY_LEN: arrLen,
START: start,
ARRAY: rest,
KEY: key,
LEN: len,
KEY: key
})
);
};