| Index: src/mips/lithium-mips.cc
|
| diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc
|
| index 6483715abb7ce3a91dee075f37cc1a8f219b4005..d024c246e0ff6dba9d8890248cc40c3bc282c861 100644
|
| --- a/src/mips/lithium-mips.cc
|
| +++ b/src/mips/lithium-mips.cc
|
| @@ -820,28 +820,6 @@ LInstruction* LChunkBuilder::DoDeoptimize(HDeoptimize* instr) {
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoBit(Token::Value op,
|
| - HBitwiseBinaryOperation* instr) {
|
| - if (instr->representation().IsInteger32()) {
|
| - ASSERT(instr->left()->representation().IsInteger32());
|
| - ASSERT(instr->right()->representation().IsInteger32());
|
| -
|
| - LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand());
|
| - LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand());
|
| - return DefineAsRegister(new LBitI(op, left, right));
|
| - } else {
|
| - ASSERT(instr->representation().IsTagged());
|
| - ASSERT(instr->left()->representation().IsTagged());
|
| - ASSERT(instr->right()->representation().IsTagged());
|
| -
|
| - LOperand* left = UseFixed(instr->left(), a1);
|
| - LOperand* right = UseFixed(instr->right(), a0);
|
| - LArithmeticT* result = new LArithmeticT(op, left, right);
|
| - return MarkAsCall(DefineFixed(result, v0), instr);
|
| - }
|
| -}
|
| -
|
| -
|
| LInstruction* LChunkBuilder::DoShift(Token::Value op,
|
| HBitwiseBinaryOperation* instr) {
|
| if (instr->representation().IsTagged()) {
|
| @@ -1242,8 +1220,24 @@ LInstruction* LChunkBuilder::DoShl(HShl* instr) {
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoBitAnd(HBitAnd* instr) {
|
| - return DoBit(Token::BIT_AND, instr);
|
| +LInstruction* LChunkBuilder::DoBitwise(HBitwise* instr) {
|
| + if (instr->representation().IsInteger32()) {
|
| + ASSERT(instr->left()->representation().IsInteger32());
|
| + ASSERT(instr->right()->representation().IsInteger32());
|
| +
|
| + LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand());
|
| + LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand());
|
| + return DefineAsRegister(new LBitI(left, right));
|
| + } else {
|
| + ASSERT(instr->representation().IsTagged());
|
| + ASSERT(instr->left()->representation().IsTagged());
|
| + ASSERT(instr->right()->representation().IsTagged());
|
| +
|
| + LOperand* left = UseFixed(instr->left(), a1);
|
| + LOperand* right = UseFixed(instr->right(), a0);
|
| + LArithmeticT* result = new LArithmeticT(instr->op(), left, right);
|
| + return MarkAsCall(DefineFixed(result, v0), instr);
|
| + }
|
| }
|
|
|
|
|
| @@ -1254,16 +1248,6 @@ LInstruction* LChunkBuilder::DoBitNot(HBitNot* instr) {
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoBitOr(HBitOr* instr) {
|
| - return DoBit(Token::BIT_OR, instr);
|
| -}
|
| -
|
| -
|
| -LInstruction* LChunkBuilder::DoBitXor(HBitXor* instr) {
|
| - return DoBit(Token::BIT_XOR, instr);
|
| -}
|
| -
|
| -
|
| LInstruction* LChunkBuilder::DoDiv(HDiv* instr) {
|
| if (instr->representation().IsDouble()) {
|
| return DoArithmeticD(Token::DIV, instr);
|
|
|