Index: src/arm/lithium-arm.cc |
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc |
index a84045b65cb37c42b6c7c14fdbdee6dda36e5ac7..d89a8982fe4d51756569af8f923efc75641e6650 100644 |
--- a/src/arm/lithium-arm.cc |
+++ b/src/arm/lithium-arm.cc |
@@ -778,8 +778,8 @@ LInstruction* LChunkBuilder::DoArithmeticT(Token::Value op, |
op == Token::SUB); |
HValue* left = instr->left(); |
HValue* right = instr->right(); |
- ASSERT(left->representation().IsSmiOrTagged()); |
- ASSERT(right->representation().IsSmiOrTagged()); |
+ ASSERT(left->representation().IsTagged()); |
+ ASSERT(right->representation().IsTagged()); |
LOperand* left_operand = UseFixed(left, r1); |
LOperand* right_operand = UseFixed(right, r0); |
LArithmeticT* result = |
@@ -1313,17 +1313,17 @@ LInstruction* LChunkBuilder::DoShl(HShl* instr) { |
LInstruction* LChunkBuilder::DoBitwise(HBitwise* instr) { |
- if (instr->representation().IsInteger32()) { |
- ASSERT(instr->left()->representation().IsInteger32()); |
- ASSERT(instr->right()->representation().IsInteger32()); |
+ if (instr->representation().IsSmiOrInteger32()) { |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand()); |
LOperand* right = UseOrConstantAtStart(instr->BetterRightOperand()); |
return DefineAsRegister(new(zone()) LBitI(left, right)); |
} else { |
- ASSERT(instr->representation().IsSmiOrTagged()); |
- ASSERT(instr->left()->representation().IsSmiOrTagged()); |
- ASSERT(instr->right()->representation().IsSmiOrTagged()); |
+ ASSERT(instr->representation().IsTagged()); |
+ ASSERT(instr->left()->representation().IsTagged()); |
+ ASSERT(instr->right()->representation().IsTagged()); |
LOperand* left = UseFixed(instr->left(), r1); |
LOperand* right = UseFixed(instr->right(), r0); |
@@ -1345,7 +1345,9 @@ LInstruction* LChunkBuilder::DoBitNot(HBitNot* instr) { |
LInstruction* LChunkBuilder::DoDiv(HDiv* instr) { |
if (instr->representation().IsDouble()) { |
return DoArithmeticD(Token::DIV, instr); |
- } else if (instr->representation().IsInteger32()) { |
+ } else if (instr->representation().IsSmiOrInteger32()) { |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
if (instr->HasPowerOf2Divisor()) { |
ASSERT(!instr->CheckFlag(HValue::kCanBeDivByZero)); |
LOperand* value = UseRegisterAtStart(instr->left()); |
@@ -1436,9 +1438,9 @@ LInstruction* LChunkBuilder::DoMathFloorOfDiv(HMathFloorOfDiv* instr) { |
LInstruction* LChunkBuilder::DoMod(HMod* instr) { |
HValue* left = instr->left(); |
HValue* right = instr->right(); |
- if (instr->representation().IsInteger32()) { |
- ASSERT(left->representation().IsInteger32()); |
- ASSERT(right->representation().IsInteger32()); |
+ if (instr->representation().IsSmiOrInteger32()) { |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
if (instr->HasPowerOf2Divisor()) { |
ASSERT(!right->CanBeZero()); |
LModI* mod = new(zone()) LModI(UseRegisterAtStart(left), |
@@ -1478,7 +1480,7 @@ LInstruction* LChunkBuilder::DoMod(HMod* instr) { |
? AssignEnvironment(result) |
: result; |
} |
- } else if (instr->representation().IsSmiOrTagged()) { |
+ } else if (instr->representation().IsTagged()) { |
return DoArithmeticT(Token::MOD, instr); |
} else { |
ASSERT(instr->representation().IsDouble()); |
@@ -1494,9 +1496,9 @@ LInstruction* LChunkBuilder::DoMod(HMod* instr) { |
LInstruction* LChunkBuilder::DoMul(HMul* instr) { |
- if (instr->representation().IsInteger32()) { |
- ASSERT(instr->left()->representation().IsInteger32()); |
- ASSERT(instr->right()->representation().IsInteger32()); |
+ if (instr->representation().IsSmiOrInteger32()) { |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
LOperand* left; |
LOperand* right = UseOrConstant(instr->BetterRightOperand()); |
LOperand* temp = NULL; |
@@ -1545,9 +1547,9 @@ LInstruction* LChunkBuilder::DoMul(HMul* instr) { |
LInstruction* LChunkBuilder::DoSub(HSub* instr) { |
- if (instr->representation().IsInteger32()) { |
- ASSERT(instr->left()->representation().IsInteger32()); |
- ASSERT(instr->right()->representation().IsInteger32()); |
+ if (instr->representation().IsSmiOrInteger32()) { |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
if (instr->left()->IsConstant()) { |
// If lhs is constant, do reverse subtraction instead. |
@@ -1575,9 +1577,9 @@ LInstruction* LChunkBuilder::DoSub(HSub* instr) { |
LInstruction* LChunkBuilder::DoRSub(HSub* instr) { |
- ASSERT(instr->representation().IsInteger32()); |
- ASSERT(instr->left()->representation().IsInteger32()); |
- ASSERT(instr->right()->representation().IsInteger32()); |
+ ASSERT(instr->representation().IsSmiOrInteger32()); |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
// Note: The lhs of the subtraction becomes the rhs of the |
// reverse-subtraction. |
@@ -1613,9 +1615,9 @@ LInstruction* LChunkBuilder::DoMultiplySub(HValue* minuend, HMul* mul) { |
LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { |
- if (instr->representation().IsInteger32()) { |
- ASSERT(instr->left()->representation().IsInteger32()); |
- ASSERT(instr->right()->representation().IsInteger32()); |
+ if (instr->representation().IsSmiOrInteger32()) { |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand()); |
LOperand* right = UseOrConstantAtStart(instr->BetterRightOperand()); |
LAddI* add = new(zone()) LAddI(left, right); |
@@ -1636,7 +1638,7 @@ LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { |
return DoArithmeticD(Token::ADD, instr); |
} else { |
- ASSERT(instr->representation().IsSmiOrTagged()); |
+ ASSERT(instr->representation().IsTagged()); |
return DoArithmeticT(Token::ADD, instr); |
} |
} |
@@ -1645,9 +1647,9 @@ LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { |
LInstruction* LChunkBuilder::DoMathMinMax(HMathMinMax* instr) { |
LOperand* left = NULL; |
LOperand* right = NULL; |
- if (instr->representation().IsInteger32()) { |
- ASSERT(instr->left()->representation().IsInteger32()); |
- ASSERT(instr->right()->representation().IsInteger32()); |
+ if (instr->representation().IsSmiOrInteger32()) { |
+ ASSERT(instr->left()->representation().Equals(instr->representation())); |
+ ASSERT(instr->right()->representation().Equals(instr->representation())); |
left = UseRegisterAtStart(instr->BetterLeftOperand()); |
right = UseOrConstantAtStart(instr->BetterRightOperand()); |
} else { |
@@ -2208,8 +2210,7 @@ LInstruction* LChunkBuilder::DoLoadExternalArrayPointer( |
LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) { |
- ASSERT(instr->key()->representation().IsInteger32() || |
- instr->key()->representation().IsSmi()); |
+ ASSERT(instr->key()->representation().IsSmiOrInteger32()); |
ElementsKind elements_kind = instr->elements_kind(); |
LOperand* key = UseRegisterOrConstantAtStart(instr->key()); |
LLoadKeyed* result = NULL; |