Use cmp instead of tst to check for zero.
Review URL: https://chromiumcodereview.appspot.com/9169088 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
0d4fc913d0
commit
ea041a187c
@ -1297,7 +1297,7 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|||||||
// 1. Make sure we have at least one argument.
|
// 1. Make sure we have at least one argument.
|
||||||
// r0: actual number of arguments
|
// r0: actual number of arguments
|
||||||
{ Label done;
|
{ Label done;
|
||||||
__ tst(r0, Operand(r0));
|
__ cmp(r0, Operand(0));
|
||||||
__ b(ne, &done);
|
__ b(ne, &done);
|
||||||
__ LoadRoot(r2, Heap::kUndefinedValueRootIndex);
|
__ LoadRoot(r2, Heap::kUndefinedValueRootIndex);
|
||||||
__ push(r2);
|
__ push(r2);
|
||||||
|
@ -2338,7 +2338,7 @@ void BinaryOpStub::GenerateSmiSmiOperation(MacroAssembler* masm) {
|
|||||||
__ cmp(ip, Operand(scratch2));
|
__ cmp(ip, Operand(scratch2));
|
||||||
__ b(ne, ¬_smi_result);
|
__ b(ne, ¬_smi_result);
|
||||||
// Go slow on zero result to handle -0.
|
// Go slow on zero result to handle -0.
|
||||||
__ tst(scratch1, Operand(scratch1));
|
__ cmp(scratch1, Operand(0));
|
||||||
__ mov(right, Operand(scratch1), LeaveCC, ne);
|
__ mov(right, Operand(scratch1), LeaveCC, ne);
|
||||||
__ Ret(ne);
|
__ Ret(ne);
|
||||||
// We need -0 if we were multiplying a negative number with 0 to get 0.
|
// We need -0 if we were multiplying a negative number with 0 to get 0.
|
||||||
@ -4656,7 +4656,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
|||||||
ExternalReference::address_of_regexp_stack_memory_size(isolate);
|
ExternalReference::address_of_regexp_stack_memory_size(isolate);
|
||||||
__ mov(r0, Operand(address_of_regexp_stack_memory_size));
|
__ mov(r0, Operand(address_of_regexp_stack_memory_size));
|
||||||
__ ldr(r0, MemOperand(r0, 0));
|
__ ldr(r0, MemOperand(r0, 0));
|
||||||
__ tst(r0, Operand(r0));
|
__ cmp(r0, Operand(0));
|
||||||
__ b(eq, &runtime);
|
__ b(eq, &runtime);
|
||||||
|
|
||||||
// Check that the first argument is a JSRegExp object.
|
// Check that the first argument is a JSRegExp object.
|
||||||
@ -5108,9 +5108,9 @@ void RegExpConstructResultStub::Generate(MacroAssembler* masm) {
|
|||||||
// r3: Start of elements in FixedArray.
|
// r3: Start of elements in FixedArray.
|
||||||
// r5: Number of elements to fill.
|
// r5: Number of elements to fill.
|
||||||
Label loop;
|
Label loop;
|
||||||
__ tst(r5, Operand(r5));
|
__ cmp(r5, Operand(0));
|
||||||
__ bind(&loop);
|
__ bind(&loop);
|
||||||
__ b(le, &done); // Jump if r1 is negative or zero.
|
__ b(le, &done); // Jump if r5 is negative or zero.
|
||||||
__ sub(r5, r5, Operand(1), SetCC);
|
__ sub(r5, r5, Operand(1), SetCC);
|
||||||
__ str(r2, MemOperand(r3, r5, LSL, kPointerSizeLog2));
|
__ str(r2, MemOperand(r3, r5, LSL, kPointerSizeLog2));
|
||||||
__ jmp(&loop);
|
__ jmp(&loop);
|
||||||
@ -6020,7 +6020,7 @@ void StringCompareStub::GenerateFlatAsciiStringEquals(MacroAssembler* masm,
|
|||||||
Label compare_chars;
|
Label compare_chars;
|
||||||
__ bind(&check_zero_length);
|
__ bind(&check_zero_length);
|
||||||
STATIC_ASSERT(kSmiTag == 0);
|
STATIC_ASSERT(kSmiTag == 0);
|
||||||
__ tst(length, Operand(length));
|
__ cmp(length, Operand(0));
|
||||||
__ b(ne, &compare_chars);
|
__ b(ne, &compare_chars);
|
||||||
__ mov(r0, Operand(Smi::FromInt(EQUAL)));
|
__ mov(r0, Operand(Smi::FromInt(EQUAL)));
|
||||||
__ Ret();
|
__ Ret();
|
||||||
@ -6053,7 +6053,7 @@ void StringCompareStub::GenerateCompareFlatAsciiStrings(MacroAssembler* masm,
|
|||||||
__ mov(scratch1, scratch2, LeaveCC, gt);
|
__ mov(scratch1, scratch2, LeaveCC, gt);
|
||||||
Register min_length = scratch1;
|
Register min_length = scratch1;
|
||||||
STATIC_ASSERT(kSmiTag == 0);
|
STATIC_ASSERT(kSmiTag == 0);
|
||||||
__ tst(min_length, Operand(min_length));
|
__ cmp(min_length, Operand(0));
|
||||||
__ b(eq, &compare_lengths);
|
__ b(eq, &compare_lengths);
|
||||||
|
|
||||||
// Compare loop.
|
// Compare loop.
|
||||||
@ -6811,7 +6811,7 @@ void StringDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm,
|
|||||||
__ mov(r1, Operand(Handle<String>(name)));
|
__ mov(r1, Operand(Handle<String>(name)));
|
||||||
StringDictionaryLookupStub stub(NEGATIVE_LOOKUP);
|
StringDictionaryLookupStub stub(NEGATIVE_LOOKUP);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
__ tst(r0, Operand(r0));
|
__ cmp(r0, Operand(0));
|
||||||
__ ldm(ia_w, sp, spill_mask);
|
__ ldm(ia_w, sp, spill_mask);
|
||||||
|
|
||||||
__ b(eq, done);
|
__ b(eq, done);
|
||||||
@ -6888,7 +6888,7 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
|
|||||||
}
|
}
|
||||||
StringDictionaryLookupStub stub(POSITIVE_LOOKUP);
|
StringDictionaryLookupStub stub(POSITIVE_LOOKUP);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
__ tst(r0, Operand(r0));
|
__ cmp(r0, Operand(0));
|
||||||
__ mov(scratch2, Operand(r2));
|
__ mov(scratch2, Operand(r2));
|
||||||
__ ldm(ia_w, sp, spill_mask);
|
__ ldm(ia_w, sp, spill_mask);
|
||||||
|
|
||||||
|
@ -1820,7 +1820,7 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
|||||||
__ mov(ip, Operand(scratch1, ASR, 31));
|
__ mov(ip, Operand(scratch1, ASR, 31));
|
||||||
__ cmp(ip, Operand(scratch2));
|
__ cmp(ip, Operand(scratch2));
|
||||||
__ b(ne, &stub_call);
|
__ b(ne, &stub_call);
|
||||||
__ tst(scratch1, Operand(scratch1));
|
__ cmp(scratch1, Operand(0));
|
||||||
__ mov(right, Operand(scratch1), LeaveCC, ne);
|
__ mov(right, Operand(scratch1), LeaveCC, ne);
|
||||||
__ b(ne, &done);
|
__ b(ne, &done);
|
||||||
__ add(scratch2, right, Operand(left), SetCC);
|
__ add(scratch2, right, Operand(left), SetCC);
|
||||||
|
@ -571,7 +571,7 @@ bool RegExpMacroAssemblerARM::CheckSpecialCharacterClass(uc16 type,
|
|||||||
ExternalReference map = ExternalReference::re_word_character_map();
|
ExternalReference map = ExternalReference::re_word_character_map();
|
||||||
__ mov(r0, Operand(map));
|
__ mov(r0, Operand(map));
|
||||||
__ ldrb(r0, MemOperand(r0, current_character()));
|
__ ldrb(r0, MemOperand(r0, current_character()));
|
||||||
__ tst(r0, Operand(r0));
|
__ cmp(r0, Operand(0));
|
||||||
BranchOrBacktrack(eq, on_no_match);
|
BranchOrBacktrack(eq, on_no_match);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -585,7 +585,7 @@ bool RegExpMacroAssemblerARM::CheckSpecialCharacterClass(uc16 type,
|
|||||||
ExternalReference map = ExternalReference::re_word_character_map();
|
ExternalReference map = ExternalReference::re_word_character_map();
|
||||||
__ mov(r0, Operand(map));
|
__ mov(r0, Operand(map));
|
||||||
__ ldrb(r0, MemOperand(r0, current_character()));
|
__ ldrb(r0, MemOperand(r0, current_character()));
|
||||||
__ tst(r0, Operand(r0));
|
__ cmp(r0, Operand(0));
|
||||||
BranchOrBacktrack(ne, on_no_match);
|
BranchOrBacktrack(ne, on_no_match);
|
||||||
if (mode_ != ASCII) {
|
if (mode_ != ASCII) {
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
@ -681,7 +681,7 @@ Handle<HeapObject> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
|
|||||||
|
|
||||||
// Determine whether the start index is zero, that is at the start of the
|
// Determine whether the start index is zero, that is at the start of the
|
||||||
// string, and store that value in a local variable.
|
// string, and store that value in a local variable.
|
||||||
__ tst(r1, Operand(r1));
|
__ cmp(r1, Operand(0));
|
||||||
__ mov(r1, Operand(1), LeaveCC, eq);
|
__ mov(r1, Operand(1), LeaveCC, eq);
|
||||||
__ mov(r1, Operand(0, RelocInfo::NONE), LeaveCC, ne);
|
__ mov(r1, Operand(0, RelocInfo::NONE), LeaveCC, ne);
|
||||||
__ str(r1, MemOperand(frame_pointer(), kAtStart));
|
__ str(r1, MemOperand(frame_pointer(), kAtStart));
|
||||||
|
Loading…
Reference in New Issue
Block a user