| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 // LClassOfTestAndBranch | 114 // LClassOfTestAndBranch |
| 115 // LDeleteProperty | 115 // LDeleteProperty |
| 116 // LDoubleToI | 116 // LDoubleToI |
| 117 // LHasCachedArrayIndex | 117 // LHasCachedArrayIndex |
| 118 // LHasCachedArrayIndexAndBranch | 118 // LHasCachedArrayIndexAndBranch |
| 119 // LHasInstanceType | 119 // LHasInstanceType |
| 120 // LHasInstanceTypeAndBranch | 120 // LHasInstanceTypeAndBranch |
| 121 // LInteger32ToDouble | 121 // LInteger32ToDouble |
| 122 // LIsNull | 122 // LIsNull |
| 123 // LIsNullAndBranch | 123 // LIsNullAndBranch |
| 124 // LIsObject |
| 125 // LIsObjectAndBranch |
| 124 // LIsSmi | 126 // LIsSmi |
| 125 // LIsSmiAndBranch | 127 // LIsSmiAndBranch |
| 126 // LLoadNamedField | 128 // LLoadNamedField |
| 127 // LLoadNamedGeneric | 129 // LLoadNamedGeneric |
| 128 // LNumberTagD | 130 // LNumberTagD |
| 129 // LNumberTagI | 131 // LNumberTagI |
| 130 // LPushArgument | 132 // LPushArgument |
| 131 // LReturn | 133 // LReturn |
| 132 // LSmiTag | 134 // LSmiTag |
| 133 // LStoreGlobal | 135 // LStoreGlobal |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 V(FunctionLiteral) \ | 198 V(FunctionLiteral) \ |
| 197 V(Gap) \ | 199 V(Gap) \ |
| 198 V(GlobalObject) \ | 200 V(GlobalObject) \ |
| 199 V(GlobalReceiver) \ | 201 V(GlobalReceiver) \ |
| 200 V(Goto) \ | 202 V(Goto) \ |
| 201 V(InstanceOf) \ | 203 V(InstanceOf) \ |
| 202 V(InstanceOfAndBranch) \ | 204 V(InstanceOfAndBranch) \ |
| 203 V(Integer32ToDouble) \ | 205 V(Integer32ToDouble) \ |
| 204 V(IsNull) \ | 206 V(IsNull) \ |
| 205 V(IsNullAndBranch) \ | 207 V(IsNullAndBranch) \ |
| 208 V(IsObject) \ |
| 209 V(IsObjectAndBranch) \ |
| 206 V(IsSmi) \ | 210 V(IsSmi) \ |
| 207 V(IsSmiAndBranch) \ | 211 V(IsSmiAndBranch) \ |
| 208 V(HasInstanceType) \ | 212 V(HasInstanceType) \ |
| 209 V(HasInstanceTypeAndBranch) \ | 213 V(HasInstanceTypeAndBranch) \ |
| 210 V(HasCachedArrayIndex) \ | 214 V(HasCachedArrayIndex) \ |
| 211 V(HasCachedArrayIndexAndBranch) \ | 215 V(HasCachedArrayIndexAndBranch) \ |
| 212 V(ClassOfTest) \ | 216 V(ClassOfTest) \ |
| 213 V(ClassOfTestAndBranch) \ | 217 V(ClassOfTestAndBranch) \ |
| 214 V(Label) \ | 218 V(Label) \ |
| 215 V(LazyBailout) \ | 219 V(LazyBailout) \ |
| (...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 | 662 |
| 659 class LUnaryMathOperation: public LUnaryOperation { | 663 class LUnaryMathOperation: public LUnaryOperation { |
| 660 public: | 664 public: |
| 661 explicit LUnaryMathOperation(LOperand* value) | 665 explicit LUnaryMathOperation(LOperand* value) |
| 662 : LUnaryOperation(value) { } | 666 : LUnaryOperation(value) { } |
| 663 | 667 |
| 664 DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation") | 668 DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation") |
| 665 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) | 669 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) |
| 666 | 670 |
| 667 virtual void PrintDataTo(StringStream* stream) const; | 671 virtual void PrintDataTo(StringStream* stream) const; |
| 668 MathFunctionId op() const { return hydrogen()->op(); } | 672 BuiltinFunctionId op() const { return hydrogen()->op(); } |
| 669 }; | 673 }; |
| 670 | 674 |
| 671 | 675 |
| 672 class LCmpJSObjectEq: public LBinaryOperation { | 676 class LCmpJSObjectEq: public LBinaryOperation { |
| 673 public: | 677 public: |
| 674 LCmpJSObjectEq(LOperand* left, LOperand* right) | 678 LCmpJSObjectEq(LOperand* left, LOperand* right) |
| 675 : LBinaryOperation(left, right) {} | 679 : LBinaryOperation(left, right) {} |
| 676 | 680 |
| 677 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq") | 681 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq") |
| 678 }; | 682 }; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 | 739 |
| 736 LOperand* temp() const { return temp_; } | 740 LOperand* temp() const { return temp_; } |
| 737 | 741 |
| 738 private: | 742 private: |
| 739 LOperand* temp_; | 743 LOperand* temp_; |
| 740 int true_block_id_; | 744 int true_block_id_; |
| 741 int false_block_id_; | 745 int false_block_id_; |
| 742 }; | 746 }; |
| 743 | 747 |
| 744 | 748 |
| 749 class LIsObject: public LUnaryOperation { |
| 750 public: |
| 751 LIsObject(LOperand* value, LOperand* temp) |
| 752 : LUnaryOperation(value), temp_(temp) {} |
| 753 |
| 754 DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object") |
| 755 |
| 756 LOperand* temp() const { return temp_; } |
| 757 |
| 758 private: |
| 759 LOperand* temp_; |
| 760 }; |
| 761 |
| 762 |
| 763 class LIsObjectAndBranch: public LIsObject { |
| 764 public: |
| 765 LIsObjectAndBranch(LOperand* value, |
| 766 LOperand* temp, |
| 767 LOperand* temp2, |
| 768 int true_block_id, |
| 769 int false_block_id) |
| 770 : LIsObject(value, temp), |
| 771 temp2_(temp2), |
| 772 true_block_id_(true_block_id), |
| 773 false_block_id_(false_block_id) { } |
| 774 |
| 775 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch") |
| 776 virtual void PrintDataTo(StringStream* stream) const; |
| 777 virtual bool IsControl() const { return true; } |
| 778 |
| 779 int true_block_id() const { return true_block_id_; } |
| 780 int false_block_id() const { return false_block_id_; } |
| 781 |
| 782 LOperand* temp2() const { return temp2_; } |
| 783 |
| 784 private: |
| 785 LOperand* temp2_; |
| 786 int true_block_id_; |
| 787 int false_block_id_; |
| 788 }; |
| 789 |
| 790 |
| 745 class LIsSmi: public LUnaryOperation { | 791 class LIsSmi: public LUnaryOperation { |
| 746 public: | 792 public: |
| 747 explicit LIsSmi(LOperand* value) : LUnaryOperation(value) {} | 793 explicit LIsSmi(LOperand* value) : LUnaryOperation(value) {} |
| 748 | 794 |
| 749 DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi") | 795 DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi") |
| 750 DECLARE_HYDROGEN_ACCESSOR(IsSmi) | 796 DECLARE_HYDROGEN_ACCESSOR(IsSmi) |
| 751 }; | 797 }; |
| 752 | 798 |
| 753 | 799 |
| 754 class LIsSmiAndBranch: public LIsSmi { | 800 class LIsSmiAndBranch: public LIsSmi { |
| (...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1388 class LNumberTagI: public LUnaryOperation { | 1434 class LNumberTagI: public LUnaryOperation { |
| 1389 public: | 1435 public: |
| 1390 explicit LNumberTagI(LOperand* use) : LUnaryOperation(use) { } | 1436 explicit LNumberTagI(LOperand* use) : LUnaryOperation(use) { } |
| 1391 | 1437 |
| 1392 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i") | 1438 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i") |
| 1393 }; | 1439 }; |
| 1394 | 1440 |
| 1395 | 1441 |
| 1396 class LNumberTagD: public LUnaryOperation { | 1442 class LNumberTagD: public LUnaryOperation { |
| 1397 public: | 1443 public: |
| 1398 explicit LNumberTagD(LOperand* value, LOperand* temp) | 1444 LNumberTagD(LOperand* value, LOperand* temp1, LOperand* temp2) |
| 1399 : LUnaryOperation(value), temp_(temp) { } | 1445 : LUnaryOperation(value), temp1_(temp1), temp2_(temp2) { } |
| 1400 | 1446 |
| 1401 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") | 1447 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") |
| 1402 | 1448 |
| 1403 LOperand* temp() const { return temp_; } | 1449 LOperand* temp1() const { return temp1_; } |
| 1450 LOperand* temp2() const { return temp2_; } |
| 1404 | 1451 |
| 1405 private: | 1452 private: |
| 1406 LOperand* temp_; | 1453 LOperand* temp1_; |
| 1454 LOperand* temp2_; |
| 1407 }; | 1455 }; |
| 1408 | 1456 |
| 1409 | 1457 |
| 1410 // Sometimes truncating conversion from a tagged value to an int32. | 1458 // Sometimes truncating conversion from a tagged value to an int32. |
| 1411 class LDoubleToI: public LUnaryOperation { | 1459 class LDoubleToI: public LUnaryOperation { |
| 1412 public: | 1460 public: |
| 1413 explicit LDoubleToI(LOperand* value) : LUnaryOperation(value) { } | 1461 explicit LDoubleToI(LOperand* value) : LUnaryOperation(value) { } |
| 1414 | 1462 |
| 1415 DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i") | 1463 DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i") |
| 1416 DECLARE_HYDROGEN_ACCESSOR(Change) | 1464 DECLARE_HYDROGEN_ACCESSOR(Change) |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1880 | 1928 |
| 1881 int ParameterAt(int index); | 1929 int ParameterAt(int index); |
| 1882 int GetParameterStackSlot(int index) const; | 1930 int GetParameterStackSlot(int index) const; |
| 1883 int spill_slot_count() const { return spill_slot_count_; } | 1931 int spill_slot_count() const { return spill_slot_count_; } |
| 1884 HGraph* graph() const { return graph_; } | 1932 HGraph* graph() const { return graph_; } |
| 1885 const ZoneList<LInstruction*>* instructions() const { return &instructions_; } | 1933 const ZoneList<LInstruction*>* instructions() const { return &instructions_; } |
| 1886 void AddGapMove(int index, LOperand* from, LOperand* to); | 1934 void AddGapMove(int index, LOperand* from, LOperand* to); |
| 1887 LGap* GetGapAt(int index) const; | 1935 LGap* GetGapAt(int index) const; |
| 1888 bool IsGapAt(int index) const; | 1936 bool IsGapAt(int index) const; |
| 1889 int NearestGapPos(int index) const; | 1937 int NearestGapPos(int index) const; |
| 1890 int NearestNextGapPos(int index) const; | |
| 1891 void MarkEmptyBlocks(); | 1938 void MarkEmptyBlocks(); |
| 1892 const ZoneList<LPointerMap*>* pointer_maps() const { return &pointer_maps_; } | 1939 const ZoneList<LPointerMap*>* pointer_maps() const { return &pointer_maps_; } |
| 1893 LLabel* GetLabel(int block_id) const { | 1940 LLabel* GetLabel(int block_id) const { |
| 1894 HBasicBlock* block = graph_->blocks()->at(block_id); | 1941 HBasicBlock* block = graph_->blocks()->at(block_id); |
| 1895 int first_instruction = block->first_instruction_index(); | 1942 int first_instruction = block->first_instruction_index(); |
| 1896 return LLabel::cast(instructions_[first_instruction]); | 1943 return LLabel::cast(instructions_[first_instruction]); |
| 1897 } | 1944 } |
| 1898 int LookupDestination(int block_id) const { | 1945 int LookupDestination(int block_id) const { |
| 1899 LLabel* cur = GetLabel(block_id); | 1946 LLabel* cur = GetLabel(block_id); |
| 1900 while (cur->replacement() != NULL) { | 1947 while (cur->replacement() != NULL) { |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2059 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2106 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2060 }; | 2107 }; |
| 2061 | 2108 |
| 2062 #undef DECLARE_HYDROGEN_ACCESSOR | 2109 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2063 #undef DECLARE_INSTRUCTION | 2110 #undef DECLARE_INSTRUCTION |
| 2064 #undef DECLARE_CONCRETE_INSTRUCTION | 2111 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2065 | 2112 |
| 2066 } } // namespace v8::internal | 2113 } } // namespace v8::internal |
| 2067 | 2114 |
| 2068 #endif // V8_ARM_LITHIUM_ARM_H_ | 2115 #endif // V8_ARM_LITHIUM_ARM_H_ |
| OLD | NEW |