Revision: 8443
Author:   [email protected]
Date:     Tue Jun 28 02:09:07 2011
Log:      Fix bug in register assignment of IsObjectAndBranch.

Make sure that input and temp registers don't overlap.
Review URL: http://codereview.chromium.org/7273026
http://code.google.com/p/v8/source/detail?r=8443

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

=======================================
--- /branches/bleeding_edge/src/arm/lithium-arm.cc      Tue Jun 28 01:54:09 2011
+++ /branches/bleeding_edge/src/arm/lithium-arm.cc      Tue Jun 28 02:09:07 2011
@@ -1098,7 +1098,7 @@
     HIsObject* compare = HIsObject::cast(v);
     ASSERT(compare->value()->representation().IsTagged());
     LOperand* temp = TempRegister();
- return new LIsObjectAndBranch(UseRegisterAtStart(compare->value()), temp);
+    return new LIsObjectAndBranch(UseRegister(compare->value()), temp);
   } else if (v->IsCompareObjectEq()) {
     HCompareObjectEq* compare = HCompareObjectEq::cast(v);
     return new LCmpObjectEqAndBranch(UseRegisterAtStart(compare->left()),
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Tue Jun 28 01:54:09 2011 +++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Tue Jun 28 02:09:07 2011
@@ -1098,7 +1098,7 @@
     ASSERT(compare->value()->representation().IsTagged());
     LOperand* temp1 = TempRegister();
     LOperand* temp2 = TempRegister();
-    return new LIsObjectAndBranch(UseRegisterAtStart(compare->value()),
+    return new LIsObjectAndBranch(UseRegister(compare->value()),
                                   temp1,
                                   temp2);
   } else if (v->IsCompareObjectEq()) {

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

Reply via email to