OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1580 ASSERT(instr->left()->representation().Equals(instr->representation())); | 1580 ASSERT(instr->left()->representation().Equals(instr->representation())); |
1581 ASSERT(instr->right()->representation().Equals(instr->representation())); | 1581 ASSERT(instr->right()->representation().Equals(instr->representation())); |
1582 LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand()); | 1582 LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand()); |
1583 LOperand* right = UseOrConstantAtStart(instr->BetterRightOperand()); | 1583 LOperand* right = UseOrConstantAtStart(instr->BetterRightOperand()); |
1584 LAddI* add = new(zone()) LAddI(left, right); | 1584 LAddI* add = new(zone()) LAddI(left, right); |
1585 LInstruction* result = DefineAsRegister(add); | 1585 LInstruction* result = DefineAsRegister(add); |
1586 if (instr->CheckFlag(HValue::kCanOverflow)) { | 1586 if (instr->CheckFlag(HValue::kCanOverflow)) { |
1587 result = AssignEnvironment(result); | 1587 result = AssignEnvironment(result); |
1588 } | 1588 } |
1589 return result; | 1589 return result; |
| 1590 } else if (instr->representation().IsExternal()) { |
| 1591 ASSERT(instr->left()->representation().IsExternal()); |
| 1592 ASSERT(instr->right()->representation().IsInteger32()); |
| 1593 ASSERT(!instr->CheckFlag(HValue::kCanOverflow)); |
| 1594 LOperand* left = UseRegisterAtStart(instr->left()); |
| 1595 LOperand* right = UseOrConstantAtStart(instr->right()); |
| 1596 LAddI* add = new(zone()) LAddI(left, right); |
| 1597 LInstruction* result = DefineAsRegister(add); |
| 1598 return result; |
1590 } else if (instr->representation().IsDouble()) { | 1599 } else if (instr->representation().IsDouble()) { |
1591 if (kArchVariant == kMips32r2) { | 1600 if (kArchVariant == kMips32r2) { |
1592 if (instr->left()->IsMul()) | 1601 if (instr->left()->IsMul()) |
1593 return DoMultiplyAdd(HMul::cast(instr->left()), instr->right()); | 1602 return DoMultiplyAdd(HMul::cast(instr->left()), instr->right()); |
1594 | 1603 |
1595 if (instr->right()->IsMul()) { | 1604 if (instr->right()->IsMul()) { |
1596 ASSERT(!instr->left()->IsMul()); | 1605 ASSERT(!instr->left()->IsMul()); |
1597 return DoMultiplyAdd(HMul::cast(instr->right()), instr->left()); | 1606 return DoMultiplyAdd(HMul::cast(instr->right()), instr->left()); |
1598 } | 1607 } |
1599 } | 1608 } |
(...skipping 988 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2588 | 2597 |
2589 | 2598 |
2590 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { | 2599 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { |
2591 LOperand* object = UseRegister(instr->object()); | 2600 LOperand* object = UseRegister(instr->object()); |
2592 LOperand* index = UseRegister(instr->index()); | 2601 LOperand* index = UseRegister(instr->index()); |
2593 return DefineAsRegister(new(zone()) LLoadFieldByIndex(object, index)); | 2602 return DefineAsRegister(new(zone()) LLoadFieldByIndex(object, index)); |
2594 } | 2603 } |
2595 | 2604 |
2596 | 2605 |
2597 } } // namespace v8::internal | 2606 } } // namespace v8::internal |
OLD | NEW |