| Index: src/arm/lithium-arm.cc | 
| =================================================================== | 
| --- src/arm/lithium-arm.cc	(revision 9842) | 
| +++ src/arm/lithium-arm.cc	(working copy) | 
| @@ -820,28 +820,6 @@ | 
| } | 
|  | 
|  | 
| -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(), r1); | 
| -    LOperand* right = UseFixed(instr->right(), r0); | 
| -    LArithmeticT* result = new LArithmeticT(op, left, right); | 
| -    return MarkAsCall(DefineFixed(result, r0), instr); | 
| -  } | 
| -} | 
| - | 
| - | 
| LInstruction* LChunkBuilder::DoShift(Token::Value op, | 
| HBitwiseBinaryOperation* instr) { | 
| if (instr->representation().IsTagged()) { | 
| @@ -1243,8 +1221,24 @@ | 
| } | 
|  | 
|  | 
| -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(), r1); | 
| +    LOperand* right = UseFixed(instr->right(), r0); | 
| +    LArithmeticT* result = new LArithmeticT(instr->op(), left, right); | 
| +    return MarkAsCall(DefineFixed(result, r0), instr); | 
| +  } | 
| } | 
|  | 
|  | 
| @@ -1255,16 +1249,6 @@ | 
| } | 
|  | 
|  | 
| -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); | 
|  |