| Index: src/code-stubs.cc
|
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc
|
| index d63453676f4cbbb81b69a3b1176bc4ab7eff64c2..68e12a20be9a5790c26530f240e6d7f3d18a4348 100644
|
| --- a/src/code-stubs.cc
|
| +++ b/src/code-stubs.cc
|
| @@ -2629,10 +2629,13 @@ void FastNewClosureStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| Generate(assembler, assembler->Parameter(0), assembler->Parameter(1)));
|
| }
|
|
|
| -// static
|
| -compiler::Node* FastNewFunctionContextStub::Generate(
|
| - CodeStubAssembler* assembler, compiler::Node* function,
|
| - compiler::Node* slots, compiler::Node* context) {
|
| +namespace {
|
| +
|
| +compiler::Node* GenerateFastNewFunctionContextStub(CodeStubAssembler* assembler,
|
| + compiler::Node* function,
|
| + compiler::Node* slots,
|
| + compiler::Node* context,
|
| + Handle<Map> map) {
|
| typedef compiler::Node Node;
|
|
|
| Node* min_context_slots =
|
| @@ -2646,9 +2649,8 @@ 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()));
|
| + assembler->StoreMapNoWriteBarrier(function_context,
|
| + assembler->HeapConstant(map));
|
| assembler->StoreObjectFieldNoWriteBarrier(function_context,
|
| Context::kLengthOffset,
|
| assembler->SmiFromWord32(length));
|
| @@ -2682,6 +2684,17 @@ compiler::Node* FastNewFunctionContextStub::Generate(
|
| return function_context;
|
| }
|
|
|
| +} // namespace
|
| +
|
| +// static
|
| +compiler::Node* FastNewFunctionContextStub::Generate(
|
| + CodeStubAssembler* assembler, compiler::Node* function,
|
| + compiler::Node* slots, compiler::Node* context) {
|
| + Handle<Map> map = assembler->isolate()->factory()->function_context_map();
|
| + return GenerateFastNewFunctionContextStub(assembler, function, slots, context,
|
| + map);
|
| +}
|
| +
|
| void FastNewFunctionContextStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| @@ -2693,6 +2706,26 @@ void FastNewFunctionContextStub::GenerateAssembly(
|
| }
|
|
|
| // static
|
| +compiler::Node* FastNewEvalContextStub::Generate(CodeStubAssembler* assembler,
|
| + compiler::Node* function,
|
| + compiler::Node* slots,
|
| + compiler::Node* context) {
|
| + Handle<Map> map = assembler->isolate()->factory()->eval_context_map();
|
| + return GenerateFastNewFunctionContextStub(assembler, function, slots, context,
|
| + map);
|
| +}
|
| +
|
| +void FastNewEvalContextStub::GenerateAssembly(
|
| + CodeStubAssembler* assembler) const {
|
| + typedef compiler::Node Node;
|
| + Node* function = assembler->Parameter(Descriptor::kFunction);
|
| + Node* slots = assembler->Parameter(FastNewFunctionContextDescriptor::kSlots);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
| +
|
| + assembler->Return(Generate(assembler, function, slots, context));
|
| +}
|
| +
|
| +// static
|
| compiler::Node* FastCloneRegExpStub::Generate(CodeStubAssembler* assembler,
|
| compiler::Node* closure,
|
| compiler::Node* literal_index,
|
|
|