| Index: src/ia32/full-codegen-ia32.cc
|
| diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc
|
| index 25588c898204ee3e420c04c13813bbcf34871bd8..23cc5aba30746445d9fbcacd31cce8907135e944 100644
|
| --- a/src/ia32/full-codegen-ia32.cc
|
| +++ b/src/ia32/full-codegen-ia32.cc
|
| @@ -2217,8 +2217,7 @@ void FullCodeGenerator::EmitCallWithStub(Call* expr, CallFunctionFlags flags) {
|
| }
|
|
|
|
|
| -void FullCodeGenerator::EmitResolvePossiblyDirectEval(ResolveEvalFlag flag,
|
| - int arg_count) {
|
| +void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) {
|
| // Push copy of the first argument or undefined if it doesn't exist.
|
| if (arg_count > 0) {
|
| __ push(Operand(esp, arg_count * kPointerSize));
|
| @@ -2235,9 +2234,7 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(ResolveEvalFlag flag,
|
| FLAG_harmony_scoping ? kStrictMode : strict_mode_flag();
|
| __ push(Immediate(Smi::FromInt(strict_mode)));
|
|
|
| - __ CallRuntime(flag == SKIP_CONTEXT_LOOKUP
|
| - ? Runtime::kResolvePossiblyDirectEvalNoLookup
|
| - : Runtime::kResolvePossiblyDirectEval, 4);
|
| + __ CallRuntime(Runtime::kResolvePossiblyDirectEval, 4);
|
| }
|
|
|
|
|
| @@ -2269,27 +2266,10 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
| VisitForStackValue(args->at(i));
|
| }
|
|
|
| - // If we know that eval can only be shadowed by eval-introduced
|
| - // variables we attempt to load the global eval function directly in
|
| - // generated code. If we succeed, there is no need to perform a
|
| - // context lookup in the runtime system.
|
| - Label done;
|
| - Variable* var = proxy->var();
|
| - if (!var->IsUnallocated() && var->mode() == DYNAMIC_GLOBAL) {
|
| - Label slow;
|
| - EmitLoadGlobalCheckExtensions(var, NOT_INSIDE_TYPEOF, &slow);
|
| - // Push the function and resolve eval.
|
| - __ push(eax);
|
| - EmitResolvePossiblyDirectEval(SKIP_CONTEXT_LOOKUP, arg_count);
|
| - __ jmp(&done);
|
| - __ bind(&slow);
|
| - }
|
| -
|
| // Push a copy of the function (found below the arguments) and
|
| // resolve eval.
|
| __ push(Operand(esp, (arg_count + 1) * kPointerSize));
|
| - EmitResolvePossiblyDirectEval(PERFORM_CONTEXT_LOOKUP, arg_count);
|
| - __ bind(&done);
|
| + EmitResolvePossiblyDirectEval(arg_count);
|
|
|
| // The runtime call returns a pair of values in eax (function) and
|
| // edx (receiver). Touch up the stack with the right values.
|
|
|