| Index: src/ia32/lithium-ia32.cc
|
| ===================================================================
|
| --- src/ia32/lithium-ia32.cc (revision 6698)
|
| +++ src/ia32/lithium-ia32.cc (working copy)
|
| @@ -1305,6 +1305,29 @@
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoNeg(HNeg* instr) {
|
| + Representation r = instr->representation();
|
| + if (r.IsInteger32()) {
|
| + LOperand* input = UseRegister(instr->value());
|
| + LNegI* result = new LNegI(input);
|
| + if (instr->CheckFlag(HValue::kBailoutOnMinusZero) ||
|
| + instr->CheckFlag(HValue::kCanOverflow)) {
|
| + AssignEnvironment(result);
|
| + }
|
| + return DefineSameAsFirst(result);
|
| + } else if (r.IsDouble()) {
|
| + LOperand* input = UseRegister(instr->value());
|
| + LOperand* temp = TempRegister();
|
| + return DefineSameAsFirst(new LNegD(input, temp));
|
| + } else {
|
| + ASSERT(r.IsTagged());
|
| + LOperand* input = UseFixed(instr->value(), eax);
|
| + LNegT* result = new LNegT(input);
|
| + return MarkAsCall(DefineFixed(result, eax), instr);
|
| + }
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoBitOr(HBitOr* instr) {
|
| return DoBit(Token::BIT_OR, instr);
|
| }
|
|
|