Index: src/arm/lithium-arm.cc |
=================================================================== |
--- src/arm/lithium-arm.cc (revision 6282) |
+++ src/arm/lithium-arm.cc (working copy) |
@@ -945,22 +945,21 @@ |
Token::Value op = compare->token(); |
HValue* left = compare->left(); |
HValue* right = compare->right(); |
- if (left->representation().IsInteger32()) { |
+ Representation r = compare->GetInputRepresentation(); |
+ if (r.IsInteger32()) { |
+ ASSERT(left->representation().IsInteger32()); |
ASSERT(right->representation().IsInteger32()); |
- return new LCmpIDAndBranch(op, |
- UseRegisterAtStart(left), |
+ return new LCmpIDAndBranch(UseRegisterAtStart(left), |
UseOrConstantAtStart(right), |
first_id, |
- second_id, |
- false); |
- } else if (left->representation().IsDouble()) { |
+ second_id); |
+ } else if (r.IsDouble()) { |
+ ASSERT(left->representation().IsDouble()); |
ASSERT(right->representation().IsDouble()); |
- return new LCmpIDAndBranch(op, |
- UseRegisterAtStart(left), |
+ return new LCmpIDAndBranch(UseRegisterAtStart(left), |
UseRegisterAtStart(right), |
first_id, |
- second_id, |
- true); |
+ second_id); |
} else { |
ASSERT(left->representation().IsTagged()); |
ASSERT(right->representation().IsTagged()); |
@@ -998,7 +997,6 @@ |
ASSERT(compare->value()->representation().IsTagged()); |
return new LIsNullAndBranch(UseRegisterAtStart(compare->value()), |
- compare->is_strict(), |
first_id, |
second_id); |
} else if (v->IsIsObject()) { |
@@ -1350,17 +1348,22 @@ |
LInstruction* LChunkBuilder::DoCompare(HCompare* instr) { |
Token::Value op = instr->token(); |
- if (instr->left()->representation().IsInteger32()) { |
+ Representation r = instr->GetInputRepresentation(); |
+ if (r.IsInteger32()) { |
+ ASSERT(instr->left()->representation().IsInteger32()); |
ASSERT(instr->right()->representation().IsInteger32()); |
LOperand* left = UseRegisterAtStart(instr->left()); |
LOperand* right = UseOrConstantAtStart(instr->right()); |
- return DefineAsRegister(new LCmpID(op, left, right, false)); |
- } else if (instr->left()->representation().IsDouble()) { |
+ return DefineAsRegister(new LCmpID(left, right)); |
+ } else if (r.IsDouble()) { |
+ ASSERT(instr->left()->representation().IsDouble()); |
ASSERT(instr->right()->representation().IsDouble()); |
LOperand* left = UseRegisterAtStart(instr->left()); |
LOperand* right = UseRegisterAtStart(instr->right()); |
- return DefineAsRegister(new LCmpID(op, left, right, true)); |
+ return DefineAsRegister(new LCmpID(left, right)); |
} else { |
+ ASSERT(instr->left()->representation().IsTagged()); |
+ ASSERT(instr->right()->representation().IsTagged()); |
bool reversed = (op == Token::GT || op == Token::LTE); |
LOperand* left = UseFixed(instr->left(), reversed ? r0 : r1); |
LOperand* right = UseFixed(instr->right(), reversed ? r1 : r0); |
@@ -1383,8 +1386,7 @@ |
ASSERT(instr->value()->representation().IsTagged()); |
LOperand* value = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LIsNull(value, |
- instr->is_strict())); |
+ return DefineAsRegister(new LIsNull(value)); |
} |