From f437f859c9b4b14767992af335865b4185884474 Mon Sep 17 00:00:00 2001 From: "fschneider@chromium.org" Date: Thu, 30 Jun 2011 18:14:48 +0000 Subject: [PATCH] Relax register constraints for instructions that support memory operands on IA32. Review URL: http://codereview.chromium.org/7290006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8501 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/ia32/lithium-codegen-ia32.cc | 10 +++++----- src/ia32/lithium-ia32.cc | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc index 122500b..080b2a0 100644 --- a/src/ia32/lithium-codegen-ia32.cc +++ b/src/ia32/lithium-codegen-ia32.cc @@ -1496,7 +1496,7 @@ void LCodeGen::DoCmpIDAndBranch(LCmpIDAndBranch* instr) { void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { Register left = ToRegister(instr->InputAt(0)); - Register right = ToRegister(instr->InputAt(1)); + Operand right = ToOperand(instr->InputAt(1)); int false_block = chunk_->LookupDestination(instr->false_block_id()); int true_block = chunk_->LookupDestination(instr->true_block_id()); @@ -3684,14 +3684,14 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) { void LCodeGen::DoCheckSmi(LCheckSmi* instr) { LOperand* input = instr->InputAt(0); - __ test(ToRegister(input), Immediate(kSmiTagMask)); + __ test(ToOperand(input), Immediate(kSmiTagMask)); DeoptimizeIf(not_zero, instr->environment()); } void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) { LOperand* input = instr->InputAt(0); - __ test(ToRegister(input), Immediate(kSmiTagMask)); + __ test(ToOperand(input), Immediate(kSmiTagMask)); DeoptimizeIf(zero, instr->environment()); } @@ -3743,8 +3743,8 @@ void LCodeGen::DoCheckInstanceType(LCheckInstanceType* instr) { void LCodeGen::DoCheckFunction(LCheckFunction* instr) { ASSERT(instr->InputAt(0)->IsRegister()); - Register reg = ToRegister(instr->InputAt(0)); - __ cmp(reg, instr->hydrogen()->target()); + Operand operand = ToOperand(instr->InputAt(0)); + __ cmp(operand, instr->hydrogen()->target()); DeoptimizeIf(not_equal, instr->environment()); } diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc index 7ff6a79..db69047 100644 --- a/src/ia32/lithium-ia32.cc +++ b/src/ia32/lithium-ia32.cc @@ -1433,7 +1433,7 @@ LInstruction* LChunkBuilder::DoCompareIDAndBranch( LInstruction* LChunkBuilder::DoCompareObjectEqAndBranch( HCompareObjectEqAndBranch* instr) { LOperand* left = UseRegisterAtStart(instr->left()); - LOperand* right = UseRegisterAtStart(instr->right()); + LOperand* right = UseAtStart(instr->right()); return new LCmpObjectEqAndBranch(left, right); } @@ -1540,7 +1540,7 @@ LInstruction* LChunkBuilder::DoValueOf(HValueOf* instr) { LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) { return AssignEnvironment(new LBoundsCheck(UseRegisterAtStart(instr->index()), - Use(instr->length()))); + UseAtStart(instr->length()))); } @@ -1633,7 +1633,7 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) { LInstruction* LChunkBuilder::DoCheckNonSmi(HCheckNonSmi* instr) { - LOperand* value = UseRegisterAtStart(instr->value()); + LOperand* value = UseAtStart(instr->value()); return AssignEnvironment(new LCheckNonSmi(value)); } @@ -1654,13 +1654,13 @@ LInstruction* LChunkBuilder::DoCheckPrototypeMaps(HCheckPrototypeMaps* instr) { LInstruction* LChunkBuilder::DoCheckSmi(HCheckSmi* instr) { - LOperand* value = UseRegisterAtStart(instr->value()); + LOperand* value = UseAtStart(instr->value()); return AssignEnvironment(new LCheckSmi(value)); } LInstruction* LChunkBuilder::DoCheckFunction(HCheckFunction* instr) { - LOperand* value = UseRegisterAtStart(instr->value()); + LOperand* value = UseAtStart(instr->value()); return AssignEnvironment(new LCheckFunction(value)); } -- 2.7.4