Index: src/arm/virtual-frame-arm.cc |
=================================================================== |
--- src/arm/virtual-frame-arm.cc (revision 4554) |
+++ src/arm/virtual-frame-arm.cc (working copy) |
@@ -541,6 +541,19 @@ |
} |
+void VirtualFrame::EmitPush(Operand operand) { |
+ element_count_++; |
+ if (SpilledScope::is_spilled()) { |
+ __ mov(r0, operand); |
+ __ push(r0); |
+ return; |
+ } |
+ EnsureOneFreeTOSRegister(); |
+ top_of_stack_state_ = kStateAfterPush[top_of_stack_state_]; |
+ __ mov(kTopRegister[top_of_stack_state_], operand); |
+} |
+ |
+ |
void VirtualFrame::EmitPush(MemOperand operand) { |
element_count_++; |
if (SpilledScope::is_spilled()) { |
@@ -554,6 +567,19 @@ |
} |
+void VirtualFrame::EmitPushRoot(Heap::RootListIndex index) { |
+ element_count_++; |
+ if (SpilledScope::is_spilled()) { |
+ __ LoadRoot(r0, index); |
+ __ push(r0); |
+ return; |
+ } |
+ EnsureOneFreeTOSRegister(); |
+ top_of_stack_state_ = kStateAfterPush[top_of_stack_state_]; |
+ __ LoadRoot(kTopRegister[top_of_stack_state_], index); |
+} |
+ |
+ |
void VirtualFrame::EmitPushMultiple(int count, int src_regs) { |
ASSERT(SpilledScope::is_spilled()); |
Adjust(count); |