Revision: 12465
Author:   [email protected]
Date:     Thu Sep  6 06:51:05 2012
Log:      Merged r12226 into 3.11 branch.

x64 BinaryOpStub::GenerateSmiCode uses wrong registers in one code path.

Out of courtesy for NodeJS

Review URL: https://chromiumcodereview.appspot.com/10916141
http://code.google.com/p/v8/source/detail?r=12465

Modified:
 /branches/3.11/src/version.cc
 /branches/3.11/src/x64/code-stubs-x64.cc

=======================================
--- /branches/3.11/src/version.cc       Thu Sep  6 01:05:29 2012
+++ /branches/3.11/src/version.cc       Thu Sep  6 06:51:05 2012
@@ -35,7 +35,7 @@
 #define MAJOR_VERSION     3
 #define MINOR_VERSION     11
 #define BUILD_NUMBER      10
-#define PATCH_LEVEL       21
+#define PATCH_LEVEL       22
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
 #define IS_CANDIDATE_VERSION 0
=======================================
--- /branches/3.11/src/x64/code-stubs-x64.cc    Tue May 29 06:20:14 2012
+++ /branches/3.11/src/x64/code-stubs-x64.cc    Thu Sep  6 06:51:05 2012
@@ -999,8 +999,8 @@
     SmiCodeGenerateHeapNumberResults allow_heapnumber_results) {

   // Arguments to BinaryOpStub are in rdx and rax.
-  Register left = rdx;
-  Register right = rax;
+  const Register left = rdx;
+  const Register right = rax;

   // We only generate heapnumber answers for overflowing calculations
   // for the four basic arithmetic operations and logical right shift by 0.
@@ -1042,20 +1042,16 @@

     case Token::DIV:
       // SmiDiv will not accept left in rdx or right in rax.
-      left = rcx;
-      right = rbx;
       __ movq(rbx, rax);
       __ movq(rcx, rdx);
-      __ SmiDiv(rax, left, right, &use_fp_on_smis);
+      __ SmiDiv(rax, rcx, rbx, &use_fp_on_smis);
       break;

     case Token::MOD:
       // SmiMod will not accept left in rdx or right in rax.
-      left = rcx;
-      right = rbx;
       __ movq(rbx, rax);
       __ movq(rcx, rdx);
-      __ SmiMod(rax, left, right, &use_fp_on_smis);
+      __ SmiMod(rax, rcx, rbx, &use_fp_on_smis);
       break;

     case Token::BIT_OR: {

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to