Index: runtime/vm/intrinsifier_arm64.cc |
diff --git a/runtime/vm/intrinsifier_arm64.cc b/runtime/vm/intrinsifier_arm64.cc |
index f580138edcdcd443d99289d6a7710b95e512e4ef..f400c02a1fb5b7e2fa1b797be44d72203a37e629 100644 |
--- a/runtime/vm/intrinsifier_arm64.cc |
+++ b/runtime/vm/intrinsifier_arm64.cc |
@@ -197,7 +197,7 @@ static int GetScaleFactor(intptr_t size) { |
__ b(&fall_through, GT); \ |
__ LslImmediate(R2, R2, scale_shift); \ |
const intptr_t fixed_size = sizeof(Raw##type_name) + kObjectAlignment - 1; \ |
- __ AddImmediate(R2, R2, fixed_size); \ |
+ __ AddImmediate(R2, fixed_size); \ |
__ andi(R2, R2, Immediate(~(kObjectAlignment - 1))); \ |
Heap::Space space = Heap::kNew; \ |
__ ldr(R3, Address(THR, Thread::heap_offset())); \ |
@@ -219,7 +219,7 @@ static int GetScaleFactor(intptr_t size) { |
/* Successfully allocated the object(s), now update top to point to */ \ |
/* next object start and initialize the object. */ \ |
__ str(R1, Address(R3, Heap::TopOffset(space))); \ |
- __ AddImmediate(R0, R0, kHeapObjectTag); \ |
+ __ AddImmediate(R0, kHeapObjectTag); \ |
NOT_IN_PRODUCT(__ UpdateAllocationStatsWithSize(cid, R2, space)); \ |
/* Initialize the tags. */ \ |
/* R0: new object start as a tagged pointer. */ \ |
@@ -1856,19 +1856,19 @@ void GenerateSubstringMatchesSpecialization(Assembler* assembler, |
__ b(return_false, GT); |
if (receiver_cid == kOneByteStringCid) { |
- __ AddImmediate(R0, R0, OneByteString::data_offset() - kHeapObjectTag); |
+ __ AddImmediate(R0, OneByteString::data_offset() - kHeapObjectTag); |
__ add(R0, R0, Operand(R1)); |
} else { |
ASSERT(receiver_cid == kTwoByteStringCid); |
- __ AddImmediate(R0, R0, TwoByteString::data_offset() - kHeapObjectTag); |
+ __ AddImmediate(R0, TwoByteString::data_offset() - kHeapObjectTag); |
__ add(R0, R0, Operand(R1)); |
__ add(R0, R0, Operand(R1)); |
} |
if (other_cid == kOneByteStringCid) { |
- __ AddImmediate(R2, R2, OneByteString::data_offset() - kHeapObjectTag); |
+ __ AddImmediate(R2, OneByteString::data_offset() - kHeapObjectTag); |
} else { |
ASSERT(other_cid == kTwoByteStringCid); |
- __ AddImmediate(R2, R2, TwoByteString::data_offset() - kHeapObjectTag); |
+ __ AddImmediate(R2, TwoByteString::data_offset() - kHeapObjectTag); |
} |
// i = 0 |
@@ -1955,12 +1955,12 @@ void Intrinsifier::StringBaseCharAt(Assembler* assembler) { |
__ CompareClassId(R0, kOneByteStringCid); |
__ b(&try_two_byte_string, NE); |
__ SmiUntag(R1); |
- __ AddImmediate(R0, R0, OneByteString::data_offset() - kHeapObjectTag); |
+ __ AddImmediate(R0, OneByteString::data_offset() - kHeapObjectTag); |
__ ldr(R1, Address(R0, R1), kUnsignedByte); |
__ CompareImmediate(R1, Symbols::kNumberOfOneCharCodeSymbols); |
__ b(&fall_through, GE); |
__ ldr(R0, Address(THR, Thread::predefined_symbols_address_offset())); |
- __ AddImmediate(R0, R0, Symbols::kNullCharCodeSymbolOffset * kWordSize); |
+ __ AddImmediate(R0, Symbols::kNullCharCodeSymbolOffset * kWordSize); |
__ ldr(R0, Address(R0, R1, UXTX, Address::Scaled)); |
__ ret(); |
@@ -1968,12 +1968,12 @@ void Intrinsifier::StringBaseCharAt(Assembler* assembler) { |
__ CompareClassId(R0, kTwoByteStringCid); |
__ b(&fall_through, NE); |
ASSERT(kSmiTagShift == 1); |
- __ AddImmediate(R0, R0, TwoByteString::data_offset() - kHeapObjectTag); |
+ __ AddImmediate(R0, TwoByteString::data_offset() - kHeapObjectTag); |
__ ldr(R1, Address(R0, R1), kUnsignedHalfword); |
__ CompareImmediate(R1, Symbols::kNumberOfOneCharCodeSymbols); |
__ b(&fall_through, GE); |
__ ldr(R0, Address(THR, Thread::predefined_symbols_address_offset())); |
- __ AddImmediate(R0, R0, Symbols::kNullCharCodeSymbolOffset * kWordSize); |
+ __ AddImmediate(R0, Symbols::kNullCharCodeSymbolOffset * kWordSize); |
__ ldr(R0, Address(R0, R1, UXTX, Address::Scaled)); |
__ ret(); |
@@ -2066,7 +2066,7 @@ static void TryAllocateOnebyteString(Assembler* assembler, |
// TODO(koda): Protect against negative length and overflow here. |
__ SmiUntag(length_reg); |
const intptr_t fixed_size = sizeof(RawString) + kObjectAlignment - 1; |
- __ AddImmediate(length_reg, length_reg, fixed_size); |
+ __ AddImmediate(length_reg, fixed_size); |
__ andi(length_reg, length_reg, Immediate(~(kObjectAlignment - 1))); |
const intptr_t cid = kOneByteStringCid; |
@@ -2090,7 +2090,7 @@ static void TryAllocateOnebyteString(Assembler* assembler, |
// Successfully allocated the object(s), now update top to point to |
// next object start and initialize the object. |
__ str(R1, Address(R3, Heap::TopOffset(space))); |
- __ AddImmediate(R0, R0, kHeapObjectTag); |
+ __ AddImmediate(R0, kHeapObjectTag); |
NOT_IN_PRODUCT(__ UpdateAllocationStatsWithSize(cid, R2, space)); |
// Initialize the tags. |
@@ -2150,7 +2150,7 @@ void Intrinsifier::OneByteString_substringUnchecked(Assembler* assembler) { |
__ SmiUntag(R1); |
__ add(R3, R3, Operand(R1)); |
// Calculate start address and untag (- 1). |
- __ AddImmediate(R3, R3, OneByteString::data_offset() - 1); |
+ __ AddImmediate(R3, OneByteString::data_offset() - 1); |
// R3: Start address to copy from (untagged). |
// R1: Untagged start index. |
@@ -2171,11 +2171,11 @@ void Intrinsifier::OneByteString_substringUnchecked(Assembler* assembler) { |
__ mov(R7, R0); |
__ Bind(&loop); |
__ ldr(R1, Address(R6), kUnsignedByte); |
- __ AddImmediate(R6, R6, 1); |
+ __ AddImmediate(R6, 1); |
__ sub(R2, R2, Operand(1)); |
__ cmp(R2, Operand(0)); |
__ str(R1, FieldAddress(R7, OneByteString::data_offset()), kUnsignedByte); |
- __ AddImmediate(R7, R7, 1); |
+ __ AddImmediate(R7, 1); |
__ b(&loop, GT); |
__ Bind(&done); |
@@ -2238,23 +2238,23 @@ static void StringEquality(Assembler* assembler, intptr_t string_cid) { |
const intptr_t offset = (string_cid == kOneByteStringCid) |
? OneByteString::data_offset() |
: TwoByteString::data_offset(); |
- __ AddImmediate(R0, R0, offset - kHeapObjectTag); |
- __ AddImmediate(R1, R1, offset - kHeapObjectTag); |
+ __ AddImmediate(R0, offset - kHeapObjectTag); |
+ __ AddImmediate(R1, offset - kHeapObjectTag); |
__ SmiUntag(R2); |
__ Bind(&loop); |
- __ AddImmediate(R2, R2, -1); |
+ __ AddImmediate(R2, -1); |
__ CompareRegisters(R2, ZR); |
__ b(&is_true, LT); |
if (string_cid == kOneByteStringCid) { |
__ ldr(R3, Address(R0), kUnsignedByte); |
__ ldr(R4, Address(R1), kUnsignedByte); |
- __ AddImmediate(R0, R0, 1); |
- __ AddImmediate(R1, R1, 1); |
+ __ AddImmediate(R0, 1); |
+ __ AddImmediate(R1, 1); |
} else if (string_cid == kTwoByteStringCid) { |
__ ldr(R3, Address(R0), kUnsignedHalfword); |
__ ldr(R4, Address(R1), kUnsignedHalfword); |
- __ AddImmediate(R0, R0, 2); |
- __ AddImmediate(R1, R1, 2); |
+ __ AddImmediate(R0, 2); |
+ __ AddImmediate(R1, 2); |
} else { |
UNIMPLEMENTED(); |
} |
@@ -2302,7 +2302,7 @@ void Intrinsifier::IntrinsifyRegExpExecuteMatch(Assembler* assembler, |
__ ldr(R2, Address(SP, kRegExpParamOffset)); |
__ ldr(R1, Address(SP, kStringParamOffset)); |
__ LoadClassId(R1, R1); |
- __ AddImmediate(R1, R1, -kOneByteStringCid); |
+ __ AddImmediate(R1, -kOneByteStringCid); |
__ add(R1, R2, Operand(R1, LSL, kWordSizeLog2)); |
__ ldr(R0, |
FieldAddress(R1, RegExp::function_offset(kOneByteStringCid, sticky))); |