Remove a move and jump from the fast-path code in the speculative
backend. Ultimately, this code belongs to the bailout and not the
fast path.
Review URL: http://codereview.chromium.org/601094
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3890
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
} else {
// Preserve the destination operand in a scratch register in case of
// bailout.
- Label done;
__ mov(scratch0(), destination());
__ orr(destination(), accumulator1(), Operand(accumulator0()));
- __ BranchOnSmi(destination(), &done);
- __ mov(destination(), scratch0());
- __ jmp(bailout());
- __ bind(&done);
+ __ BranchOnNotSmi(destination(), bailout());
}
// If we didn't bailout, the result (in fact, both inputs too) is known to
} else {
// Preserve the destination operand in a scratch register in case of
// bailout.
- Label done;
__ mov(scratch0(), destination());
__ or_(destination(), Operand(other_accumulator(destination())));
__ test(destination(), Immediate(kSmiTagMask));
- __ j(zero, &done, taken);
- __ mov(destination(), scratch0());
- __ jmp(bailout());
- __ bind(&done);
+ __ j(not_zero, bailout(), not_taken);
}
// If we didn't bailout, the result (in fact, both inputs too) is known to
} else {
// Preserve the destination operand in a scratch register in case of
// bailout.
- Label done;
__ movq(scratch0(), destination());
__ or_(destination(), other_accumulator(destination()));
- __ JumpIfSmi(destination(), &done);
- __ movq(destination(), scratch0());
- __ jmp(bailout());
- __ bind(&done);
+ __ JumpIfNotSmi(destination(), bailout());
}