diff options
author | Steve Block <steveblock@google.com> | 2010-07-08 12:39:36 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-07-08 12:41:04 +0100 |
commit | 8defd9ff6930b4e24729971a61cf7469daf119be (patch) | |
tree | 3be589af44201dcaead530f4046cb63e7c9b68c4 /src/arm/virtual-frame-arm.cc | |
parent | 85dec77e821ae98054f8e09ba3180c148a9264d6 (diff) | |
download | android_external_v8-8defd9ff6930b4e24729971a61cf7469daf119be.tar.gz android_external_v8-8defd9ff6930b4e24729971a61cf7469daf119be.tar.bz2 android_external_v8-8defd9ff6930b4e24729971a61cf7469daf119be.zip |
Update V8 to r5017 as required by WebKit r62496
Change-Id: I1b4b7718d1d77ceef07f543e9150a2cb3a628f3a
Diffstat (limited to 'src/arm/virtual-frame-arm.cc')
-rw-r--r-- | src/arm/virtual-frame-arm.cc | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/arm/virtual-frame-arm.cc b/src/arm/virtual-frame-arm.cc index 8b90f424..2ddfd0fd 100644 --- a/src/arm/virtual-frame-arm.cc +++ b/src/arm/virtual-frame-arm.cc @@ -482,6 +482,32 @@ void VirtualFrame::SpillAllButCopyTOSToR0() { } +void VirtualFrame::SpillAllButCopyTOSToR1() { + switch (top_of_stack_state_) { + case NO_TOS_REGISTERS: + __ ldr(r1, MemOperand(sp, 0)); + break; + case R0_TOS: + __ push(r0); + __ mov(r1, r0); + break; + case R1_TOS: + __ push(r1); + break; + case R0_R1_TOS: + __ Push(r1, r0); + __ mov(r1, r0); + break; + case R1_R0_TOS: + __ Push(r0, r1); + break; + default: + UNREACHABLE(); + } + top_of_stack_state_ = NO_TOS_REGISTERS; +} + + void VirtualFrame::SpillAllButCopyTOSToR1R0() { switch (top_of_stack_state_) { case NO_TOS_REGISTERS: @@ -524,6 +550,24 @@ Register VirtualFrame::Peek() { } +Register VirtualFrame::Peek2() { + AssertIsNotSpilled(); + switch (top_of_stack_state_) { + case NO_TOS_REGISTERS: + case R0_TOS: + case R0_R1_TOS: + MergeTOSTo(R0_R1_TOS); + return r1; + case R1_TOS: + case R1_R0_TOS: + MergeTOSTo(R1_R0_TOS); + return r0; + } + UNREACHABLE(); + return no_reg; +} + + void VirtualFrame::Dup() { if (SpilledScope::is_spilled()) { __ ldr(ip, MemOperand(sp, 0)); |