Index: src/x64/codegen-x64.cc |
diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc |
index b1f2b8fbceb137db45c6510ea347bcfce6393b04..149b0afba742475a8fcbc6235347fa81e9d6f618 100644 |
--- a/src/x64/codegen-x64.cc |
+++ b/src/x64/codegen-x64.cc |
@@ -1292,7 +1292,7 @@ void CodeGenerator::VisitForInStatement(ForInStatement* node) { |
node->continue_target()->set_direction(JumpTarget::FORWARD_ONLY); |
__ movq(rax, frame_->ElementAt(0)); // load the current count |
- __ cmpq(rax, frame_->ElementAt(1)); // compare to the array length |
+ __ cmpl(rax, frame_->ElementAt(1)); // compare to the array length |
node->break_target()->Branch(above_equal); |
// Get the i'th entry of the array. |
@@ -5109,7 +5109,7 @@ void CodeGenerator::LikelySmiBinaryOperation(Token::Value op, |
Label result_ok; |
__ shl(answer.reg()); |
// Check that the *signed* result fits in a smi. |
- __ cmpq(answer.reg(), Immediate(0xc0000000)); |
+ __ cmpl(answer.reg(), Immediate(0xc0000000)); |
__ j(positive, &result_ok); |
ASSERT(kSmiTag == 0); |
__ shl(rcx, Immediate(kSmiTagSize)); |
@@ -6675,12 +6675,12 @@ void GenericBinaryOpStub::GenerateSmiCode(MacroAssembler* masm, Label* slow) { |
// Move the second operand into register ecx. |
__ movq(rcx, rbx); |
// Remove tags from operands (but keep sign). |
- __ sar(rax, Immediate(kSmiTagSize)); |
- __ sar(rcx, Immediate(kSmiTagSize)); |
+ __ sarl(rax, Immediate(kSmiTagSize)); |
+ __ sarl(rcx, Immediate(kSmiTagSize)); |
// Perform the operation. |
switch (op_) { |
case Token::SAR: |
- __ sar(rax); |
+ __ sarl(rax); |
// No checks of result necessary |
break; |
case Token::SHR: |
@@ -6691,19 +6691,17 @@ void GenericBinaryOpStub::GenerateSmiCode(MacroAssembler* masm, Label* slow) { |
// - 0x40000000: this number would convert to negative when |
// Smi tagging these two cases can only happen with shifts |
// by 0 or 1 when handed a valid smi. |
- __ testq(rax, Immediate(0xc0000000)); |
+ __ testl(rax, Immediate(0xc0000000)); |
__ j(not_zero, slow); |
break; |
case Token::SHL: |
__ shll(rax); |
- // TODO(Smi): Significant change if Smi changes. |
// Check that the *signed* result fits in a smi. |
// It does, if the 30th and 31st bits are equal, since then |
// shifting the SmiTag in at the bottom doesn't change the sign. |
ASSERT(kSmiTagSize == 1); |
__ cmpl(rax, Immediate(0xc0000000)); |
__ j(sign, slow); |
- __ movsxlq(rax, rax); // Extend new sign of eax into rax. |
break; |
default: |
UNREACHABLE(); |