Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 478e6368a62f0359fbd7f1fc501b6482542f6c30..067634e954cf816d5205d4edb3bb115659eb90e4 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -4632,16 +4632,17 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, |
const int frame_alignment = MacroAssembler::ActivationFrameAlignment(); |
if (save_doubles) { |
+ CpuFeatures::Scope scope(FPU); |
// The stack must be allign to 0 modulo 8 for stores with sdc1. |
ASSERT(kDoubleSize == frame_alignment); |
if (frame_alignment > 0) { |
ASSERT(IsPowerOf2(frame_alignment)); |
And(sp, sp, Operand(-frame_alignment)); // Align stack. |
} |
- int space = FPURegister::kNumRegisters * kDoubleSize; |
+ int space = FPURegister::kMaxNumRegisters * kDoubleSize; |
Subu(sp, sp, Operand(space)); |
// Remember: we only need to save every 2nd double FPU value. |
- for (int i = 0; i < FPURegister::kNumRegisters; i+=2) { |
+ for (int i = 0; i < FPURegister::kMaxNumRegisters; i+=2) { |
FPURegister reg = FPURegister::from_code(i); |
sdc1(reg, MemOperand(sp, i * kDoubleSize)); |
} |
@@ -4669,9 +4670,10 @@ void MacroAssembler::LeaveExitFrame(bool save_doubles, |
bool do_return) { |
// Optionally restore all double registers. |
if (save_doubles) { |
+ CpuFeatures::Scope scope(FPU); |
// Remember: we only need to restore every 2nd double FPU value. |
lw(t8, MemOperand(fp, ExitFrameConstants::kSPOffset)); |
- for (int i = 0; i < FPURegister::kNumRegisters; i+=2) { |
+ for (int i = 0; i < FPURegister::kMaxNumRegisters; i+=2) { |
FPURegister reg = FPURegister::from_code(i); |
ldc1(reg, MemOperand(t8, i * kDoubleSize + kPointerSize)); |
} |
@@ -5448,6 +5450,7 @@ void MacroAssembler::ClampDoubleToUint8(Register result_reg, |
void MacroAssembler::TestJSArrayForAllocationSiteInfo( |
Register receiver_reg, |
Register scratch_reg, |
+ Condition cond, |
Label* allocation_info_present) { |
Label no_info_available; |
ExternalReference new_space_start = |
@@ -5461,7 +5464,7 @@ void MacroAssembler::TestJSArrayForAllocationSiteInfo( |
lw(at, MemOperand(at)); |
Branch(&no_info_available, gt, scratch_reg, Operand(at)); |
lw(scratch_reg, MemOperand(scratch_reg, -AllocationSiteInfo::kSize)); |
- Branch(allocation_info_present, eq, scratch_reg, |
+ Branch(allocation_info_present, cond, scratch_reg, |
Operand(Handle<Map>(isolate()->heap()->allocation_site_info_map()))); |
bind(&no_info_available); |
} |