Remove a generated mov and jmp.

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
parent 39e63f0a
...@@ -156,13 +156,9 @@ void FastCodeGenerator::EmitBitOr() { ...@@ -156,13 +156,9 @@ void FastCodeGenerator::EmitBitOr() {
} else { } else {
// Preserve the destination operand in a scratch register in case of // Preserve the destination operand in a scratch register in case of
// bailout. // bailout.
Label done;
__ mov(scratch0(), destination()); __ mov(scratch0(), destination());
__ orr(destination(), accumulator1(), Operand(accumulator0())); __ orr(destination(), accumulator1(), Operand(accumulator0()));
__ BranchOnSmi(destination(), &done); __ BranchOnNotSmi(destination(), bailout());
__ mov(destination(), scratch0());
__ jmp(bailout());
__ bind(&done);
} }
// If we didn't bailout, the result (in fact, both inputs too) is known to // If we didn't bailout, the result (in fact, both inputs too) is known to
......
...@@ -165,14 +165,10 @@ void FastCodeGenerator::EmitBitOr() { ...@@ -165,14 +165,10 @@ void FastCodeGenerator::EmitBitOr() {
} else { } else {
// Preserve the destination operand in a scratch register in case of // Preserve the destination operand in a scratch register in case of
// bailout. // bailout.
Label done;
__ mov(scratch0(), destination()); __ mov(scratch0(), destination());
__ or_(destination(), Operand(other_accumulator(destination()))); __ or_(destination(), Operand(other_accumulator(destination())));
__ test(destination(), Immediate(kSmiTagMask)); __ test(destination(), Immediate(kSmiTagMask));
__ j(zero, &done, taken); __ j(not_zero, bailout(), not_taken);
__ mov(destination(), scratch0());
__ jmp(bailout());
__ bind(&done);
} }
// If we didn't bailout, the result (in fact, both inputs too) is known to // If we didn't bailout, the result (in fact, both inputs too) is known to
......
...@@ -165,13 +165,9 @@ void FastCodeGenerator::EmitBitOr() { ...@@ -165,13 +165,9 @@ void FastCodeGenerator::EmitBitOr() {
} else { } else {
// Preserve the destination operand in a scratch register in case of // Preserve the destination operand in a scratch register in case of
// bailout. // bailout.
Label done;
__ movq(scratch0(), destination()); __ movq(scratch0(), destination());
__ or_(destination(), other_accumulator(destination())); __ or_(destination(), other_accumulator(destination()));
__ JumpIfSmi(destination(), &done); __ JumpIfNotSmi(destination(), bailout());
__ movq(destination(), scratch0());
__ jmp(bailout());
__ bind(&done);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment