Revision: 16745
Author:   [email protected]
Date:     Tue Sep 17 07:29:26 2013 UTC
Log:      Refactoring only: Make it clear that MOD is special.

LArithmeticD should really be 5 different instructions... :-/

[email protected]

Review URL: https://codereview.chromium.org/23800005
http://code.google.com/p/v8/source/detail?r=16745

Modified:
 /branches/bleeding_edge/src/arm/lithium-arm.cc
 /branches/bleeding_edge/src/ia32/lithium-ia32.cc
 /branches/bleeding_edge/src/mips/lithium-mips.cc
 /branches/bleeding_edge/src/x64/lithium-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/lithium-arm.cc Mon Sep 16 15:24:49 2013 UTC +++ /branches/bleeding_edge/src/arm/lithium-arm.cc Tue Sep 17 07:29:26 2013 UTC
@@ -756,21 +756,20 @@
   ASSERT(instr->representation().IsDouble());
   ASSERT(instr->left()->representation().IsDouble());
   ASSERT(instr->right()->representation().IsDouble());
-  LOperand* left = NULL;
-  LOperand* right = NULL;
   if (op == Token::MOD) {
-    left = UseFixedDouble(instr->left(), d1);
-    right = UseFixedDouble(instr->right(), d2);
+    LOperand* left = UseFixedDouble(instr->left(), d1);
+    LOperand* right = UseFixedDouble(instr->right(), d2);
     LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
// We call a C function for double modulo. It can't trigger a GC. We need
     // to use fixed result register for the call.
     // TODO(fschneider): Allow any register as input registers.
     return MarkAsCall(DefineFixedDouble(result, d1), instr);
+  } else {
+    LOperand* left = UseRegisterAtStart(instr->left());
+    LOperand* right = UseRegisterAtStart(instr->right());
+    LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
+    return DefineAsRegister(result);
   }
-  left = UseRegisterAtStart(instr->left());
-  right = UseRegisterAtStart(instr->right());
-  LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
-  return DefineAsRegister(result);
 }


=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Mon Sep 16 15:24:49 2013 UTC +++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Tue Sep 17 07:29:26 2013 UTC
@@ -808,11 +808,17 @@
   ASSERT(instr->representation().IsDouble());
   ASSERT(instr->left()->representation().IsDouble());
   ASSERT(instr->right()->representation().IsDouble());
-  LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
-  LOperand* right = UseRegisterAtStart(instr->BetterRightOperand());
-  LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
- if (op == Token::MOD) return MarkAsCall(DefineSameAsFirst(result), instr);
-  return DefineSameAsFirst(result);
+  if (op == Token::MOD) {
+    LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
+    LOperand* right = UseRegisterAtStart(instr->BetterRightOperand());
+    LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
+    return MarkAsCall(DefineSameAsFirst(result), instr);
+  } else {
+    LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
+    LOperand* right = UseRegisterAtStart(instr->BetterRightOperand());
+    LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
+    return DefineSameAsFirst(result);
+  }
 }


=======================================
--- /branches/bleeding_edge/src/mips/lithium-mips.cc Mon Sep 16 21:59:00 2013 UTC +++ /branches/bleeding_edge/src/mips/lithium-mips.cc Tue Sep 17 07:29:26 2013 UTC
@@ -761,21 +761,20 @@
   ASSERT(instr->representation().IsDouble());
   ASSERT(instr->left()->representation().IsDouble());
   ASSERT(instr->right()->representation().IsDouble());
-  LOperand* left = NULL;
-  LOperand* right = NULL;
   if (op == Token::MOD) {
-    left = UseFixedDouble(instr->left(), f2);
-    right = UseFixedDouble(instr->right(), f4);
+    LOperand* left = UseFixedDouble(instr->left(), f2);
+    LOperand* right = UseFixedDouble(instr->right(), f4);
     LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
// We call a C function for double modulo. It can't trigger a GC. We need
     // to use fixed result register for the call.
     // TODO(fschneider): Allow any register as input registers.
     return MarkAsCall(DefineFixedDouble(result, f2), instr);
+  } else {
+    LOperand* left = UseRegisterAtStart(instr->left());
+    LOperand* right = UseRegisterAtStart(instr->right());
+    LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
+    return DefineAsRegister(result);
   }
-  left = UseRegisterAtStart(instr->left());
-  right = UseRegisterAtStart(instr->right());
-  LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
-  return DefineAsRegister(result);
 }


=======================================
--- /branches/bleeding_edge/src/x64/lithium-x64.cc Mon Sep 16 15:24:49 2013 UTC +++ /branches/bleeding_edge/src/x64/lithium-x64.cc Tue Sep 17 07:29:26 2013 UTC
@@ -760,16 +760,17 @@
   ASSERT(instr->representation().IsDouble());
   ASSERT(instr->left()->representation().IsDouble());
   ASSERT(instr->right()->representation().IsDouble());
-  LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
-  LOperand* right = NULL;
   if (op == Token::MOD) {
-    right = UseFixedDouble(instr->BetterRightOperand(), xmm1);
+    LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
+    LOperand* right = UseFixedDouble(instr->BetterRightOperand(), xmm1);
     LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
     return MarkAsCall(DefineSameAsFirst(result), instr);
+  } else {
+    LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
+    LOperand* right = UseRegisterAtStart(instr->BetterRightOperand());
+    LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
+    return DefineSameAsFirst(result);
   }
-  right = UseRegisterAtStart(instr->BetterRightOperand());
-  LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
-  return DefineSameAsFirst(result);
 }


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to