Revert "Passing the arguments object directly when generating a closure."

This reverts commit 7b887f065d.
This commit is contained in:
Timothy Jones
2010-10-24 02:15:01 +13:00
parent 7b887f065d
commit 3834e7bc33
3 changed files with 11 additions and 12 deletions

View File

@@ -1734,19 +1734,19 @@
};
Closure = {
wrap: function(expressions, statement, noReturn) {
var args, call, func, mentionsArgs;
var args, call, func, mentionsArgs, meth;
if (expressions.containsPureStatement()) {
return expressions;
}
mentionsArgs = expressions.contains(this.literalArgs);
func = new Parens(new Code((mentionsArgs ? [new Literal('arguments')] : []), Expressions.wrap([expressions])));
func = new Parens(new Code([], Expressions.wrap([expressions])));
args = [];
if (mentionsArgs || expressions.contains(this.literalThis)) {
if ((mentionsArgs = expressions.contains(this.literalArgs)) || (expressions.contains(this.literalThis))) {
meth = new Literal(mentionsArgs ? 'apply' : 'call');
args = [new Literal('this')];
if (mentionsArgs) {
args.push(new Literal('arguments'));
}
func = new Value(func, [new Accessor(new Literal('call'))]);
func = new Value(func, [new Accessor(meth)]);
func.noReturn = noReturn;
}
call = new Call(func, args);