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: |
// |