| Index: src/mips/code-stubs-mips.cc
|
| diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
|
| index 3bd381ab616da114fcaeca4bb1880ffed96cd5da..2fe6d69f95cdffd832efa40a67e9f828186969c5 100644
|
| --- a/src/mips/code-stubs-mips.cc
|
| +++ b/src/mips/code-stubs-mips.cc
|
| @@ -50,6 +50,16 @@ void FastNewClosureStub::InitializeInterfaceDescriptor(
|
| }
|
|
|
|
|
| +void FastNewContextStub::InitializeInterfaceDescriptor(
|
| + Isolate* isolate,
|
| + CodeStubInterfaceDescriptor* descriptor) {
|
| + static Register registers[] = { a1 };
|
| + descriptor->register_param_count_ = 1;
|
| + descriptor->register_params_ = registers;
|
| + descriptor->deoptimization_handler_ = NULL;
|
| +}
|
| +
|
| +
|
| void ToNumberStub::InitializeInterfaceDescriptor(
|
| Isolate* isolate,
|
| CodeStubInterfaceDescriptor* descriptor) {
|
| @@ -453,47 +463,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;
|
| -
|
| - // Attempt to allocate the context in new space.
|
| - __ Allocate(FixedArray::SizeFor(length), v0, a1, a2, &gc, TAG_OBJECT);
|
| -
|
| - // Load the function from the stack.
|
| - __ lw(a3, MemOperand(sp, 0));
|
| -
|
| - // Set up the object header.
|
| - __ LoadRoot(a1, Heap::kFunctionContextMapRootIndex);
|
| - __ li(a2, Operand(Smi::FromInt(length)));
|
| - __ sw(a2, FieldMemOperand(v0, FixedArray::kLengthOffset));
|
| - __ sw(a1, FieldMemOperand(v0, HeapObject::kMapOffset));
|
| -
|
| - // Set up the fixed slots, copy the global object from the previous context.
|
| - __ lw(a2, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
|
| - __ li(a1, Operand(Smi::FromInt(0)));
|
| - __ sw(a3, MemOperand(v0, Context::SlotOffset(Context::CLOSURE_INDEX)));
|
| - __ sw(cp, MemOperand(v0, Context::SlotOffset(Context::PREVIOUS_INDEX)));
|
| - __ sw(a1, MemOperand(v0, Context::SlotOffset(Context::EXTENSION_INDEX)));
|
| - __ sw(a2, MemOperand(v0, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
|
| -
|
| - // Initialize the rest of the slots to undefined.
|
| - __ LoadRoot(a1, Heap::kUndefinedValueRootIndex);
|
| - for (int i = Context::MIN_CONTEXT_SLOTS; i < length; i++) {
|
| - __ sw(a1, MemOperand(v0, Context::SlotOffset(i)));
|
| - }
|
| -
|
| - // Remove the on-stack argument and return.
|
| - __ mov(cp, v0);
|
| - __ DropAndRet(1);
|
| -
|
| - // Need to collect. Call into runtime system.
|
| - __ bind(&gc);
|
| - __ TailCallRuntime(Runtime::kNewFunctionContext, 1, 1);
|
| -}
|
| -
|
| -
|
| void FastNewBlockContextStub::Generate(MacroAssembler* masm) {
|
| // Stack layout on entry:
|
| //
|
|
|