Chromium Code Reviews| Index: src/arm/macro-assembler-arm.cc |
| =================================================================== |
| --- src/arm/macro-assembler-arm.cc (revision 12826) |
| +++ src/arm/macro-assembler-arm.cc (working copy) |
| @@ -3216,6 +3216,28 @@ |
| } |
| +void MacroAssembler::VFPCopyFields(Register dst, Register src, int field_count, |
| + SwVfpRegister first, SwVfpRegister last) { |
| + ASSERT(CpuFeatures::IsEnabled(VFP2)); |
| + ASSERT_LE(first.code(), last.code()); |
| + |
| + if (FLAG_debug_code) { |
| + tst(dst, Operand(kHeapObjectTag)); |
| + tst(src, Operand(kHeapObjectTag), eq); |
| + stop("src and dst for VFPCopyFields must be untagged", ne); |
| + } |
| + |
| + int available_words = last.code() - first.code() + 1; |
| + while (field_count > 0) { |
| + int words_to_copy = Min(field_count, available_words); |
| + SwVfpRegister copy_last = |
| + SwVfpRegister::from_code(first.code() + words_to_copy - 1); |
| + vldm(ia_w, src, first, copy_last); |
| + vstm(ia_w, dst, first, copy_last); |
| + field_count -= words_to_copy; |
| + } |
| +} |
|
danno
2012/10/30 14:28:59
nit: two spaces
|
| + |
| void MacroAssembler::CopyBytes(Register src, |
| Register dst, |
| Register length, |