Index: runtime/vm/intrinsifier_arm.cc |
diff --git a/runtime/vm/intrinsifier_arm.cc b/runtime/vm/intrinsifier_arm.cc |
index 0a62b088ceab9f19663526403d270229cd7b703c..25b53b33227af0d9c848ebf7f8e4603ecd4603d2 100644 |
--- a/runtime/vm/intrinsifier_arm.cc |
+++ b/runtime/vm/intrinsifier_arm.cc |
@@ -531,14 +531,14 @@ void Intrinsifier::Integer_shl(Assembler* assembler) { |
// ((1 << R0) - 1), shifting it to the left, masking R1, then shifting back. |
// high bits = (((1 << R0) - 1) << (32 - R0)) & R1) >> (32 - R0) |
// lo bits = R1 << R0 |
- __ LoadImmediate(R7, 1); |
- __ mov(R7, Operand(R7, LSL, R0)); // R7 <- 1 << R0 |
- __ sub(R7, R7, Operand(1)); // R7 <- R7 - 1 |
+ __ LoadImmediate(NOTFP, 1); |
+ __ mov(NOTFP, Operand(NOTFP, LSL, R0)); // NOTFP <- 1 << R0 |
+ __ sub(NOTFP, NOTFP, Operand(1)); // NOTFP <- NOTFP - 1 |
__ rsb(R6, R0, Operand(32)); // R6 <- 32 - R0 |
- __ mov(R7, Operand(R7, LSL, R6)); // R7 <- R7 << R6 |
- __ and_(R7, R1, Operand(R7)); // R7 <- R7 & R1 |
- __ mov(R7, Operand(R7, LSR, R6)); // R7 <- R7 >> R6 |
- // Now R7 has the bits that fall off of R1 on a left shift. |
+ __ mov(NOTFP, Operand(NOTFP, LSL, R6)); // NOTFP <- NOTFP << R6 |
+ __ and_(NOTFP, R1, Operand(NOTFP)); // NOTFP <- NOTFP & R1 |
+ __ mov(NOTFP, Operand(NOTFP, LSR, R6)); // NOTFP <- NOTFP >> R6 |
+ // Now NOTFP has the bits that fall off of R1 on a left shift. |
__ mov(R1, Operand(R1, LSL, R0)); // R1 gets the low bits. |
const Class& mint_class = Class::Handle( |
@@ -547,7 +547,7 @@ void Intrinsifier::Integer_shl(Assembler* assembler) { |
__ str(R1, FieldAddress(R0, Mint::value_offset())); |
- __ str(R7, FieldAddress(R0, Mint::value_offset() + kWordSize)); |
+ __ str(NOTFP, FieldAddress(R0, Mint::value_offset() + kWordSize)); |
__ Pop(R6); |
__ Ret(); |
__ Bind(&fall_through); |
@@ -621,13 +621,13 @@ static void CompareIntegers(Assembler* assembler, Condition true_condition) { |
// Get left as 64 bit integer. |
Get64SmiOrMint(assembler, R3, R2, R1, &fall_through); |
// Get right as 64 bit integer. |
- Get64SmiOrMint(assembler, R7, R8, R0, &fall_through); |
+ Get64SmiOrMint(assembler, NOTFP, R8, R0, &fall_through); |
// R3: left high. |
// R2: left low. |
- // R7: right high. |
+ // NOTFP: right high. |
// R8: right low. |
- __ cmp(R3, Operand(R7)); // Compare left hi, right high. |
+ __ cmp(R3, Operand(NOTFP)); // Compare left hi, right high. |
__ b(&is_false, hi_false_cond); |
__ b(&is_true, hi_true_cond); |
__ cmp(R2, Operand(R8)); // Compare left lo, right lo. |
@@ -776,8 +776,8 @@ void Intrinsifier::Bigint_lsh(Assembler* assembler) { |
__ Asr(R4, R3, Operand(5)); |
// R8 = &x_digits[0] |
__ add(R8, R1, Operand(TypedData::data_offset() - kHeapObjectTag)); |
- // R7 = &x_digits[x_used] |
- __ add(R7, R8, Operand(R0, LSL, 1)); |
+ // NOTFP = &x_digits[x_used] |
+ __ add(NOTFP, R8, Operand(R0, LSL, 1)); |
// R6 = &r_digits[1] |
__ add(R6, R2, Operand(TypedData::data_offset() - kHeapObjectTag + |
Bigint::kBytesPerDigit)); |
@@ -791,11 +791,11 @@ void Intrinsifier::Bigint_lsh(Assembler* assembler) { |
__ mov(R9, Operand(0)); |
Label loop; |
__ Bind(&loop); |
- __ ldr(R4, Address(R7, -Bigint::kBytesPerDigit, Address::PreIndex)); |
+ __ ldr(R4, Address(NOTFP, -Bigint::kBytesPerDigit, Address::PreIndex)); |
__ orr(R9, R9, Operand(R4, LSR, R0)); |
__ str(R9, Address(R6, -Bigint::kBytesPerDigit, Address::PreIndex)); |
__ mov(R9, Operand(R4, LSL, R1)); |
- __ teq(R7, Operand(R8)); |
+ __ teq(NOTFP, Operand(R8)); |
__ b(&loop, NE); |
__ str(R9, Address(R6, -Bigint::kBytesPerDigit, Address::PreIndex)); |
// Returning Object::null() is not required, since this method is private. |
@@ -816,9 +816,9 @@ void Intrinsifier::Bigint_rsh(Assembler* assembler) { |
__ Asr(R4, R3, Operand(5)); |
// R6 = &r_digits[0] |
__ add(R6, R2, Operand(TypedData::data_offset() - kHeapObjectTag)); |
- // R7 = &x_digits[n ~/ _DIGIT_BITS] |
- __ add(R7, R1, Operand(TypedData::data_offset() - kHeapObjectTag)); |
- __ add(R7, R7, Operand(R4, LSL, 2)); |
+ // NOTFP = &x_digits[n ~/ _DIGIT_BITS] |
+ __ add(NOTFP, R1, Operand(TypedData::data_offset() - kHeapObjectTag)); |
+ __ add(NOTFP, NOTFP, Operand(R4, LSL, 2)); |
// R8 = &r_digits[x_used - n ~/ _DIGIT_BITS - 1] |
__ add(R4, R4, Operand(1)); |
__ rsb(R4, R4, Operand(R0, ASR, 1)); |
@@ -828,13 +828,13 @@ void Intrinsifier::Bigint_rsh(Assembler* assembler) { |
// R0 = 32 - R1 |
__ rsb(R0, R1, Operand(32)); |
// R9 = x_digits[n ~/ _DIGIT_BITS] >> (n % _DIGIT_BITS) |
- __ ldr(R9, Address(R7, Bigint::kBytesPerDigit, Address::PostIndex)); |
+ __ ldr(R9, Address(NOTFP, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ mov(R9, Operand(R9, LSR, R1)); |
Label loop_entry; |
__ b(&loop_entry); |
Label loop; |
__ Bind(&loop); |
- __ ldr(R4, Address(R7, Bigint::kBytesPerDigit, Address::PostIndex)); |
+ __ ldr(R4, Address(NOTFP, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ orr(R9, R9, Operand(R4, LSL, R0)); |
__ str(R9, Address(R6, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ mov(R9, Operand(R4, LSR, R1)); |
@@ -867,8 +867,8 @@ void Intrinsifier::Bigint_absAdd(Assembler* assembler) { |
// R8 = &r_digits[0] |
__ add(R8, R8, Operand(TypedData::data_offset() - kHeapObjectTag)); |
- // R7 = &digits[a_used >> 1], a_used is Smi. |
- __ add(R7, R1, Operand(R2, LSL, 1)); |
+ // NOTFP = &digits[a_used >> 1], a_used is Smi. |
+ __ add(NOTFP, R1, Operand(R2, LSL, 1)); |
// R6 = &digits[used >> 1], used is Smi. |
__ add(R6, R1, Operand(R0, LSL, 1)); |
@@ -880,7 +880,7 @@ void Intrinsifier::Bigint_absAdd(Assembler* assembler) { |
__ ldr(R4, Address(R1, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ ldr(R9, Address(R3, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ adcs(R4, R4, Operand(R9)); |
- __ teq(R1, Operand(R7)); // Does not affect carry flag. |
+ __ teq(R1, Operand(NOTFP)); // Does not affect carry flag. |
__ str(R4, Address(R8, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ b(&add_loop, NE); |
@@ -927,8 +927,8 @@ void Intrinsifier::Bigint_absSub(Assembler* assembler) { |
// R8 = &r_digits[0] |
__ add(R8, R8, Operand(TypedData::data_offset() - kHeapObjectTag)); |
- // R7 = &digits[a_used >> 1], a_used is Smi. |
- __ add(R7, R1, Operand(R2, LSL, 1)); |
+ // NOTFP = &digits[a_used >> 1], a_used is Smi. |
+ __ add(NOTFP, R1, Operand(R2, LSL, 1)); |
// R6 = &digits[used >> 1], used is Smi. |
__ add(R6, R1, Operand(R0, LSL, 1)); |
@@ -940,7 +940,7 @@ void Intrinsifier::Bigint_absSub(Assembler* assembler) { |
__ ldr(R4, Address(R1, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ ldr(R9, Address(R3, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ sbcs(R4, R4, Operand(R9)); |
- __ teq(R1, Operand(R7)); // Does not affect carry flag. |
+ __ teq(R1, Operand(NOTFP)); // Does not affect carry flag. |
__ str(R4, Address(R8, Bigint::kBytesPerDigit, Address::PostIndex)); |
__ b(&sub_loop, NE); |
@@ -1103,18 +1103,18 @@ void Intrinsifier::Bigint_sqrAdd(Assembler* assembler) { |
__ tst(R3, Operand(R3)); |
__ b(&x_zero, EQ); |
- // R7 = ajp = &a_digits[i] |
+ // NOTFP = ajp = &a_digits[i] |
__ ldr(R1, Address(SP, 1 * kWordSize)); // a_digits |
__ add(R1, R1, Operand(R2, LSL, 2)); // j == 2*i, i is Smi. |
- __ add(R7, R1, Operand(TypedData::data_offset() - kHeapObjectTag)); |
+ __ add(NOTFP, R1, Operand(TypedData::data_offset() - kHeapObjectTag)); |
// R8:R0 = t = x*x + *ajp |
- __ ldr(R0, Address(R7, 0)); |
+ __ ldr(R0, Address(NOTFP, 0)); |
__ mov(R8, Operand(0)); |
__ umaal(R0, R8, R3, R3); // R8:R0 = R3*R3 + R8 + R0. |
// *ajp++ = low32(t) = R0 |
- __ str(R0, Address(R7, Bigint::kBytesPerDigit, Address::PostIndex)); |
+ __ str(R0, Address(NOTFP, Bigint::kBytesPerDigit, Address::PostIndex)); |
// R8 = low32(c) = high32(t) |
// R9 = high32(c) = 0 |
@@ -1132,7 +1132,7 @@ void Intrinsifier::Bigint_sqrAdd(Assembler* assembler) { |
__ Bind(&loop); |
// x: R3 |
// xip: R4 |
- // ajp: R7 |
+ // ajp: NOTFP |
// c: R9:R8 |
// t: R2:R1:R0 (not live at loop entry) |
// n: R6 |
@@ -1149,13 +1149,13 @@ void Intrinsifier::Bigint_sqrAdd(Assembler* assembler) { |
__ adds(R0, R0, Operand(R8)); |
__ adcs(R1, R1, Operand(R9)); |
__ adc(R2, R2, Operand(0)); // R2:R1:R0 = 2*x*xi + c. |
- __ ldr(R8, Address(R7, 0)); // R8 = aj = *ajp. |
+ __ ldr(R8, Address(NOTFP, 0)); // R8 = aj = *ajp. |
__ adds(R0, R0, Operand(R8)); |
__ adcs(R8, R1, Operand(0)); |
__ adc(R9, R2, Operand(0)); // R9:R8:R0 = 2*x*xi + c + aj. |
// *ajp++ = low32(t) = R0 |
- __ str(R0, Address(R7, Bigint::kBytesPerDigit, Address::PostIndex)); |
+ __ str(R0, Address(NOTFP, Bigint::kBytesPerDigit, Address::PostIndex)); |
// while (--n >= 0) |
__ subs(R6, R6, Operand(1)); // --n |
@@ -1163,7 +1163,7 @@ void Intrinsifier::Bigint_sqrAdd(Assembler* assembler) { |
__ Bind(&done); |
// uint32_t aj = *ajp |
- __ ldr(R0, Address(R7, 0)); |
+ __ ldr(R0, Address(NOTFP, 0)); |
// uint64_t t = aj + c |
__ adds(R8, R8, Operand(R0)); |
@@ -1171,7 +1171,7 @@ void Intrinsifier::Bigint_sqrAdd(Assembler* assembler) { |
// *ajp = low32(t) = R8 |
// *(ajp + 1) = high32(t) = R9 |
- __ strd(R8, R9, R7, 0); |
+ __ strd(R8, R9, NOTFP, 0); |
__ Bind(&x_zero); |
__ mov(R0, Operand(Smi::RawValue(1))); // One digit processed. |
@@ -1677,11 +1677,11 @@ void Intrinsifier::OneByteString_getHashCode(Assembler* assembler) { |
// hash_ ^= hash_ >> 6; |
// Get one characters (ch). |
__ Bind(&loop); |
- __ ldrb(R7, Address(R8, 0)); |
- // R7: ch. |
+ __ ldrb(NOTFP, Address(R8, 0)); |
+ // NOTFP: ch. |
__ add(R3, R3, Operand(1)); |
__ add(R8, R8, Operand(1)); |
- __ add(R0, R0, Operand(R7)); |
+ __ add(R0, R0, Operand(NOTFP)); |
__ add(R0, R0, Operand(R0, LSL, 10)); |
__ eor(R0, R0, Operand(R0, LSR, 6)); |
__ cmp(R3, Operand(R2)); |
@@ -1739,8 +1739,8 @@ static void TryAllocateOnebyteString(Assembler* assembler, |
// R1: potential next object start. |
// R2: allocation size. |
// R3: heap. |
- __ ldr(R7, Address(R3, Heap::EndOffset(space))); |
- __ cmp(R1, Operand(R7)); |
+ __ ldr(NOTFP, Address(R3, Heap::EndOffset(space))); |
+ __ cmp(R1, Operand(NOTFP)); |
__ b(&fail, CS); |
// Successfully allocated the object(s), now update top to point to |
@@ -1824,20 +1824,20 @@ void Intrinsifier::OneByteString_substringUnchecked(Assembler* assembler) { |
// R2: Untagged number of bytes to copy. |
// R0: Tagged result string. |
// R8: Pointer into R3. |
- // R7: Pointer into R0. |
+ // NOTFP: Pointer into R0. |
// R1: Scratch register. |
Label loop, done; |
__ cmp(R2, Operand(0)); |
__ b(&done, LE); |
__ mov(R8, Operand(R3)); |
- __ mov(R7, Operand(R0)); |
+ __ mov(NOTFP, Operand(R0)); |
__ Bind(&loop); |
__ ldrb(R1, Address(R8, 0)); |
__ AddImmediate(R8, 1); |
__ sub(R2, R2, Operand(1)); |
__ cmp(R2, Operand(0)); |
- __ strb(R1, FieldAddress(R7, OneByteString::data_offset())); |
- __ AddImmediate(R7, 1); |
+ __ strb(R1, FieldAddress(NOTFP, OneByteString::data_offset())); |
+ __ AddImmediate(NOTFP, 1); |
__ b(&loop, GT); |
__ Bind(&done); |