From c9eefb3f886464cccce28a2c1e82ec2bbf884500 Mon Sep 17 00:00:00 2001 From: "fschneider@chromium.org" Date: Tue, 28 Jun 2011 09:09:07 +0000 Subject: [PATCH] Fix bug in register assignment of IsObjectAndBranch. Make sure that input and temp registers don't overlap. Review URL: http://codereview.chromium.org/7273026 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8443 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/lithium-arm.cc | 2 +- src/ia32/lithium-ia32.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc index 9849f4a..3ec4ba1 100644 --- a/src/arm/lithium-arm.cc +++ b/src/arm/lithium-arm.cc @@ -1098,7 +1098,7 @@ LInstruction* LChunkBuilder::DoTest(HTest* instr) { 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()), diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc index 9981991..1bece63 100644 --- a/src/ia32/lithium-ia32.cc +++ b/src/ia32/lithium-ia32.cc @@ -1098,7 +1098,7 @@ LInstruction* LChunkBuilder::DoTest(HTest* instr) { 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()) { -- 2.7.4