| Index: src/x64/code-stubs-x64.cc
|
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
|
| index 63076dccfa6ecab438209da5eabed639a048bdd7..6159d6f70d70984768eade06557a663561edf1a9 100644
|
| --- a/src/x64/code-stubs-x64.cc
|
| +++ b/src/x64/code-stubs-x64.cc
|
| @@ -50,6 +50,16 @@ void FastNewClosureStub::InitializeInterfaceDescriptor(
|
| }
|
|
|
|
|
| +void FastNewContextStub::InitializeInterfaceDescriptor(
|
| + Isolate* isolate,
|
| + CodeStubInterfaceDescriptor* descriptor) {
|
| + static Register registers[] = { rdi };
|
| + descriptor->register_param_count_ = 1;
|
| + descriptor->register_params_ = registers;
|
| + descriptor->deoptimization_handler_ = NULL;
|
| +}
|
| +
|
| +
|
| void ToNumberStub::InitializeInterfaceDescriptor(
|
| Isolate* isolate,
|
| CodeStubInterfaceDescriptor* descriptor) {
|
| @@ -438,48 +448,6 @@ void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void FastNewContextStub::Generate(MacroAssembler* masm) {
|
| - // Try to allocate the context in new space.
|
| - Label gc;
|
| - int length = slots_ + Context::MIN_CONTEXT_SLOTS;
|
| - __ Allocate((length * kPointerSize) + FixedArray::kHeaderSize,
|
| - rax, rbx, rcx, &gc, TAG_OBJECT);
|
| -
|
| - // Get the function from the stack.
|
| - StackArgumentsAccessor args(rsp, 1, ARGUMENTS_DONT_CONTAIN_RECEIVER);
|
| - __ movp(rcx, args.GetArgumentOperand(0));
|
| -
|
| - // Set up the object header.
|
| - __ LoadRoot(kScratchRegister, Heap::kFunctionContextMapRootIndex);
|
| - __ movp(FieldOperand(rax, HeapObject::kMapOffset), kScratchRegister);
|
| - __ Move(FieldOperand(rax, FixedArray::kLengthOffset), Smi::FromInt(length));
|
| -
|
| - // Set up the fixed slots.
|
| - __ Set(rbx, 0); // Set to NULL.
|
| - __ movp(Operand(rax, Context::SlotOffset(Context::CLOSURE_INDEX)), rcx);
|
| - __ movp(Operand(rax, Context::SlotOffset(Context::PREVIOUS_INDEX)), rsi);
|
| - __ movp(Operand(rax, Context::SlotOffset(Context::EXTENSION_INDEX)), rbx);
|
| -
|
| - // Copy the global object from the previous context.
|
| - __ movp(rbx, Operand(rsi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
|
| - __ movp(Operand(rax, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)), rbx);
|
| -
|
| - // Initialize the rest of the slots to undefined.
|
| - __ LoadRoot(rbx, Heap::kUndefinedValueRootIndex);
|
| - for (int i = Context::MIN_CONTEXT_SLOTS; i < length; i++) {
|
| - __ movp(Operand(rax, Context::SlotOffset(i)), rbx);
|
| - }
|
| -
|
| - // Return and remove the on-stack parameter.
|
| - __ movp(rsi, rax);
|
| - __ ret(1 * kPointerSize);
|
| -
|
| - // Need to collect. Call into runtime system.
|
| - __ bind(&gc);
|
| - __ TailCallRuntime(Runtime::kNewFunctionContext, 1, 1);
|
| -}
|
| -
|
| -
|
| void FastNewBlockContextStub::Generate(MacroAssembler* masm) {
|
| // Stack layout on entry:
|
| //
|
|
|