 Chromium Code Reviews
 Chromium Code Reviews Issue 1769833006:
  [arm][stubs] Fix d16-d31 preservation on stub failure  (Closed) 
  Base URL: https://chromium.googlesource.com/v8/v8.git@master
    
  
    Issue 1769833006:
  [arm][stubs] Fix d16-d31 preservation on stub failure  (Closed) 
  Base URL: https://chromium.googlesource.com/v8/v8.git@master| OLD | NEW | 
|---|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/codegen.h" | 5 #include "src/codegen.h" | 
| 6 #include "src/deoptimizer.h" | 6 #include "src/deoptimizer.h" | 
| 7 #include "src/full-codegen/full-codegen.h" | 7 #include "src/full-codegen/full-codegen.h" | 
| 8 #include "src/register-configuration.h" | 8 #include "src/register-configuration.h" | 
| 9 #include "src/safepoint-table.h" | 9 #include "src/safepoint-table.h" | 
| 10 | 10 | 
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 258 __ b(ne, &inner_push_loop); // test for gt? | 258 __ b(ne, &inner_push_loop); // test for gt? | 
| 259 __ add(r4, r4, Operand(kPointerSize)); | 259 __ add(r4, r4, Operand(kPointerSize)); | 
| 260 __ bind(&outer_loop_header); | 260 __ bind(&outer_loop_header); | 
| 261 __ cmp(r4, r1); | 261 __ cmp(r4, r1); | 
| 262 __ b(lt, &outer_push_loop); | 262 __ b(lt, &outer_push_loop); | 
| 263 | 263 | 
| 264 // Check CPU flags for number of registers, setting the Z condition flag. | 264 // Check CPU flags for number of registers, setting the Z condition flag. | 
| 265 __ CheckFor32DRegs(ip); | 265 __ CheckFor32DRegs(ip); | 
| 266 | 266 | 
| 267 __ ldr(r1, MemOperand(r0, Deoptimizer::input_offset())); | 267 __ ldr(r1, MemOperand(r0, Deoptimizer::input_offset())); | 
| 268 int src_offset = FrameDescription::double_registers_offset(); | 268 for (int i = 0; i < config->num_allocatable_double_registers(); ++i) { | 
| 
Jakob Kummerow
2016/03/09 11:07:24
cf. lines 194ff above. Both loops should follow th
 | |
| 269 for (int i = 0; i < DwVfpRegister::kMaxNumRegisters; ++i) { | 269 int code = config->GetAllocatableDoubleCode(i); | 
| 270 if (i == kDoubleRegZero.code()) continue; | 270 DwVfpRegister reg = DwVfpRegister::from_code(code); | 
| 271 if (i == kScratchDoubleReg.code()) continue; | 271 int src_offset = code * kDoubleSize + double_regs_offset; | 
| 272 | 272 __ vldr(reg, r1, src_offset); | 
| 273 const DwVfpRegister reg = DwVfpRegister::from_code(i); | |
| 274 __ vldr(reg, r1, src_offset, i < 16 ? al : ne); | |
| 275 src_offset += kDoubleSize; | |
| 276 } | 273 } | 
| 277 | 274 | 
| 278 // Push state, pc, and continuation from the last output frame. | 275 // Push state, pc, and continuation from the last output frame. | 
| 279 __ ldr(r6, MemOperand(r2, FrameDescription::state_offset())); | 276 __ ldr(r6, MemOperand(r2, FrameDescription::state_offset())); | 
| 280 __ push(r6); | 277 __ push(r6); | 
| 281 __ ldr(r6, MemOperand(r2, FrameDescription::pc_offset())); | 278 __ ldr(r6, MemOperand(r2, FrameDescription::pc_offset())); | 
| 282 __ push(r6); | 279 __ push(r6); | 
| 283 __ ldr(r6, MemOperand(r2, FrameDescription::continuation_offset())); | 280 __ ldr(r6, MemOperand(r2, FrameDescription::continuation_offset())); | 
| 284 __ push(r6); | 281 __ push(r6); | 
| 285 | 282 | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 334 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { | 331 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { | 
| 335 DCHECK(FLAG_enable_embedded_constant_pool); | 332 DCHECK(FLAG_enable_embedded_constant_pool); | 
| 336 SetFrameSlot(offset, value); | 333 SetFrameSlot(offset, value); | 
| 337 } | 334 } | 
| 338 | 335 | 
| 339 | 336 | 
| 340 #undef __ | 337 #undef __ | 
| 341 | 338 | 
| 342 } // namespace internal | 339 } // namespace internal | 
| 343 } // namespace v8 | 340 } // namespace v8 | 
| OLD | NEW |