| Index: src/code-stubs.cc
|
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc
|
| index 6ee1d4c27ea5dfaa708689b38ba00352c64e2d86..c75d07f637ed18933da60bbb1474d134a596b629 100644
|
| --- a/src/code-stubs.cc
|
| +++ b/src/code-stubs.cc
|
| @@ -2599,7 +2599,7 @@ void FastNewClosureStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| // static
|
| compiler::Node* FastNewFunctionContextStub::Generate(
|
| CodeStubAssembler* assembler, compiler::Node* function,
|
| - compiler::Node* slots, compiler::Node* context) {
|
| + compiler::Node* slots, compiler::Node* context, bool for_eval) {
|
| typedef compiler::Node Node;
|
|
|
| Node* min_context_slots =
|
| @@ -2613,9 +2613,10 @@ compiler::Node* FastNewFunctionContextStub::Generate(
|
| Node* function_context = assembler->Allocate(size);
|
|
|
| Isolate* isolate = assembler->isolate();
|
| - assembler->StoreMapNoWriteBarrier(
|
| - function_context,
|
| - assembler->HeapConstant(isolate->factory()->function_context_map()));
|
| + Handle<Map> map = for_eval ? isolate->factory()->eval_context_map()
|
| + : isolate->factory()->function_context_map();
|
| + assembler->StoreMapNoWriteBarrier(function_context,
|
| + assembler->HeapConstant(map));
|
| assembler->StoreObjectFieldNoWriteBarrier(function_context,
|
| Context::kLengthOffset,
|
| assembler->SmiFromWord32(length));
|
| @@ -2656,7 +2657,7 @@ void FastNewFunctionContextStub::GenerateAssembly(
|
| Node* slots = assembler->Parameter(FastNewFunctionContextDescriptor::kSlots);
|
| Node* context = assembler->Parameter(Descriptor::kContext);
|
|
|
| - assembler->Return(Generate(assembler, function, slots, context));
|
| + assembler->Return(Generate(assembler, function, slots, context, for_eval()));
|
| }
|
|
|
| // static
|
|
|