Reviewers: Kevin Millikin,
Description:
Fix bug in register assignment of IsObjectAndBranch.
Make sure that input and temp registers don't overlap.
Please review this at http://codereview.chromium.org/7273026/
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/arm/lithium-arm.cc
M src/ia32/lithium-ia32.cc
Index: src/arm/lithium-arm.cc
===================================================================
--- src/arm/lithium-arm.cc (revision 8440)
+++ src/arm/lithium-arm.cc (working copy)
@@ -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()),
Index: src/ia32/lithium-ia32.cc
===================================================================
--- src/ia32/lithium-ia32.cc (revision 8440)
+++ src/ia32/lithium-ia32.cc (working copy)
@@ -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