Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 5cc02e4d7eb5a10d3becea138da155bac6b3ae92..12742fbea1a3ea5c962bace28702338797d0b2a8 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -49,6 +49,16 @@ void FastNewClosureStub::InitializeInterfaceDescriptor( |
} |
+void FastNewContextStub::InitializeInterfaceDescriptor( |
+ Isolate* isolate, |
+ CodeStubInterfaceDescriptor* descriptor) { |
+ static Register registers[] = { r1 }; |
+ descriptor->register_param_count_ = 1; |
+ descriptor->register_params_ = registers; |
+ descriptor->deoptimization_handler_ = NULL; |
+} |
+ |
+ |
void ToNumberStub::InitializeInterfaceDescriptor( |
Isolate* isolate, |
CodeStubInterfaceDescriptor* descriptor) { |
@@ -461,48 +471,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), r0, r1, r2, &gc, TAG_OBJECT); |
- |
- // Load the function from the stack. |
- __ ldr(r3, MemOperand(sp, 0)); |
- |
- // Set up the object header. |
- __ LoadRoot(r1, Heap::kFunctionContextMapRootIndex); |
- __ mov(r2, Operand(Smi::FromInt(length))); |
- __ str(r2, FieldMemOperand(r0, FixedArray::kLengthOffset)); |
- __ str(r1, FieldMemOperand(r0, HeapObject::kMapOffset)); |
- |
- // Set up the fixed slots, copy the global object from the previous context. |
- __ ldr(r2, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); |
- __ mov(r1, Operand(Smi::FromInt(0))); |
- __ str(r3, MemOperand(r0, Context::SlotOffset(Context::CLOSURE_INDEX))); |
- __ str(cp, MemOperand(r0, Context::SlotOffset(Context::PREVIOUS_INDEX))); |
- __ str(r1, MemOperand(r0, Context::SlotOffset(Context::EXTENSION_INDEX))); |
- __ str(r2, MemOperand(r0, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); |
- |
- // Initialize the rest of the slots to undefined. |
- __ LoadRoot(r1, Heap::kUndefinedValueRootIndex); |
- for (int i = Context::MIN_CONTEXT_SLOTS; i < length; i++) { |
- __ str(r1, MemOperand(r0, Context::SlotOffset(i))); |
- } |
- |
- // Remove the on-stack argument and return. |
- __ mov(cp, r0); |
- __ pop(); |
- __ Ret(); |
- |
- // Need to collect. Call into runtime system. |
- __ bind(&gc); |
- __ TailCallRuntime(Runtime::kNewFunctionContext, 1, 1); |
-} |
- |
- |
void FastNewBlockContextStub::Generate(MacroAssembler* masm) { |
// Stack layout on entry: |
// |