| Index: src/a64/code-stubs-a64.cc
|
| diff --git a/src/a64/code-stubs-a64.cc b/src/a64/code-stubs-a64.cc
|
| index b8f5809fb86ed29f21e27b87af2d4202ad6033ee..ce48de0b54c83f5b9eb2dc4183b920fbcc36d529 100644
|
| --- a/src/a64/code-stubs-a64.cc
|
| +++ b/src/a64/code-stubs-a64.cc
|
| @@ -1222,7 +1222,8 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| // A64 simulator does not currently simulate FPCR (where the rounding
|
| // mode is set), so test the operation with some debug code.
|
| if (masm->emit_debug_code()) {
|
| - Register temp = masm->Tmp1();
|
| + UseScratchRegisterScope temps(masm);
|
| + Register temp = temps.AcquireX();
|
| // d5 zero_double The value +0.0 as a double.
|
| __ Fneg(scratch0_double, zero_double);
|
| // Verify that we correctly generated +0.0 and -0.0.
|
| @@ -1500,7 +1501,8 @@ void CEntryStub::GenerateCore(MacroAssembler* masm,
|
| if (__ emit_debug_code()) {
|
| // Verify that the slot below fp[kSPOffset]-8 points to the return location
|
| // (currently in x12).
|
| - Register temp = masm->Tmp1();
|
| + UseScratchRegisterScope temps(masm);
|
| + Register temp = temps.AcquireX();
|
| __ Ldr(temp, MemOperand(fp, ExitFrameConstants::kSPOffset));
|
| __ Ldr(temp, MemOperand(temp, -static_cast<int64_t>(kXRegSizeInBytes)));
|
| __ Cmp(temp, x12);
|
| @@ -4712,9 +4714,11 @@ void RecordWriteStub::GenerateIncremental(MacroAssembler* masm, Mode mode) {
|
| masm, kUpdateRememberedSetOnNoNeedToInformIncrementalMarker, mode);
|
| InformIncrementalMarker(masm, mode);
|
| regs_.Restore(masm); // Restore the extra scratch registers we used.
|
| +
|
| + UseScratchRegisterScope temps(masm);
|
| __ RememberedSetHelper(object_,
|
| address_,
|
| - value_,
|
| + value_, // scratch1
|
| save_fp_regs_mode_,
|
| MacroAssembler::kReturnAtEnd);
|
|
|
| @@ -4775,9 +4779,10 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker(
|
|
|
| regs_.Restore(masm); // Restore the extra scratch registers we used.
|
| if (on_no_need == kUpdateRememberedSetOnNoNeedToInformIncrementalMarker) {
|
| + UseScratchRegisterScope temps(masm);
|
| __ RememberedSetHelper(object_,
|
| address_,
|
| - value_,
|
| + value_, // scratch1
|
| save_fp_regs_mode_,
|
| MacroAssembler::kReturnAtEnd);
|
| } else {
|
| @@ -4818,9 +4823,10 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker(
|
|
|
| regs_.Restore(masm); // Restore the extra scratch registers we used.
|
| if (on_no_need == kUpdateRememberedSetOnNoNeedToInformIncrementalMarker) {
|
| + UseScratchRegisterScope temps(masm);
|
| __ RememberedSetHelper(object_,
|
| address_,
|
| - value_,
|
| + value_, // scratch1
|
| save_fp_regs_mode_,
|
| MacroAssembler::kReturnAtEnd);
|
| } else {
|
| @@ -4851,9 +4857,10 @@ void RecordWriteStub::Generate(MacroAssembler* masm) {
|
| }
|
|
|
| if (remembered_set_action_ == EMIT_REMEMBERED_SET) {
|
| + UseScratchRegisterScope temps(masm);
|
| __ RememberedSetHelper(object_,
|
| address_,
|
| - value_,
|
| + value_, // scratch1
|
| save_fp_regs_mode_,
|
| MacroAssembler::kReturnAtEnd);
|
| }
|
| @@ -5085,12 +5092,11 @@ void NameDictionaryLookupStub::GeneratePositiveLookup(
|
| __ Add(scratch2, scratch2, Operand(scratch2, LSL, 1));
|
|
|
| // Check if the key is identical to the name.
|
| + UseScratchRegisterScope temps(masm);
|
| + Register scratch3 = temps.AcquireX();
|
| __ Add(scratch2, elements, Operand(scratch2, LSL, kPointerSizeLog2));
|
| - // TODO(jbramley): We need another scratch here, but some callers can't
|
| - // provide a scratch3 so we have to use Tmp1(). We should find a clean way
|
| - // to make it unavailable to the MacroAssembler for a short time.
|
| - __ Ldr(__ Tmp1(), FieldMemOperand(scratch2, kElementsStartOffset));
|
| - __ Cmp(name, __ Tmp1());
|
| + __ Ldr(scratch3, FieldMemOperand(scratch2, kElementsStartOffset));
|
| + __ Cmp(name, scratch3);
|
| __ B(eq, done);
|
| }
|
|
|
|
|