| 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 V(CallNamed) \ | 66 V(CallNamed) \ |
| 67 V(CallNew) \ | 67 V(CallNew) \ |
| 68 V(CallRuntime) \ | 68 V(CallRuntime) \ |
| 69 V(CallStub) \ | 69 V(CallStub) \ |
| 70 V(CheckFunction) \ | 70 V(CheckFunction) \ |
| 71 V(CheckInstanceType) \ | 71 V(CheckInstanceType) \ |
| 72 V(CheckNonSmi) \ | 72 V(CheckNonSmi) \ |
| 73 V(CheckMap) \ | 73 V(CheckMap) \ |
| 74 V(CheckPrototypeMaps) \ | 74 V(CheckPrototypeMaps) \ |
| 75 V(CheckSmi) \ | 75 V(CheckSmi) \ |
| 76 V(ClampDToUint8) \ |
| 77 V(ClampIToUint8) \ |
| 78 V(ClampTToUint8) \ |
| 76 V(ClassOfTest) \ | 79 V(ClassOfTest) \ |
| 77 V(ClassOfTestAndBranch) \ | 80 V(ClassOfTestAndBranch) \ |
| 78 V(CmpID) \ | 81 V(CmpID) \ |
| 79 V(CmpIDAndBranch) \ | 82 V(CmpIDAndBranch) \ |
| 80 V(CmpJSObjectEq) \ | 83 V(CmpJSObjectEq) \ |
| 81 V(CmpJSObjectEqAndBranch) \ | 84 V(CmpJSObjectEqAndBranch) \ |
| 82 V(CmpMapAndBranch) \ | 85 V(CmpMapAndBranch) \ |
| 86 V(CmpSymbolEq) \ |
| 87 V(CmpSymbolEqAndBranch) \ |
| 83 V(CmpT) \ | 88 V(CmpT) \ |
| 84 V(CmpTAndBranch) \ | 89 V(CmpTAndBranch) \ |
| 85 V(ConstantD) \ | 90 V(ConstantD) \ |
| 86 V(ConstantI) \ | 91 V(ConstantI) \ |
| 87 V(ConstantT) \ | 92 V(ConstantT) \ |
| 88 V(Context) \ | 93 V(Context) \ |
| 89 V(DeleteProperty) \ | 94 V(DeleteProperty) \ |
| 90 V(Deoptimize) \ | 95 V(Deoptimize) \ |
| 91 V(DivI) \ | 96 V(DivI) \ |
| 92 V(DoubleToI) \ | 97 V(DoubleToI) \ |
| 93 V(ExternalArrayLength) \ | 98 V(ExternalArrayLength) \ |
| 94 V(FixedArrayLength) \ | 99 V(FixedArrayLength) \ |
| 95 V(FunctionLiteral) \ | 100 V(FunctionLiteral) \ |
| 96 V(GetCachedArrayIndex) \ | 101 V(GetCachedArrayIndex) \ |
| 97 V(GlobalObject) \ | 102 V(GlobalObject) \ |
| 98 V(GlobalReceiver) \ | 103 V(GlobalReceiver) \ |
| 99 V(Goto) \ | 104 V(Goto) \ |
| 100 V(HasCachedArrayIndex) \ | 105 V(HasCachedArrayIndex) \ |
| 101 V(HasCachedArrayIndexAndBranch) \ | 106 V(HasCachedArrayIndexAndBranch) \ |
| 102 V(HasInstanceType) \ | 107 V(HasInstanceType) \ |
| 103 V(HasInstanceTypeAndBranch) \ | 108 V(HasInstanceTypeAndBranch) \ |
| 104 V(In) \ | 109 V(In) \ |
| 105 V(InstanceOf) \ | 110 V(InstanceOf) \ |
| 106 V(InstanceOfAndBranch) \ | 111 V(InstanceOfAndBranch) \ |
| 107 V(InstanceOfKnownGlobal) \ | 112 V(InstanceOfKnownGlobal) \ |
| 108 V(InstructionGap) \ | 113 V(InstructionGap) \ |
| 109 V(Integer32ToDouble) \ | 114 V(Integer32ToDouble) \ |
| 110 V(InvokeFunction) \ | 115 V(InvokeFunction) \ |
| 116 V(IsConstructCall) \ |
| 117 V(IsConstructCallAndBranch) \ |
| 111 V(IsNull) \ | 118 V(IsNull) \ |
| 112 V(IsNullAndBranch) \ | 119 V(IsNullAndBranch) \ |
| 113 V(IsObject) \ | 120 V(IsObject) \ |
| 114 V(IsObjectAndBranch) \ | 121 V(IsObjectAndBranch) \ |
| 115 V(IsSmi) \ | 122 V(IsSmi) \ |
| 116 V(IsSmiAndBranch) \ | 123 V(IsSmiAndBranch) \ |
| 124 V(IsUndetectable) \ |
| 125 V(IsUndetectableAndBranch) \ |
| 117 V(JSArrayLength) \ | 126 V(JSArrayLength) \ |
| 118 V(Label) \ | 127 V(Label) \ |
| 119 V(LazyBailout) \ | 128 V(LazyBailout) \ |
| 120 V(LoadContextSlot) \ | 129 V(LoadContextSlot) \ |
| 121 V(LoadElements) \ | 130 V(LoadElements) \ |
| 122 V(LoadExternalArrayPointer) \ | 131 V(LoadExternalArrayPointer) \ |
| 123 V(LoadFunctionPrototype) \ | 132 V(LoadFunctionPrototype) \ |
| 124 V(LoadGlobalCell) \ | 133 V(LoadGlobalCell) \ |
| 125 V(LoadGlobalGeneric) \ | 134 V(LoadGlobalGeneric) \ |
| 126 V(LoadKeyedFastElement) \ | 135 V(LoadKeyedFastElement) \ |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 V(StringCharCodeAt) \ | 167 V(StringCharCodeAt) \ |
| 159 V(StringCharFromCode) \ | 168 V(StringCharFromCode) \ |
| 160 V(StringLength) \ | 169 V(StringLength) \ |
| 161 V(SubI) \ | 170 V(SubI) \ |
| 162 V(TaggedToI) \ | 171 V(TaggedToI) \ |
| 163 V(Throw) \ | 172 V(Throw) \ |
| 164 V(ToFastProperties) \ | 173 V(ToFastProperties) \ |
| 165 V(Typeof) \ | 174 V(Typeof) \ |
| 166 V(TypeofIs) \ | 175 V(TypeofIs) \ |
| 167 V(TypeofIsAndBranch) \ | 176 V(TypeofIsAndBranch) \ |
| 168 V(IsConstructCall) \ | |
| 169 V(IsConstructCallAndBranch) \ | |
| 170 V(UnaryMathOperation) \ | 177 V(UnaryMathOperation) \ |
| 171 V(UnknownOSRValue) \ | 178 V(UnknownOSRValue) \ |
| 172 V(ValueOf) | 179 V(ValueOf) |
| 173 | 180 |
| 174 | 181 |
| 175 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ | 182 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ |
| 176 virtual Opcode opcode() const { return LInstruction::k##type; } \ | 183 virtual Opcode opcode() const { return LInstruction::k##type; } \ |
| 177 virtual void CompileToNative(LCodeGen* generator); \ | 184 virtual void CompileToNative(LCodeGen* generator); \ |
| 178 virtual const char* Mnemonic() const { return mnemonic; } \ | 185 virtual const char* Mnemonic() const { return mnemonic; } \ |
| 179 static L##type* cast(LInstruction* instr) { \ | 186 static L##type* cast(LInstruction* instr) { \ |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 LCmpJSObjectEqAndBranch(LOperand* left, LOperand* right) { | 681 LCmpJSObjectEqAndBranch(LOperand* left, LOperand* right) { |
| 675 inputs_[0] = left; | 682 inputs_[0] = left; |
| 676 inputs_[1] = right; | 683 inputs_[1] = right; |
| 677 } | 684 } |
| 678 | 685 |
| 679 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEqAndBranch, | 686 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEqAndBranch, |
| 680 "cmp-jsobject-eq-and-branch") | 687 "cmp-jsobject-eq-and-branch") |
| 681 }; | 688 }; |
| 682 | 689 |
| 683 | 690 |
| 691 class LCmpSymbolEq: public LTemplateInstruction<1, 2, 0> { |
| 692 public: |
| 693 LCmpSymbolEq(LOperand* left, LOperand* right) { |
| 694 inputs_[0] = left; |
| 695 inputs_[1] = right; |
| 696 } |
| 697 |
| 698 DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEq, "cmp-symbol-eq") |
| 699 }; |
| 700 |
| 701 |
| 702 class LCmpSymbolEqAndBranch: public LControlInstruction<2, 0> { |
| 703 public: |
| 704 LCmpSymbolEqAndBranch(LOperand* left, LOperand* right) { |
| 705 inputs_[0] = left; |
| 706 inputs_[1] = right; |
| 707 } |
| 708 |
| 709 DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEqAndBranch, "cmp-symbol-eq-and-branch") |
| 710 }; |
| 711 |
| 712 |
| 684 class LIsNull: public LTemplateInstruction<1, 1, 0> { | 713 class LIsNull: public LTemplateInstruction<1, 1, 0> { |
| 685 public: | 714 public: |
| 686 explicit LIsNull(LOperand* value) { | 715 explicit LIsNull(LOperand* value) { |
| 687 inputs_[0] = value; | 716 inputs_[0] = value; |
| 688 } | 717 } |
| 689 | 718 |
| 690 DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null") | 719 DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null") |
| 691 DECLARE_HYDROGEN_ACCESSOR(IsNull) | 720 DECLARE_HYDROGEN_ACCESSOR(IsNull) |
| 692 | 721 |
| 693 bool is_strict() const { return hydrogen()->is_strict(); } | 722 bool is_strict() const { return hydrogen()->is_strict(); } |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 explicit LIsSmiAndBranch(LOperand* value) { | 776 explicit LIsSmiAndBranch(LOperand* value) { |
| 748 inputs_[0] = value; | 777 inputs_[0] = value; |
| 749 } | 778 } |
| 750 | 779 |
| 751 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch") | 780 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch") |
| 752 | 781 |
| 753 virtual void PrintDataTo(StringStream* stream); | 782 virtual void PrintDataTo(StringStream* stream); |
| 754 }; | 783 }; |
| 755 | 784 |
| 756 | 785 |
| 786 class LIsUndetectable: public LTemplateInstruction<1, 1, 0> { |
| 787 public: |
| 788 explicit LIsUndetectable(LOperand* value) { |
| 789 inputs_[0] = value; |
| 790 } |
| 791 |
| 792 DECLARE_CONCRETE_INSTRUCTION(IsUndetectable, "is-undetectable") |
| 793 DECLARE_HYDROGEN_ACCESSOR(IsUndetectable) |
| 794 }; |
| 795 |
| 796 |
| 797 class LIsUndetectableAndBranch: public LControlInstruction<1, 1> { |
| 798 public: |
| 799 explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) { |
| 800 inputs_[0] = value; |
| 801 temps_[0] = temp; |
| 802 } |
| 803 |
| 804 DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch, |
| 805 "is-undetectable-and-branch") |
| 806 |
| 807 virtual void PrintDataTo(StringStream* stream); |
| 808 }; |
| 809 |
| 810 |
| 757 class LHasInstanceType: public LTemplateInstruction<1, 1, 0> { | 811 class LHasInstanceType: public LTemplateInstruction<1, 1, 0> { |
| 758 public: | 812 public: |
| 759 explicit LHasInstanceType(LOperand* value) { | 813 explicit LHasInstanceType(LOperand* value) { |
| 760 inputs_[0] = value; | 814 inputs_[0] = value; |
| 761 } | 815 } |
| 762 | 816 |
| 763 DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type") | 817 DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type") |
| 764 DECLARE_HYDROGEN_ACCESSOR(HasInstanceType) | 818 DECLARE_HYDROGEN_ACCESSOR(HasInstanceType) |
| 765 }; | 819 }; |
| 766 | 820 |
| (...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1869 class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> { | 1923 class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> { |
| 1870 public: | 1924 public: |
| 1871 explicit LCheckNonSmi(LOperand* value) { | 1925 explicit LCheckNonSmi(LOperand* value) { |
| 1872 inputs_[0] = value; | 1926 inputs_[0] = value; |
| 1873 } | 1927 } |
| 1874 | 1928 |
| 1875 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi") | 1929 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi") |
| 1876 }; | 1930 }; |
| 1877 | 1931 |
| 1878 | 1932 |
| 1933 class LClampDToUint8: public LTemplateInstruction<1, 1, 1> { |
| 1934 public: |
| 1935 LClampDToUint8(LOperand* value, LOperand* temp) { |
| 1936 inputs_[0] = value; |
| 1937 temps_[0] = temp; |
| 1938 } |
| 1939 |
| 1940 LOperand* unclamped() { return inputs_[0]; } |
| 1941 |
| 1942 DECLARE_CONCRETE_INSTRUCTION(ClampDToUint8, "clamp-d-to-uint8") |
| 1943 }; |
| 1944 |
| 1945 |
| 1946 class LClampIToUint8: public LTemplateInstruction<1, 1, 0> { |
| 1947 public: |
| 1948 explicit LClampIToUint8(LOperand* value) { |
| 1949 inputs_[0] = value; |
| 1950 } |
| 1951 |
| 1952 LOperand* unclamped() { return inputs_[0]; } |
| 1953 |
| 1954 DECLARE_CONCRETE_INSTRUCTION(ClampIToUint8, "clamp-i-to-uint8") |
| 1955 }; |
| 1956 |
| 1957 |
| 1958 class LClampTToUint8: public LTemplateInstruction<1, 1, 1> { |
| 1959 public: |
| 1960 LClampTToUint8(LOperand* value, LOperand* temp) { |
| 1961 inputs_[0] = value; |
| 1962 temps_[0] = temp; |
| 1963 } |
| 1964 |
| 1965 LOperand* unclamped() { return inputs_[0]; } |
| 1966 |
| 1967 DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8") |
| 1968 }; |
| 1969 |
| 1970 |
| 1879 class LArrayLiteral: public LTemplateInstruction<1, 0, 0> { | 1971 class LArrayLiteral: public LTemplateInstruction<1, 0, 0> { |
| 1880 public: | 1972 public: |
| 1881 DECLARE_CONCRETE_INSTRUCTION(ArrayLiteral, "array-literal") | 1973 DECLARE_CONCRETE_INSTRUCTION(ArrayLiteral, "array-literal") |
| 1882 DECLARE_HYDROGEN_ACCESSOR(ArrayLiteral) | 1974 DECLARE_HYDROGEN_ACCESSOR(ArrayLiteral) |
| 1883 }; | 1975 }; |
| 1884 | 1976 |
| 1885 | 1977 |
| 1886 class LObjectLiteral: public LTemplateInstruction<1, 0, 0> { | 1978 class LObjectLiteral: public LTemplateInstruction<1, 0, 0> { |
| 1887 public: | 1979 public: |
| 1888 DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral, "object-literal") | 1980 DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral, "object-literal") |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2247 | 2339 |
| 2248 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2340 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2249 }; | 2341 }; |
| 2250 | 2342 |
| 2251 #undef DECLARE_HYDROGEN_ACCESSOR | 2343 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2252 #undef DECLARE_CONCRETE_INSTRUCTION | 2344 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2253 | 2345 |
| 2254 } } // namespace v8::internal | 2346 } } // namespace v8::internal |
| 2255 | 2347 |
| 2256 #endif // V8_ARM_LITHIUM_ARM_H_ | 2348 #endif // V8_ARM_LITHIUM_ARM_H_ |
| OLD | NEW |