Index: src/a64/macro-assembler-a64-inl.h |
diff --git a/src/a64/macro-assembler-a64-inl.h b/src/a64/macro-assembler-a64-inl.h |
index 98a14b75e92f0e5319009537d0004c48cd0e02d8..09efcc38b7ded2eaab72da37b8f4de9d5f136e4c 100644 |
--- a/src/a64/macro-assembler-a64-inl.h |
+++ b/src/a64/macro-assembler-a64-inl.h |
@@ -588,7 +588,8 @@ void MacroAssembler::Fcmp(const FPRegister& fn, const FPRegister& fm) { |
void MacroAssembler::Fcmp(const FPRegister& fn, double value) { |
ASSERT(allow_macro_instructions_); |
if (value != 0.0) { |
- FPRegister tmp = AppropriateTempFor(fn); |
+ UseScratchRegisterScope temps(this); |
+ FPRegister tmp = temps.AcquireSameSizeAs(fn); |
Fmov(tmp, value); |
fcmp(fn, tmp); |
} else { |
@@ -742,16 +743,19 @@ void MacroAssembler::Fmov(FPRegister fd, double imm) { |
// These cases can be handled by the Assembler. |
fmov(fd, imm); |
} else { |
+ UseScratchRegisterScope temps(this); |
// TODO(all): The Assembler would try to relocate the immediate with |
// Assembler::ldr(const FPRegister& ft, double imm) but it is not |
// implemented yet. |
if (fd.SizeInBits() == kDRegSize) { |
- Mov(Tmp0(), double_to_rawbits(imm)); |
- Fmov(fd, Tmp0()); |
+ Register tmp = temps.AcquireX(); |
+ Mov(tmp, double_to_rawbits(imm)); |
+ Fmov(fd, tmp); |
} else { |
ASSERT(fd.SizeInBits() == kSRegSize); |
- Mov(WTmp0(), float_to_rawbits(static_cast<float>(imm))); |
- Fmov(fd, WTmp0()); |
+ Register tmp = temps.AcquireW(); |
+ Mov(tmp, float_to_rawbits(static_cast<float>(imm))); |
+ Fmov(fd, tmp); |
} |
} |
} |
@@ -1351,9 +1355,11 @@ void MacroAssembler::JumpIfBothSmi(Register value1, |
Label* both_smi_label, |
Label* not_smi_label) { |
STATIC_ASSERT((kSmiTagSize == 1) && (kSmiTag == 0)); |
+ UseScratchRegisterScope temps(this); |
+ Register tmp = temps.AcquireX(); |
// Check if both tag bits are clear. |
- Orr(Tmp0(), value1, value2); |
- JumpIfSmi(Tmp0(), both_smi_label, not_smi_label); |
+ Orr(tmp, value1, value2); |
+ JumpIfSmi(tmp, both_smi_label, not_smi_label); |
} |
@@ -1362,9 +1368,11 @@ void MacroAssembler::JumpIfEitherSmi(Register value1, |
Label* either_smi_label, |
Label* not_smi_label) { |
STATIC_ASSERT((kSmiTagSize == 1) && (kSmiTag == 0)); |
+ UseScratchRegisterScope temps(this); |
+ Register tmp = temps.AcquireX(); |
// Check if either tag bit is clear. |
- And(Tmp0(), value1, value2); |
- JumpIfSmi(Tmp0(), either_smi_label, not_smi_label); |
+ And(tmp, value1, value2); |
+ JumpIfSmi(tmp, either_smi_label, not_smi_label); |
} |
@@ -1437,8 +1445,10 @@ void MacroAssembler::IsObjectJSStringType(Register object, |
void MacroAssembler::Push(Handle<Object> handle) { |
- Mov(Tmp0(), Operand(handle)); |
- Push(Tmp0()); |
+ UseScratchRegisterScope temps(this); |
+ Register tmp = temps.AcquireX(); |
+ Mov(tmp, Operand(handle)); |
+ Push(tmp); |
} |