Reviewers: Jakob,
Description:
Merged r12226 into 3.11 branch.
x64 BinaryOpStub::GenerateSmiCode uses wrong registers in one code path.
Out of courtesy for NodeJS
Please review this at https://chromiumcodereview.appspot.com/10916141/
SVN Base: https://v8.googlecode.com/svn/branches/3.11
Affected files:
M src/version.cc
M src/x64/code-stubs-x64.cc
Index: src/version.cc
diff --git a/src/version.cc b/src/version.cc
index
1dcc839a61d29df983b743854bdb2b941e22d46e..102b64552515bc02a74a43ed01ec637b4ff3096c
100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -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
Index: src/x64/code-stubs-x64.cc
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
index
61d6c8791190fa624a4620f6db60da894c64b64b..17b5ce93b4c14df37f3419946c4f25f037ec74ca
100644
--- a/src/x64/code-stubs-x64.cc
+++ b/src/x64/code-stubs-x64.cc
@@ -999,8 +999,8 @@ void BinaryOpStub::GenerateSmiCode(
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 @@ void BinaryOpStub::GenerateSmiCode(
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