Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 475fb9de345da6d7054d1c48919f92d752a5c6aa..1944eb668cc20e5de8b13dfd571c253c23a20c16 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -4056,13 +4056,9 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
SetSourcePosition(expr->position()); |
// Call stub for +1/-1. |
+ __ movq(rdx, rax); |
+ __ Move(rax, Smi::FromInt(1)); |
BinaryOpStub stub(expr->binary_op(), NO_OVERWRITE); |
- if (expr->op() == Token::INC) { |
- __ Move(rdx, Smi::FromInt(1)); |
- } else { |
- __ movq(rdx, rax); |
- __ Move(rax, Smi::FromInt(1)); |
- } |
CallIC(stub.GetCode(), RelocInfo::CODE_TARGET, expr->CountBinOpFeedbackId()); |
patch_site.EmitPatchInfo(); |
__ bind(&done); |
@@ -4281,29 +4277,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) { |
default: { |
VisitForAccumulatorValue(expr->right()); |
- Condition cc = no_condition; |
- switch (op) { |
- case Token::EQ_STRICT: |
- case Token::EQ: |
- cc = equal; |
- break; |
- case Token::LT: |
- cc = less; |
- break; |
- case Token::GT: |
- cc = greater; |
- break; |
- case Token::LTE: |
- cc = less_equal; |
- break; |
- case Token::GTE: |
- cc = greater_equal; |
- break; |
- case Token::IN: |
- case Token::INSTANCEOF: |
- default: |
- UNREACHABLE(); |
- } |
+ Condition cc = CompareIC::ComputeCondition(op); |
__ pop(rdx); |
bool inline_smi_code = ShouldInlineSmiCase(op); |