| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 | 1099 |
| 1100 | 1100 |
| 1101 LInstruction* LChunkBuilder::DoCompareMap(HCompareMap* instr) { | 1101 LInstruction* LChunkBuilder::DoCompareMap(HCompareMap* instr) { |
| 1102 ASSERT(instr->value()->representation().IsTagged()); | 1102 ASSERT(instr->value()->representation().IsTagged()); |
| 1103 LOperand* value = UseRegisterAtStart(instr->value()); | 1103 LOperand* value = UseRegisterAtStart(instr->value()); |
| 1104 return new LCmpMapAndBranch(value); | 1104 return new LCmpMapAndBranch(value); |
| 1105 } | 1105 } |
| 1106 | 1106 |
| 1107 | 1107 |
| 1108 LInstruction* LChunkBuilder::DoArgumentsLength(HArgumentsLength* length) { | 1108 LInstruction* LChunkBuilder::DoArgumentsLength(HArgumentsLength* length) { |
| 1109 Abort("Unimplemented: %s", "DoArgumentsLength"); | 1109 return DefineAsRegister(new LArgumentsLength(Use(length->value()))); |
| 1110 return NULL; | |
| 1111 } | 1110 } |
| 1112 | 1111 |
| 1113 | 1112 |
| 1114 LInstruction* LChunkBuilder::DoArgumentsElements(HArgumentsElements* elems) { | 1113 LInstruction* LChunkBuilder::DoArgumentsElements(HArgumentsElements* elems) { |
| 1115 Abort("Unimplemented: %s", "DoArgumentsElements"); | 1114 return DefineAsRegister(new LArgumentsElements); |
| 1116 return NULL; | |
| 1117 } | 1115 } |
| 1118 | 1116 |
| 1119 | 1117 |
| 1120 LInstruction* LChunkBuilder::DoInstanceOf(HInstanceOf* instr) { | 1118 LInstruction* LChunkBuilder::DoInstanceOf(HInstanceOf* instr) { |
| 1121 Abort("Unimplemented: %s", "DoInstanceOf"); | 1119 Abort("Unimplemented: %s", "DoInstanceOf"); |
| 1122 return NULL; | 1120 return NULL; |
| 1123 } | 1121 } |
| 1124 | 1122 |
| 1125 | 1123 |
| 1126 LInstruction* LChunkBuilder::DoInstanceOfKnownGlobal( | 1124 LInstruction* LChunkBuilder::DoInstanceOfKnownGlobal( |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1328 ASSERT(instr->right()->representation().IsInteger32()); | 1326 ASSERT(instr->right()->representation().IsInteger32()); |
| 1329 LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand()); | 1327 LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand()); |
| 1330 LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand()); | 1328 LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand()); |
| 1331 LAddI* add = new LAddI(left, right); | 1329 LAddI* add = new LAddI(left, right); |
| 1332 LInstruction* result = DefineSameAsFirst(add); | 1330 LInstruction* result = DefineSameAsFirst(add); |
| 1333 if (instr->CheckFlag(HValue::kCanOverflow)) { | 1331 if (instr->CheckFlag(HValue::kCanOverflow)) { |
| 1334 result = AssignEnvironment(result); | 1332 result = AssignEnvironment(result); |
| 1335 } | 1333 } |
| 1336 return result; | 1334 return result; |
| 1337 } else if (instr->representation().IsDouble()) { | 1335 } else if (instr->representation().IsDouble()) { |
| 1338 Abort("Unimplemented: %s", "DoAdd on Doubles"); | 1336 return DoArithmeticD(Token::ADD, instr); |
| 1339 } else { | 1337 } else { |
| 1340 ASSERT(instr->representation().IsTagged()); | 1338 ASSERT(instr->representation().IsTagged()); |
| 1341 return DoArithmeticT(Token::ADD, instr); | 1339 return DoArithmeticT(Token::ADD, instr); |
| 1342 } | 1340 } |
| 1343 return NULL; | 1341 return NULL; |
| 1344 } | 1342 } |
| 1345 | 1343 |
| 1346 | 1344 |
| 1347 LInstruction* LChunkBuilder::DoPower(HPower* instr) { | 1345 LInstruction* LChunkBuilder::DoPower(HPower* instr) { |
| 1348 Abort("Unimplemented: %s", "DoPower"); | 1346 Abort("Unimplemented: %s", "DoPower"); |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1735 } | 1733 } |
| 1736 | 1734 |
| 1737 | 1735 |
| 1738 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) { | 1736 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) { |
| 1739 Abort("Unimplemented: %s", "DoStringCharCodeAt"); | 1737 Abort("Unimplemented: %s", "DoStringCharCodeAt"); |
| 1740 return NULL; | 1738 return NULL; |
| 1741 } | 1739 } |
| 1742 | 1740 |
| 1743 | 1741 |
| 1744 LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { | 1742 LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { |
| 1745 Abort("Unimplemented: %s", "DoStringLength"); | 1743 LOperand* string = UseRegisterAtStart(instr->value()); |
| 1746 return NULL; | 1744 return DefineAsRegister(new LStringLength(string)); |
| 1747 } | 1745 } |
| 1748 | 1746 |
| 1749 | 1747 |
| 1750 LInstruction* LChunkBuilder::DoArrayLiteral(HArrayLiteral* instr) { | 1748 LInstruction* LChunkBuilder::DoArrayLiteral(HArrayLiteral* instr) { |
| 1751 return MarkAsCall(DefineFixed(new LArrayLiteral, rax), instr); | 1749 return MarkAsCall(DefineFixed(new LArrayLiteral, rax), instr); |
| 1752 } | 1750 } |
| 1753 | 1751 |
| 1754 | 1752 |
| 1755 LInstruction* LChunkBuilder::DoObjectLiteral(HObjectLiteral* instr) { | 1753 LInstruction* LChunkBuilder::DoObjectLiteral(HObjectLiteral* instr) { |
| 1756 return MarkAsCall(DefineFixed(new LObjectLiteral, rax), instr); | 1754 return MarkAsCall(DefineFixed(new LObjectLiteral, rax), instr); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1798 } | 1796 } |
| 1799 | 1797 |
| 1800 | 1798 |
| 1801 LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) { | 1799 LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) { |
| 1802 Abort("Unimplemented: %s", "DoArgumentsObject"); | 1800 Abort("Unimplemented: %s", "DoArgumentsObject"); |
| 1803 return NULL; | 1801 return NULL; |
| 1804 } | 1802 } |
| 1805 | 1803 |
| 1806 | 1804 |
| 1807 LInstruction* LChunkBuilder::DoAccessArgumentsAt(HAccessArgumentsAt* instr) { | 1805 LInstruction* LChunkBuilder::DoAccessArgumentsAt(HAccessArgumentsAt* instr) { |
| 1808 Abort("Unimplemented: %s", "DoAccessArgumentsAt"); | 1806 LOperand* arguments = UseRegister(instr->arguments()); |
| 1809 return NULL; | 1807 LOperand* length = UseTempRegister(instr->length()); |
| 1808 LOperand* index = Use(instr->index()); |
| 1809 LAccessArgumentsAt* result = new LAccessArgumentsAt(arguments, length, index); |
| 1810 return AssignEnvironment(DefineAsRegister(result)); |
| 1810 } | 1811 } |
| 1811 | 1812 |
| 1812 | 1813 |
| 1813 LInstruction* LChunkBuilder::DoTypeof(HTypeof* instr) { | 1814 LInstruction* LChunkBuilder::DoTypeof(HTypeof* instr) { |
| 1814 Abort("Unimplemented: %s", "DoTypeof"); | 1815 Abort("Unimplemented: %s", "DoTypeof"); |
| 1815 return NULL; | 1816 return NULL; |
| 1816 } | 1817 } |
| 1817 | 1818 |
| 1818 | 1819 |
| 1819 LInstruction* LChunkBuilder::DoTypeofIs(HTypeofIs* instr) { | 1820 LInstruction* LChunkBuilder::DoTypeofIs(HTypeofIs* instr) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1879 | 1880 |
| 1880 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { | 1881 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { |
| 1881 HEnvironment* outer = current_block_->last_environment()->outer(); | 1882 HEnvironment* outer = current_block_->last_environment()->outer(); |
| 1882 current_block_->UpdateEnvironment(outer); | 1883 current_block_->UpdateEnvironment(outer); |
| 1883 return NULL; | 1884 return NULL; |
| 1884 } | 1885 } |
| 1885 | 1886 |
| 1886 } } // namespace v8::internal | 1887 } } // namespace v8::internal |
| 1887 | 1888 |
| 1888 #endif // V8_TARGET_ARCH_X64 | 1889 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |