Chromium Code Reviews| Index: src/arm/deoptimizer-arm.cc |
| diff --git a/src/arm/deoptimizer-arm.cc b/src/arm/deoptimizer-arm.cc |
| index 312bb00df3243ba54788b65927c66554cf6c8abc..d906a4a5dfc3fc54375f4cdfa56e271e325c5c4e 100644 |
| --- a/src/arm/deoptimizer-arm.cc |
| +++ b/src/arm/deoptimizer-arm.cc |
| @@ -1,13 +1,14 @@ |
| -// Copyright 2012 the V8 project authors. All rights reserved. |
| +Fdeop // Copyright 2012 the V8 project authors. All rights reserved. |
|
paul.l...
2015/09/15 02:09:46
extra chars, won't build.
|
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| #include "src/codegen.h" |
| #include "src/deoptimizer.h" |
| #include "src/full-codegen/full-codegen.h" |
| +#include "src/register-configuration.h" |
| #include "src/safepoint-table.h" |
| -namespace v8 { |
| + namespace v8 { |
| namespace internal { |
| const int Deoptimizer::table_entry_size_ = 8; |
| @@ -93,7 +94,7 @@ void Deoptimizer::FillInputFrame(Address tos, JavaScriptFrame* frame) { |
| } |
| input_->SetRegister(sp.code(), reinterpret_cast<intptr_t>(frame->sp())); |
| input_->SetRegister(fp.code(), reinterpret_cast<intptr_t>(frame->fp())); |
| - for (int i = 0; i < DoubleRegister::NumAllocatableRegisters(); i++) { |
| + for (int i = 0; i < DoubleRegister::kMaxNumRegisters; i++) { |
| input_->SetDoubleRegister(i, 0.0); |
| } |
| @@ -142,8 +143,7 @@ void Deoptimizer::TableEntryGenerator::Generate() { |
| // Everything but pc, lr and ip which will be saved but not restored. |
| RegList restored_regs = kJSCallerSaved | kCalleeSaved | ip.bit(); |
| - const int kDoubleRegsSize = |
| - kDoubleSize * DwVfpRegister::kMaxNumAllocatableRegisters; |
| + const int kDoubleRegsSize = kDoubleSize * DwVfpRegister::kMaxNumRegisters; |
| // Save all allocatable VFP registers before messing with them. |
| DCHECK(kDoubleRegZero.code() == 14); |
| @@ -152,11 +152,11 @@ void Deoptimizer::TableEntryGenerator::Generate() { |
| // Check CPU flags for number of registers, setting the Z condition flag. |
| __ CheckFor32DRegs(ip); |
| - // Push registers d0-d13, and possibly d16-d31, on the stack. |
| + // Push registers d0-d15, and possibly d16-d31, on the stack. |
| // If d16-d31 are not pushed, decrease the stack pointer instead. |
| __ vstm(db_w, sp, d16, d31, ne); |
| __ sub(sp, sp, Operand(16 * kDoubleSize), LeaveCC, eq); |
| - __ vstm(db_w, sp, d0, d13); |
| + __ vstm(db_w, sp, d0, d15); |
| // Push all 16 registers (needed to populate FrameDescription::registers_). |
| // TODO(1588) Note that using pc with stm is deprecated, so we should perhaps |
| @@ -211,9 +211,11 @@ void Deoptimizer::TableEntryGenerator::Generate() { |
| // Copy VFP registers to |
| // double_registers_[DoubleRegister::kMaxNumAllocatableRegisters] |
| int double_regs_offset = FrameDescription::double_registers_offset(); |
| - for (int i = 0; i < DwVfpRegister::kMaxNumAllocatableRegisters; ++i) { |
| - int dst_offset = i * kDoubleSize + double_regs_offset; |
| - int src_offset = i * kDoubleSize + kNumberOfRegisters * kPointerSize; |
| + const RegisterConfiguration* config = RegisterConfiguration::ArchDefault(); |
| + for (int i = 0; i < config->num_allocatable_double_registers(); ++i) { |
| + int code = config->GetAllocatableDoubleCode(i); |
| + int dst_offset = code * kDoubleSize + double_regs_offset; |
| + int src_offset = code * kDoubleSize + kNumberOfRegisters * kPointerSize; |
| __ vldr(d0, sp, src_offset); |
| __ vstr(d0, r1, dst_offset); |
| } |