Fix bug in binary operations code. When loading a 32-bit integer as a
authorager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 9 Aug 2010 14:54:23 +0000 (14:54 +0000)
committerager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 9 Aug 2010 14:54:23 +0000 (14:54 +0000)
64-bit integer to the stack, the high and low parts of the 64-bit
value were pushed in the wrong order.

TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/3010060

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5216 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/ia32/codegen-ia32.cc

index 9264c85..e557138 100644 (file)
@@ -1366,8 +1366,8 @@ void DeferredInlineBinaryOperation::GenerateAnswerOutOfRange() {
     __ movdbl(FieldOperand(left_, HeapNumber::kValueOffset), xmm0);
   } else {
     if (op_ == Token::SHR) {
-      __ push(dst_);
       __ push(Immediate(0));  // High word of unsigned value.
+      __ push(dst_);
       __ fild_d(Operand(esp, 0));
       __ Drop(2);
     } else {