| Index: src/full-codegen/x64/full-codegen-x64.cc
|
| diff --git a/src/full-codegen/x64/full-codegen-x64.cc b/src/full-codegen/x64/full-codegen-x64.cc
|
| index e4326732f4ca633f60a99ea5046dd54001733655..0c5f0c13d1923f49b0b5ff6995f1ba790fc4db6e 100644
|
| --- a/src/full-codegen/x64/full-codegen-x64.cc
|
| +++ b/src/full-codegen/x64/full-codegen-x64.cc
|
| @@ -1150,34 +1150,11 @@ void FullCodeGenerator::EmitLoadGlobalCheckExtensions(VariableProxy* proxy,
|
| context = temp;
|
| }
|
| // If no outer scope calls eval, we do not need to check more
|
| - // context extensions. If we have reached an eval scope, we check
|
| - // all extensions from this point.
|
| - if (!s->outer_scope_calls_sloppy_eval() || s->is_eval_scope()) break;
|
| + // context extensions.
|
| + if (!s->outer_scope_calls_sloppy_eval()) break;
|
| s = s->outer_scope();
|
| }
|
|
|
| - if (s != NULL && s->is_eval_scope()) {
|
| - // Loop up the context chain. There is no frame effect so it is
|
| - // safe to use raw labels here.
|
| - Label next, fast;
|
| - if (!context.is(temp)) {
|
| - __ movp(temp, context);
|
| - }
|
| - // Load map for comparison into register, outside loop.
|
| - __ LoadRoot(kScratchRegister, Heap::kNativeContextMapRootIndex);
|
| - __ bind(&next);
|
| - // Terminate at native context.
|
| - __ cmpp(kScratchRegister, FieldOperand(temp, HeapObject::kMapOffset));
|
| - __ j(equal, &fast, Label::kNear);
|
| - // Check that extension is "the hole".
|
| - __ JumpIfNotRoot(ContextOperand(temp, Context::EXTENSION_INDEX),
|
| - Heap::kTheHoleValueRootIndex, slow);
|
| - // Load next context in chain.
|
| - __ movp(temp, ContextOperand(temp, Context::PREVIOUS_INDEX));
|
| - __ jmp(&next);
|
| - __ bind(&fast);
|
| - }
|
| -
|
| // All extension objects were empty and it is safe to use a normal global
|
| // load machinery.
|
| EmitGlobalVariableLoad(proxy, typeof_mode);
|
|
|