Reviewers: Lasse Reichstein, Description: Fix error in x64 inlined optimized shift operators.
Please review this at http://codereview.chromium.org/3496007/show SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/x64/codegen-x64.cc Index: src/x64/codegen-x64.cc =================================================================== --- src/x64/codegen-x64.cc (revision 5525) +++ src/x64/codegen-x64.cc (working copy) @@ -1350,11 +1350,11 @@ overwrite_mode); Label do_op; + __ movq(answer.reg(), left->reg()); if (right_type_info.IsSmi()) { if (FLAG_debug_code) { __ AbortIfNotSmi(right->reg()); } - __ movq(answer.reg(), left->reg()); // If left is not known to be a smi, check if it is. // If left is not known to be a number, and it isn't a smi, check if // it is a HeapNumber. @@ -1390,18 +1390,18 @@ // Perform the operation. switch (op) { case Token::SAR: - __ SmiShiftArithmeticRight(answer.reg(), left->reg(), rcx); + __ SmiShiftArithmeticRight(answer.reg(), answer.reg(), rcx); break; case Token::SHR: { __ SmiShiftLogicalRight(answer.reg(), - left->reg(), + answer.reg(), rcx, deferred->entry_label()); break; } case Token::SHL: { __ SmiShiftLeft(answer.reg(), - left->reg(), + answer.reg(), rcx); break; } -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
