Chromium Code Reviews| Index: src/arm/lithium-gap-resolver-arm.cc |
| diff --git a/src/arm/lithium-gap-resolver-arm.cc b/src/arm/lithium-gap-resolver-arm.cc |
| index c100720d89cd6130ad3e3a04a9528c48c045f5f7..e510dc1412dece9aeeffdea66774655daad32c91 100644 |
| --- a/src/arm/lithium-gap-resolver-arm.cc |
| +++ b/src/arm/lithium-gap-resolver-arm.cc |
| @@ -171,8 +171,12 @@ void LGapResolver::BreakCycle(int index) { |
| } else if (source->IsStackSlot()) { |
| __ ldr(kSavedValueRegister, cgen_->ToMemOperand(source)); |
| } else if (source->IsDoubleRegister()) { |
| + ASSERT(CpuFeatures::IsSupported(VFP2)); |
|
Jakob Kummerow
2012/11/28 16:28:22
nit: not needed
danno
2012/11/30 16:23:24
Done.
|
| + CpuFeatures::Scope scope(VFP2); |
| __ vmov(kScratchDoubleReg, cgen_->ToDoubleRegister(source)); |
| } else if (source->IsDoubleStackSlot()) { |
| + ASSERT(CpuFeatures::IsSupported(VFP2)); |
|
Jakob Kummerow
2012/11/28 16:28:22
nit: not needed
danno
2012/11/30 16:23:24
Done.
|
| + CpuFeatures::Scope scope(VFP2); |
| __ vldr(kScratchDoubleReg, cgen_->ToMemOperand(source)); |
| } else { |
| UNREACHABLE(); |
| @@ -192,8 +196,12 @@ void LGapResolver::RestoreValue() { |
| } else if (saved_destination_->IsStackSlot()) { |
| __ str(kSavedValueRegister, cgen_->ToMemOperand(saved_destination_)); |
| } else if (saved_destination_->IsDoubleRegister()) { |
| + ASSERT(CpuFeatures::IsSupported(VFP2)); |
|
Jakob Kummerow
2012/11/28 16:28:22
nit: not needed
danno
2012/11/30 16:23:24
Done.
|
| + CpuFeatures::Scope scope(VFP2); |
| __ vmov(cgen_->ToDoubleRegister(saved_destination_), kScratchDoubleReg); |
| } else if (saved_destination_->IsDoubleStackSlot()) { |
| + ASSERT(CpuFeatures::IsSupported(VFP2)); |
|
Jakob Kummerow
2012/11/28 16:28:22
nit: not needed
danno
2012/11/30 16:23:24
Done.
|
| + CpuFeatures::Scope scope(VFP2); |
| __ vstr(kScratchDoubleReg, cgen_->ToMemOperand(saved_destination_)); |
| } else { |
| UNREACHABLE(); |
| @@ -229,7 +237,9 @@ void LGapResolver::EmitMove(int index) { |
| MemOperand destination_operand = cgen_->ToMemOperand(destination); |
| if (in_cycle_) { |
| if (!destination_operand.OffsetIsUint12Encodable()) { |
| - // ip is overwritten while saving the value to the destination. |
| + ASSERT(CpuFeatures::IsSupported(VFP2)); |
|
Jakob Kummerow
2012/11/28 16:28:22
nit: not needed
danno
2012/11/30 16:23:24
Done.
|
| + CpuFeatures::Scope scope(VFP2); |
| + // ip is overwritten while saving the value to the destination. |
| // Therefore we can't use ip. It is OK if the read from the source |
| // destroys ip, since that happens before the value is read. |
| __ vldr(kScratchDoubleReg.low(), source_operand); |
| @@ -267,7 +277,9 @@ void LGapResolver::EmitMove(int index) { |
| } |
| } else if (source->IsDoubleRegister()) { |
| - DoubleRegister source_register = cgen_->ToDoubleRegister(source); |
| + ASSERT(CpuFeatures::IsSupported(VFP2)); |
|
Jakob Kummerow
2012/11/28 16:28:22
nit: not needed
danno
2012/11/30 16:23:24
Done.
|
| + CpuFeatures::Scope scope(VFP2); |
| + DwVfpRegister source_register = cgen_->ToDoubleRegister(source); |
| if (destination->IsDoubleRegister()) { |
| __ vmov(cgen_->ToDoubleRegister(destination), source_register); |
| } else { |
| @@ -276,7 +288,9 @@ void LGapResolver::EmitMove(int index) { |
| } |
| } else if (source->IsDoubleStackSlot()) { |
| - MemOperand source_operand = cgen_->ToMemOperand(source); |
| + ASSERT(CpuFeatures::IsSupported(VFP2)); |
|
Jakob Kummerow
2012/11/28 16:28:22
nit: not needed
danno
2012/11/30 16:23:24
Done.
|
| + CpuFeatures::Scope scope(VFP2); |
| + MemOperand source_operand = cgen_->ToMemOperand(source); |
| if (destination->IsDoubleRegister()) { |
| __ vldr(cgen_->ToDoubleRegister(destination), source_operand); |
| } else { |