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
This commit is contained in:
parent
473f833699
commit
f437f859c9
@ -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());
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user