| Index: src/arm/code-stubs-arm.cc
|
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
|
| index 6205fdfba15db5e6f43ab2b35f58b6b7378fb20d..8c0036d76c61acbfe4bc17c2df8612b2c0983c1a 100644
|
| --- a/src/arm/code-stubs-arm.cc
|
| +++ b/src/arm/code-stubs-arm.cc
|
| @@ -560,7 +560,7 @@ void ConvertToDoubleStub::Generate(MacroAssembler* masm) {
|
| STATIC_ASSERT(HeapNumber::kSignMask == 0x80000000u);
|
| __ and_(exponent, source_, Operand(HeapNumber::kSignMask), SetCC);
|
| // Subtract from 0 if source was negative.
|
| - __ rsb(source_, source_, Operand(0, RelocInfo::NONE32), LeaveCC, ne);
|
| + __ rsb(source_, source_, Operand::Zero(), LeaveCC, ne);
|
|
|
| // We have -1, 0 or 1, which we treat specially. Register source_ contains
|
| // absolute value: it is either equal to 1 (special case of -1 and 1),
|
| @@ -573,7 +573,7 @@ void ConvertToDoubleStub::Generate(MacroAssembler* masm) {
|
| HeapNumber::kExponentBias << HeapNumber::kExponentShift;
|
| __ orr(exponent, exponent, Operand(exponent_word_for_1), LeaveCC, eq);
|
| // 1, 0 and -1 all have 0 for the second word.
|
| - __ mov(mantissa, Operand(0, RelocInfo::NONE32));
|
| + __ mov(mantissa, Operand::Zero());
|
| __ Ret();
|
|
|
| __ bind(¬_special);
|
| @@ -1141,7 +1141,7 @@ void WriteInt32ToHeapNumberStub::Generate(MacroAssembler* masm) {
|
| // Set the sign bit in scratch_ if the value was negative.
|
| __ orr(scratch_, scratch_, Operand(HeapNumber::kSignMask), LeaveCC, cs);
|
| // Subtract from 0 if the value was negative.
|
| - __ rsb(the_int_, the_int_, Operand(0, RelocInfo::NONE32), LeaveCC, cs);
|
| + __ rsb(the_int_, the_int_, Operand::Zero(), LeaveCC, cs);
|
| // We should be masking the implict first digit of the mantissa away here,
|
| // but it just ends up combining harmlessly with the last digit of the
|
| // exponent that happens to be 1. The sign bit is 0 so we shift 10 to get
|
| @@ -1164,7 +1164,7 @@ void WriteInt32ToHeapNumberStub::Generate(MacroAssembler* masm) {
|
| non_smi_exponent += 1 << HeapNumber::kExponentShift;
|
| __ mov(ip, Operand(HeapNumber::kSignMask | non_smi_exponent));
|
| __ str(ip, FieldMemOperand(the_heap_number_, HeapNumber::kExponentOffset));
|
| - __ mov(ip, Operand(0, RelocInfo::NONE32));
|
| + __ mov(ip, Operand::Zero());
|
| __ str(ip, FieldMemOperand(the_heap_number_, HeapNumber::kMantissaOffset));
|
| __ Ret();
|
| }
|
| @@ -1380,7 +1380,7 @@ void EmitNanCheck(MacroAssembler* masm, Label* lhs_not_nan, Condition cond) {
|
| Operand(lhs_exponent, LSL, HeapNumber::kNonMantissaBitsInTopWord),
|
| SetCC);
|
| __ b(ne, &one_is_nan);
|
| - __ cmp(lhs_mantissa, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(lhs_mantissa, Operand::Zero());
|
| __ b(ne, &one_is_nan);
|
|
|
| __ bind(lhs_not_nan);
|
| @@ -1395,7 +1395,7 @@ void EmitNanCheck(MacroAssembler* masm, Label* lhs_not_nan, Condition cond) {
|
| Operand(rhs_exponent, LSL, HeapNumber::kNonMantissaBitsInTopWord),
|
| SetCC);
|
| __ b(ne, &one_is_nan);
|
| - __ cmp(rhs_mantissa, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(rhs_mantissa, Operand::Zero());
|
| __ b(eq, &neither_is_nan);
|
|
|
| __ bind(&one_is_nan);
|
| @@ -1922,7 +1922,7 @@ void ToBooleanStub::Generate(MacroAssembler* masm) {
|
| __ ldrb(ip, FieldMemOperand(map, Map::kBitFieldOffset));
|
| __ tst(ip, Operand(1 << Map::kIsUndetectable));
|
| // Undetectable -> false.
|
| - __ mov(tos_, Operand(0, RelocInfo::NONE32), LeaveCC, ne);
|
| + __ mov(tos_, Operand::Zero(), LeaveCC, ne);
|
| __ Ret(ne);
|
| }
|
| }
|
| @@ -1955,8 +1955,8 @@ void ToBooleanStub::Generate(MacroAssembler* masm) {
|
| // "tos_" is a register, and contains a non zero value by default.
|
| // Hence we only need to overwrite "tos_" with zero to return false for
|
| // FP_ZERO or FP_NAN cases. Otherwise, by default it returns true.
|
| - __ mov(tos_, Operand(0, RelocInfo::NONE32), LeaveCC, eq); // for FP_ZERO
|
| - __ mov(tos_, Operand(0, RelocInfo::NONE32), LeaveCC, vs); // for FP_NAN
|
| + __ mov(tos_, Operand::Zero(), LeaveCC, eq); // for FP_ZERO
|
| + __ mov(tos_, Operand::Zero(), LeaveCC, vs); // for FP_NAN
|
| } else {
|
| Label done, not_nan, not_zero;
|
| __ ldr(temp, FieldMemOperand(tos_, HeapNumber::kExponentOffset));
|
| @@ -1982,14 +1982,14 @@ void ToBooleanStub::Generate(MacroAssembler* masm) {
|
| __ ldr(temp, FieldMemOperand(tos_, HeapNumber::kExponentOffset));
|
| __ tst(temp, Operand(HeapNumber::kMantissaMask, RelocInfo::NONE32));
|
| // If mantissa is not zero then we have a NaN, so return 0.
|
| - __ mov(tos_, Operand(0, RelocInfo::NONE32), LeaveCC, ne);
|
| + __ mov(tos_, Operand::Zero(), LeaveCC, ne);
|
| __ b(ne, &done);
|
|
|
| // Load mantissa word.
|
| __ ldr(temp, FieldMemOperand(tos_, HeapNumber::kMantissaOffset));
|
| - __ cmp(temp, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(temp, Operand::Zero());
|
| // If mantissa is not zero then we have a NaN, so return 0.
|
| - __ mov(tos_, Operand(0, RelocInfo::NONE32), LeaveCC, ne);
|
| + __ mov(tos_, Operand::Zero(), LeaveCC, ne);
|
| __ b(ne, &done);
|
|
|
| __ bind(¬_nan);
|
| @@ -2016,7 +2016,7 @@ void ToBooleanStub::CheckOddball(MacroAssembler* masm,
|
| // The value of a root is never NULL, so we can avoid loading a non-null
|
| // value into tos_ when we want to return 'true'.
|
| if (!result) {
|
| - __ mov(tos_, Operand(0, RelocInfo::NONE32), LeaveCC, eq);
|
| + __ mov(tos_, Operand::Zero(), LeaveCC, eq);
|
| }
|
| __ Ret(eq);
|
| }
|
| @@ -2161,7 +2161,7 @@ void UnaryOpStub::GenerateSmiCodeSub(MacroAssembler* masm,
|
| __ b(eq, slow);
|
|
|
| // Return '0 - value'.
|
| - __ rsb(r0, r0, Operand(0, RelocInfo::NONE32));
|
| + __ rsb(r0, r0, Operand::Zero());
|
| __ Ret();
|
| }
|
|
|
| @@ -2429,7 +2429,7 @@ void BinaryOpStub_GenerateSmiSmiOperation(MacroAssembler* masm,
|
| __ cmp(ip, Operand(scratch2));
|
| __ b(ne, ¬_smi_result);
|
| // Go slow on zero result to handle -0.
|
| - __ cmp(scratch1, Operand(0));
|
| + __ cmp(scratch1, Operand::Zero());
|
| __ mov(right, Operand(scratch1), LeaveCC, ne);
|
| __ Ret(ne);
|
| // We need -0 if we were multiplying a negative number with 0 to get 0.
|
| @@ -2444,7 +2444,7 @@ void BinaryOpStub_GenerateSmiSmiOperation(MacroAssembler* masm,
|
| Label div_with_sdiv;
|
|
|
| // Check for 0 divisor.
|
| - __ cmp(right, Operand(0));
|
| + __ cmp(right, Operand::Zero());
|
| __ b(eq, ¬_smi_result);
|
|
|
| // Check for power of two on the right hand side.
|
| @@ -2456,7 +2456,7 @@ void BinaryOpStub_GenerateSmiSmiOperation(MacroAssembler* masm,
|
| __ tst(left, scratch1);
|
| __ b(ne, ¬_smi_result);
|
| // Check for positive left hand side.
|
| - __ cmp(left, Operand(0));
|
| + __ cmp(left, Operand::Zero());
|
| __ b(mi, &div_with_sdiv);
|
| } else {
|
| __ b(ne, ¬_smi_result);
|
| @@ -2480,12 +2480,12 @@ void BinaryOpStub_GenerateSmiSmiOperation(MacroAssembler* masm,
|
| __ sdiv(scratch1, left, right);
|
| // Check that the remainder is zero.
|
| __ mls(scratch2, scratch1, right, left);
|
| - __ cmp(scratch2, Operand(0));
|
| + __ cmp(scratch2, Operand::Zero());
|
| __ b(ne, ¬_smi_result);
|
| // Check for negative zero result.
|
| - __ cmp(scratch1, Operand(0));
|
| + __ cmp(scratch1, Operand::Zero());
|
| __ b(ne, &result_not_zero);
|
| - __ cmp(right, Operand(0));
|
| + __ cmp(right, Operand::Zero());
|
| __ b(lt, ¬_smi_result);
|
| __ bind(&result_not_zero);
|
| // Check for the corner case of dividing the most negative smi by -1.
|
| @@ -2502,7 +2502,7 @@ void BinaryOpStub_GenerateSmiSmiOperation(MacroAssembler* masm,
|
|
|
| if (CpuFeatures::IsSupported(SUDIV)) {
|
| // Check for x % 0.
|
| - __ cmp(right, Operand(0));
|
| + __ cmp(right, Operand::Zero());
|
| __ b(eq, ¬_smi_result);
|
|
|
| // Check for two positive smis.
|
| @@ -2535,10 +2535,10 @@ void BinaryOpStub_GenerateSmiSmiOperation(MacroAssembler* masm,
|
| __ sdiv(scratch1, left, right);
|
| __ mls(right, scratch1, right, left);
|
| // Return if the result is not 0.
|
| - __ cmp(right, Operand(0));
|
| + __ cmp(right, Operand::Zero());
|
| __ Ret(ne);
|
| // The result is 0, check for -0 case.
|
| - __ cmp(left, Operand(0));
|
| + __ cmp(left, Operand::Zero());
|
| __ Ret(pl);
|
| // This is a -0 case, restore the value of right.
|
| __ mov(right, scratch2);
|
| @@ -3478,7 +3478,7 @@ void TranscendentalCacheStub::Generate(MacroAssembler* masm) {
|
| __ ldr(cache_entry, MemOperand(cache_entry, cache_array_index));
|
| // r0 points to the cache for the type type_.
|
| // If NULL, the cache hasn't been initialized yet, so go through runtime.
|
| - __ cmp(cache_entry, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(cache_entry, Operand::Zero());
|
| __ b(eq, &invalid_cache);
|
|
|
| #ifdef DEBUG
|
| @@ -3789,8 +3789,8 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| __ vmov(double_result, 1.0, scratch2);
|
|
|
| // Get absolute value of exponent.
|
| - __ cmp(scratch, Operand(0));
|
| - __ mov(scratch2, Operand(0), LeaveCC, mi);
|
| + __ cmp(scratch, Operand::Zero());
|
| + __ mov(scratch2, Operand::Zero(), LeaveCC, mi);
|
| __ sub(scratch, scratch2, scratch, LeaveCC, mi);
|
|
|
| Label while_true;
|
| @@ -3800,7 +3800,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| __ vmul(double_scratch, double_scratch, double_scratch, ne);
|
| __ b(ne, &while_true);
|
|
|
| - __ cmp(exponent, Operand(0));
|
| + __ cmp(exponent, Operand::Zero());
|
| __ b(ge, &done);
|
| __ vmov(double_scratch, 1.0, scratch);
|
| __ vdiv(double_result, double_scratch, double_result);
|
| @@ -4773,7 +4773,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
| // of the arguments object and the elements array in words.
|
| Label add_arguments_object;
|
| __ bind(&try_allocate);
|
| - __ cmp(r1, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(r1, Operand::Zero());
|
| __ b(eq, &add_arguments_object);
|
| __ mov(r1, Operand(r1, LSR, kSmiTagSize));
|
| __ add(r1, r1, Operand(FixedArray::kHeaderSize / kPointerSize));
|
| @@ -4806,7 +4806,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
|
|
| // If there are no actual arguments, we're done.
|
| Label done;
|
| - __ cmp(r1, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(r1, Operand::Zero());
|
| __ b(eq, &done);
|
|
|
| // Get the parameters pointer from the stack.
|
| @@ -4833,7 +4833,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
| // Post-increment r4 with kPointerSize on each iteration.
|
| __ str(r3, MemOperand(r4, kPointerSize, PostIndex));
|
| __ sub(r1, r1, Operand(1));
|
| - __ cmp(r1, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(r1, Operand::Zero());
|
| __ b(ne, &loop);
|
|
|
| // Return and remove the on-stack parameters.
|
| @@ -4885,7 +4885,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| ExternalReference::address_of_regexp_stack_memory_size(isolate);
|
| __ mov(r0, Operand(address_of_regexp_stack_memory_size));
|
| __ ldr(r0, MemOperand(r0, 0));
|
| - __ cmp(r0, Operand(0));
|
| + __ cmp(r0, Operand::Zero());
|
| __ b(eq, &runtime);
|
|
|
| // Check that the first argument is a JSRegExp object.
|
| @@ -4967,7 +4967,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| __ b(gt, &runtime);
|
|
|
| // Reset offset for possibly sliced string.
|
| - __ mov(r9, Operand(0));
|
| + __ mov(r9, Operand::Zero());
|
| // subject: Subject string
|
| // regexp_data: RegExp data (FixedArray)
|
| // Check the representation and encoding of the subject string.
|
| @@ -5088,7 +5088,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
|
|
| // Argument 6: Set the number of capture registers to zero to force global
|
| // regexps to behave as non-global. This does not affect non-global regexps.
|
| - __ mov(r0, Operand(0));
|
| + __ mov(r0, Operand::Zero());
|
| __ str(r0, MemOperand(sp, 2 * kPointerSize));
|
|
|
| // Argument 5 (sp[4]): static offsets vector buffer.
|
| @@ -5343,7 +5343,7 @@ void RegExpConstructResultStub::Generate(MacroAssembler* masm) {
|
| // r3: Start of elements in FixedArray.
|
| // r5: Number of elements to fill.
|
| Label loop;
|
| - __ cmp(r5, Operand(0));
|
| + __ cmp(r5, Operand::Zero());
|
| __ bind(&loop);
|
| __ b(le, &done); // Jump if r5 is negative or zero.
|
| __ sub(r5, r5, Operand(1), SetCC);
|
| @@ -5470,7 +5470,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ b(ne, &non_function);
|
| __ push(r1); // put proxy as additional argument
|
| __ mov(r0, Operand(argc_ + 1, RelocInfo::NONE32));
|
| - __ mov(r2, Operand(0, RelocInfo::NONE32));
|
| + __ mov(r2, Operand::Zero());
|
| __ GetBuiltinEntry(r3, Builtins::CALL_FUNCTION_PROXY);
|
| __ SetCallKind(r5, CALL_AS_METHOD);
|
| {
|
| @@ -5484,7 +5484,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ bind(&non_function);
|
| __ str(r1, MemOperand(sp, argc_ * kPointerSize));
|
| __ mov(r0, Operand(argc_)); // Set up the number of arguments.
|
| - __ mov(r2, Operand(0, RelocInfo::NONE32));
|
| + __ mov(r2, Operand::Zero());
|
| __ GetBuiltinEntry(r3, Builtins::CALL_NON_FUNCTION);
|
| __ SetCallKind(r5, CALL_AS_METHOD);
|
| __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| @@ -5527,7 +5527,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
| __ GetBuiltinEntry(r3, Builtins::CALL_NON_FUNCTION_AS_CONSTRUCTOR);
|
| __ bind(&do_call);
|
| // Set expected number of arguments to zero (not changing r0).
|
| - __ mov(r2, Operand(0, RelocInfo::NONE32));
|
| + __ mov(r2, Operand::Zero());
|
| __ SetCallKind(r5, CALL_AS_METHOD);
|
| __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| RelocInfo::CODE_TARGET);
|
| @@ -5696,7 +5696,7 @@ void StringHelper::GenerateCopyCharacters(MacroAssembler* masm,
|
| if (!ascii) {
|
| __ add(count, count, Operand(count), SetCC);
|
| } else {
|
| - __ cmp(count, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(count, Operand::Zero());
|
| }
|
| __ b(eq, &done);
|
|
|
| @@ -5751,7 +5751,7 @@ void StringHelper::GenerateCopyCharactersLong(MacroAssembler* masm,
|
| if (!ascii) {
|
| __ add(count, count, Operand(count), SetCC);
|
| } else {
|
| - __ cmp(count, Operand(0, RelocInfo::NONE32));
|
| + __ cmp(count, Operand::Zero());
|
| }
|
| __ b(eq, &done);
|
|
|
| @@ -6274,7 +6274,7 @@ void StringCompareStub::GenerateFlatAsciiStringEquals(MacroAssembler* masm,
|
| Label compare_chars;
|
| __ bind(&check_zero_length);
|
| STATIC_ASSERT(kSmiTag == 0);
|
| - __ cmp(length, Operand(0));
|
| + __ cmp(length, Operand::Zero());
|
| __ b(ne, &compare_chars);
|
| __ mov(r0, Operand(Smi::FromInt(EQUAL)));
|
| __ Ret();
|
| @@ -6307,7 +6307,7 @@ void StringCompareStub::GenerateCompareFlatAsciiStrings(MacroAssembler* masm,
|
| __ mov(scratch1, scratch2, LeaveCC, gt);
|
| Register min_length = scratch1;
|
| STATIC_ASSERT(kSmiTag == 0);
|
| - __ cmp(min_length, Operand(0));
|
| + __ cmp(min_length, Operand::Zero());
|
| __ b(eq, &compare_lengths);
|
|
|
| // Compare loop.
|
| @@ -7124,7 +7124,7 @@ void StringDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm,
|
| __ mov(r1, Operand(Handle<String>(name)));
|
| StringDictionaryLookupStub stub(NEGATIVE_LOOKUP);
|
| __ CallStub(&stub);
|
| - __ cmp(r0, Operand(0));
|
| + __ cmp(r0, Operand::Zero());
|
| __ ldm(ia_w, sp, spill_mask);
|
|
|
| __ b(eq, done);
|
| @@ -7200,7 +7200,7 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
|
| }
|
| StringDictionaryLookupStub stub(POSITIVE_LOOKUP);
|
| __ CallStub(&stub);
|
| - __ cmp(r0, Operand(0));
|
| + __ cmp(r0, Operand::Zero());
|
| __ mov(scratch2, Operand(r2));
|
| __ ldm(ia_w, sp, spill_mask);
|
|
|
|
|