Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Unified Diff: src/arm/macro-assembler-arm.cc

Issue 6366016: ARM: Add support for DoMathAbs with double inputs.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/arm/macro-assembler-arm.cc
===================================================================
--- src/arm/macro-assembler-arm.cc (revision 6500)
+++ src/arm/macro-assembler-arm.cc (working copy)
@@ -467,29 +467,39 @@
void MacroAssembler::PushSafepointRegistersAndDoubles() {
- PushSafepointRegisters();
sub(sp, sp, Operand(DwVfpRegister::kNumAllocatableRegisters *
kDoubleSize));
for (int i = 0; i < DwVfpRegister::kNumAllocatableRegisters; i++) {
vstr(DwVfpRegister::FromAllocationIndex(i), sp, i * kDoubleSize);
}
+ PushSafepointRegisters();
Mads Ager (chromium) 2011/01/27 08:27:56 What is the motivation for changing this? Please u
Alexandre 2011/01/28 13:57:59 Reversed. We usually want to patch general purpos
}
void MacroAssembler::PopSafepointRegistersAndDoubles() {
+ PopSafepointRegisters();
Mads Ager (chromium) 2011/01/27 08:27:56 Undo please. :)
Alexandre 2011/01/28 13:57:59 Done.
for (int i = 0; i < DwVfpRegister::kNumAllocatableRegisters; i++) {
vldr(DwVfpRegister::FromAllocationIndex(i), sp, i * kDoubleSize);
}
add(sp, sp, Operand(DwVfpRegister::kNumAllocatableRegisters *
kDoubleSize));
- PopSafepointRegisters();
}
+void MacroAssembler::StoreToSafepointRegistersAndDoublesSlot(Register reg) {
+ str(reg, SafepointRegistersAndDoublesSlot(reg));
+}
+
+
void MacroAssembler::StoreToSafepointRegisterSlot(Register reg) {
str(reg, SafepointRegisterSlot(reg));
}
+void MacroAssembler::LoadFromSafepointRegisterSlot(Register reg) {
+ ldr(reg, SafepointRegisterSlot(reg));
+}
+
+
int MacroAssembler::SafepointRegisterStackIndex(int reg_code) {
// The registers are pushed starting with the highest encoding,
// which means that lowest encodings are closest to the stack pointer.
@@ -503,6 +513,12 @@
}
+MemOperand MacroAssembler::SafepointRegistersAndDoublesSlot(Register reg) {
+ // General purpose registers are pushed last on the stack.
+ return MemOperand(sp, SafepointRegisterStackIndex(reg.code()) * kInstrSize);
Mads Ager (chromium) 2011/01/27 08:27:56 kInstrSize -> kPointerSize. This is an index into
Alexandre 2011/01/28 13:57:59 Done.
+}
+
+
void MacroAssembler::Ldrd(Register dst1, Register dst2,
const MemOperand& src, Condition cond) {
ASSERT(src.rm().is(no_reg));

Powered by Google App Engine
This is Rietveld 408576698