OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 22 matching lines...) Expand all Loading... |
33 #include "lithium.h" | 33 #include "lithium.h" |
34 #include "safepoint-table.h" | 34 #include "safepoint-table.h" |
35 #include "utils.h" | 35 #include "utils.h" |
36 | 36 |
37 namespace v8 { | 37 namespace v8 { |
38 namespace internal { | 38 namespace internal { |
39 | 39 |
40 // Forward declarations. | 40 // Forward declarations. |
41 class LCodeGen; | 41 class LCodeGen; |
42 | 42 |
43 #define LITHIUM_ALL_INSTRUCTION_LIST(V) \ | |
44 V(ControlInstruction) \ | |
45 V(Call) \ | |
46 LITHIUM_CONCRETE_INSTRUCTION_LIST(V) | |
47 | |
48 | |
49 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ | 43 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ |
50 V(AccessArgumentsAt) \ | 44 V(AccessArgumentsAt) \ |
51 V(AddI) \ | 45 V(AddI) \ |
| 46 V(AddS) \ |
52 V(Allocate) \ | 47 V(Allocate) \ |
53 V(ApplyArguments) \ | 48 V(ApplyArguments) \ |
54 V(ArgumentsElements) \ | 49 V(ArgumentsElements) \ |
55 V(ArgumentsLength) \ | 50 V(ArgumentsLength) \ |
56 V(ArithmeticD) \ | 51 V(ArithmeticD) \ |
57 V(ArithmeticT) \ | 52 V(ArithmeticT) \ |
58 V(BitI) \ | 53 V(BitI) \ |
| 54 V(BitS) \ |
59 V(BitNotI) \ | 55 V(BitNotI) \ |
60 V(BoundsCheck) \ | 56 V(BoundsCheck) \ |
61 V(Branch) \ | 57 V(Branch) \ |
62 V(CallConstantFunction) \ | 58 V(CallConstantFunction) \ |
63 V(CallFunction) \ | 59 V(CallFunction) \ |
64 V(CallGlobal) \ | 60 V(CallGlobal) \ |
65 V(CallKeyed) \ | 61 V(CallKeyed) \ |
66 V(CallKnownGlobal) \ | 62 V(CallKnownGlobal) \ |
67 V(CallNamed) \ | 63 V(CallNamed) \ |
68 V(CallNew) \ | 64 V(CallNew) \ |
69 V(CallNewArray) \ | 65 V(CallNewArray) \ |
70 V(CallRuntime) \ | 66 V(CallRuntime) \ |
71 V(CallStub) \ | 67 V(CallStub) \ |
72 V(CheckFunction) \ | 68 V(CheckFunction) \ |
73 V(CheckInstanceType) \ | 69 V(CheckInstanceType) \ |
| 70 V(CheckMaps) \ |
| 71 V(CheckMapValue) \ |
74 V(CheckNonSmi) \ | 72 V(CheckNonSmi) \ |
75 V(CheckMaps) \ | |
76 V(CheckPrototypeMaps) \ | 73 V(CheckPrototypeMaps) \ |
77 V(CheckSmi) \ | 74 V(CheckSmi) \ |
78 V(ClampDToUint8) \ | 75 V(ClampDToUint8) \ |
79 V(ClampIToUint8) \ | 76 V(ClampIToUint8) \ |
80 V(ClampTToUint8) \ | 77 V(ClampTToUint8) \ |
81 V(ClassOfTestAndBranch) \ | 78 V(ClassOfTestAndBranch) \ |
82 V(CompareNumericAndBranch) \ | |
83 V(CmpMapAndBranch) \ | 79 V(CmpMapAndBranch) \ |
84 V(CmpObjectEqAndBranch) \ | 80 V(CmpObjectEqAndBranch) \ |
85 V(CmpT) \ | 81 V(CmpT) \ |
| 82 V(CompareNumericAndBranch) \ |
86 V(ConstantD) \ | 83 V(ConstantD) \ |
87 V(ConstantI) \ | 84 V(ConstantI) \ |
88 V(ConstantS) \ | 85 V(ConstantS) \ |
89 V(ConstantT) \ | 86 V(ConstantT) \ |
90 V(Context) \ | 87 V(Context) \ |
91 V(DateField) \ | 88 V(DateField) \ |
92 V(DebugBreak) \ | 89 V(DebugBreak) \ |
93 V(DeclareGlobals) \ | 90 V(DeclareGlobals) \ |
94 V(Deoptimize) \ | 91 V(Deoptimize) \ |
95 V(DivI) \ | 92 V(DivI) \ |
(...skipping 14 matching lines...) Expand all Loading... |
110 V(InstanceOf) \ | 107 V(InstanceOf) \ |
111 V(InstanceOfKnownGlobal) \ | 108 V(InstanceOfKnownGlobal) \ |
112 V(InstanceSize) \ | 109 V(InstanceSize) \ |
113 V(InstructionGap) \ | 110 V(InstructionGap) \ |
114 V(Integer32ToDouble) \ | 111 V(Integer32ToDouble) \ |
115 V(Integer32ToSmi) \ | 112 V(Integer32ToSmi) \ |
116 V(InvokeFunction) \ | 113 V(InvokeFunction) \ |
117 V(IsConstructCallAndBranch) \ | 114 V(IsConstructCallAndBranch) \ |
118 V(IsNumberAndBranch) \ | 115 V(IsNumberAndBranch) \ |
119 V(IsObjectAndBranch) \ | 116 V(IsObjectAndBranch) \ |
| 117 V(IsSmiAndBranch) \ |
120 V(IsStringAndBranch) \ | 118 V(IsStringAndBranch) \ |
121 V(IsSmiAndBranch) \ | |
122 V(IsUndetectableAndBranch) \ | 119 V(IsUndetectableAndBranch) \ |
123 V(Label) \ | 120 V(Label) \ |
124 V(LazyBailout) \ | 121 V(LazyBailout) \ |
125 V(LinkObjectInList) \ | 122 V(LinkObjectInList) \ |
126 V(LoadContextSlot) \ | 123 V(LoadContextSlot) \ |
127 V(LoadExternalArrayPointer) \ | 124 V(LoadExternalArrayPointer) \ |
| 125 V(LoadFieldByIndex) \ |
128 V(LoadFunctionPrototype) \ | 126 V(LoadFunctionPrototype) \ |
129 V(LoadGlobalCell) \ | 127 V(LoadGlobalCell) \ |
130 V(LoadGlobalGeneric) \ | 128 V(LoadGlobalGeneric) \ |
131 V(LoadKeyedExternal) \ | 129 V(LoadKeyedExternal) \ |
132 V(LoadKeyedFixed) \ | 130 V(LoadKeyedFixed) \ |
133 V(LoadKeyedFixedDouble) \ | 131 V(LoadKeyedFixedDouble) \ |
134 V(LoadKeyedGeneric) \ | 132 V(LoadKeyedGeneric) \ |
135 V(LoadNamedField) \ | 133 V(LoadNamedField) \ |
136 V(LoadNamedFieldPolymorphic) \ | 134 V(LoadNamedFieldPolymorphic) \ |
137 V(LoadNamedGeneric) \ | 135 V(LoadNamedGeneric) \ |
138 V(MapEnumLength) \ | 136 V(MapEnumLength) \ |
139 V(MathAbs) \ | 137 V(MathAbs) \ |
| 138 V(MathAbsTagged) \ |
140 V(MathCos) \ | 139 V(MathCos) \ |
141 V(MathAbsTagged) \ | |
142 V(MathExp) \ | 140 V(MathExp) \ |
143 V(MathFloor) \ | 141 V(MathFloor) \ |
144 V(MathFloorOfDiv) \ | 142 V(MathFloorOfDiv) \ |
145 V(MathLog) \ | 143 V(MathLog) \ |
146 V(MathMinMax) \ | 144 V(MathMinMax) \ |
147 V(MathPowHalf) \ | 145 V(MathPowHalf) \ |
148 V(MathRound) \ | 146 V(MathRound) \ |
149 V(MathSin) \ | 147 V(MathSin) \ |
150 V(MathSqrt) \ | 148 V(MathSqrt) \ |
151 V(MathTan) \ | 149 V(MathTan) \ |
152 V(ModI) \ | 150 V(ModI) \ |
153 V(MulConstI) \ | 151 V(MulConstI) \ |
154 V(MulI) \ | 152 V(MulI) \ |
| 153 V(MulS) \ |
155 V(NumberTagD) \ | 154 V(NumberTagD) \ |
156 V(NumberTagU) \ | 155 V(NumberTagU) \ |
157 V(NumberUntagD) \ | 156 V(NumberUntagD) \ |
158 V(OsrEntry) \ | 157 V(OsrEntry) \ |
159 V(OuterContext) \ | 158 V(OuterContext) \ |
160 V(Parameter) \ | 159 V(Parameter) \ |
161 V(Power) \ | 160 V(Power) \ |
162 V(PushArgument) \ | 161 V(PushArgument) \ |
163 V(Random) \ | 162 V(Random) \ |
164 V(RegExpLiteral) \ | 163 V(RegExpLiteral) \ |
(...skipping 23 matching lines...) Expand all Loading... |
188 V(Throw) \ | 187 V(Throw) \ |
189 V(ToFastProperties) \ | 188 V(ToFastProperties) \ |
190 V(TransitionElementsKind) \ | 189 V(TransitionElementsKind) \ |
191 V(TrapAllocationMemento) \ | 190 V(TrapAllocationMemento) \ |
192 V(TruncateDoubleToIntOrSmi) \ | 191 V(TruncateDoubleToIntOrSmi) \ |
193 V(Typeof) \ | 192 V(Typeof) \ |
194 V(TypeofIsAndBranch) \ | 193 V(TypeofIsAndBranch) \ |
195 V(Uint32ToDouble) \ | 194 V(Uint32ToDouble) \ |
196 V(UnknownOSRValue) \ | 195 V(UnknownOSRValue) \ |
197 V(ValueOf) \ | 196 V(ValueOf) \ |
198 V(CheckMapValue) \ | |
199 V(LoadFieldByIndex) \ | |
200 V(WrapReceiver) | 197 V(WrapReceiver) |
201 | 198 |
202 | 199 |
203 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ | 200 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ |
204 virtual Opcode opcode() const { return LInstruction::k##type; } \ | 201 virtual Opcode opcode() const { return LInstruction::k##type; } \ |
205 virtual void CompileToNative(LCodeGen* generator); \ | 202 virtual void CompileToNative(LCodeGen* generator); \ |
206 virtual const char* Mnemonic() const { return mnemonic; } \ | 203 virtual const char* Mnemonic() const { return mnemonic; } \ |
207 static L##type* cast(LInstruction* instr) { \ | 204 static L##type* cast(LInstruction* instr) { \ |
208 ASSERT(instr->Is##type()); \ | 205 ASSERT(instr->Is##type()); \ |
209 return reinterpret_cast<L##type*>(instr); \ | 206 return reinterpret_cast<L##type*>(instr); \ |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 } | 574 } |
578 | 575 |
579 LOperand* left() { return inputs_[0]; } | 576 LOperand* left() { return inputs_[0]; } |
580 LOperand* right() { return inputs_[1]; } | 577 LOperand* right() { return inputs_[1]; } |
581 | 578 |
582 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") | 579 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") |
583 DECLARE_HYDROGEN_ACCESSOR(Add) | 580 DECLARE_HYDROGEN_ACCESSOR(Add) |
584 }; | 581 }; |
585 | 582 |
586 | 583 |
| 584 class LAddS: public LTemplateInstruction<1, 2, 0> { |
| 585 public: |
| 586 LAddS(LOperand* left, LOperand* right) { |
| 587 inputs_[0] = left; |
| 588 inputs_[1] = right; |
| 589 } |
| 590 |
| 591 LOperand* left() { return inputs_[0]; } |
| 592 LOperand* right() { return inputs_[1]; } |
| 593 |
| 594 DECLARE_CONCRETE_INSTRUCTION(AddS, "add-s") |
| 595 DECLARE_HYDROGEN_ACCESSOR(Add) |
| 596 }; |
| 597 |
| 598 |
587 class LAllocate: public LTemplateInstruction<1, 1, 2> { | 599 class LAllocate: public LTemplateInstruction<1, 1, 2> { |
588 public: | 600 public: |
589 // TODO(jbramley): On ia32, this takes a context, and it is used by the | 601 // TODO(jbramley): On ia32, this takes a context, and it is used by the |
590 // deferred code. On ARM, an LOperand is allocated for another input, but it | 602 // deferred code. On ARM, an LOperand is allocated for another input, but it |
591 // is never used, and the deferred code doesn't need the context. Why? | 603 // is never used, and the deferred code doesn't need the context. Why? |
592 LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) { | 604 LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) { |
593 inputs_[0] = size; | 605 inputs_[0] = size; |
594 temps_[0] = temp1; | 606 temps_[0] = temp1; |
595 temps_[1] = temp2; | 607 temps_[1] = temp2; |
596 } | 608 } |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 LOperand* left() { return inputs_[0]; } | 729 LOperand* left() { return inputs_[0]; } |
718 LOperand* right() { return inputs_[1]; } | 730 LOperand* right() { return inputs_[1]; } |
719 | 731 |
720 Token::Value op() const { return hydrogen()->op(); } | 732 Token::Value op() const { return hydrogen()->op(); } |
721 | 733 |
722 DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i") | 734 DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i") |
723 DECLARE_HYDROGEN_ACCESSOR(Bitwise) | 735 DECLARE_HYDROGEN_ACCESSOR(Bitwise) |
724 }; | 736 }; |
725 | 737 |
726 | 738 |
| 739 class LBitS: public LTemplateInstruction<1, 2, 0> { |
| 740 public: |
| 741 LBitS(LOperand* left, LOperand* right) { |
| 742 inputs_[0] = left; |
| 743 inputs_[1] = right; |
| 744 } |
| 745 |
| 746 LOperand* left() { return inputs_[0]; } |
| 747 LOperand* right() { return inputs_[1]; } |
| 748 |
| 749 Token::Value op() const { return hydrogen()->op(); } |
| 750 |
| 751 DECLARE_CONCRETE_INSTRUCTION(BitS, "bit-s") |
| 752 DECLARE_HYDROGEN_ACCESSOR(Bitwise) |
| 753 }; |
| 754 |
| 755 |
727 class LBitNotI: public LTemplateInstruction<1, 1, 0> { | 756 class LBitNotI: public LTemplateInstruction<1, 1, 0> { |
728 public: | 757 public: |
729 explicit LBitNotI(LOperand* value) { | 758 explicit LBitNotI(LOperand* value) { |
730 inputs_[0] = value; | 759 inputs_[0] = value; |
731 } | 760 } |
732 | 761 |
733 LOperand* value() { return inputs_[0]; } | 762 LOperand* value() { return inputs_[0]; } |
734 | 763 |
735 DECLARE_CONCRETE_INSTRUCTION(BitNotI, "bit-not-i") | 764 DECLARE_CONCRETE_INSTRUCTION(BitNotI, "bit-not-i") |
736 }; | 765 }; |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
914 LOperand* value() { return inputs_[0]; } | 943 LOperand* value() { return inputs_[0]; } |
915 LOperand* temp() { return temps_[0]; } | 944 LOperand* temp() { return temps_[0]; } |
916 | 945 |
917 DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type") | 946 DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type") |
918 DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType) | 947 DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType) |
919 }; | 948 }; |
920 | 949 |
921 | 950 |
922 class LCheckMaps: public LTemplateInstruction<0, 1, 1> { | 951 class LCheckMaps: public LTemplateInstruction<0, 1, 1> { |
923 public: | 952 public: |
924 explicit LCheckMaps(LOperand* value, LOperand* temp) { | 953 explicit LCheckMaps(LOperand* value, LOperand* temp = NULL) { |
925 inputs_[0] = value; | 954 inputs_[0] = value; |
926 temps_[0] = temp; | 955 temps_[0] = temp; |
927 } | 956 } |
928 | 957 |
929 LOperand* value() { return inputs_[0]; } | 958 LOperand* value() { return inputs_[0]; } |
930 LOperand* temp() { return temps_[0]; } | 959 LOperand* temp() { return temps_[0]; } |
931 | 960 |
932 DECLARE_CONCRETE_INSTRUCTION(CheckMaps, "check-maps") | 961 DECLARE_CONCRETE_INSTRUCTION(CheckMaps, "check-maps") |
933 DECLARE_HYDROGEN_ACCESSOR(CheckMaps) | 962 DECLARE_HYDROGEN_ACCESSOR(CheckMaps) |
934 }; | 963 }; |
935 | 964 |
936 | 965 |
937 class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> { | 966 class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> { |
938 public: | 967 public: |
939 explicit LCheckNonSmi(LOperand* value) { | 968 explicit LCheckNonSmi(LOperand* value) { |
940 inputs_[0] = value; | 969 inputs_[0] = value; |
941 } | 970 } |
942 | 971 |
943 LOperand* value() { return inputs_[0]; } | 972 LOperand* value() { return inputs_[0]; } |
944 | 973 |
945 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi") | 974 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi") |
946 DECLARE_HYDROGEN_ACCESSOR(CheckHeapObject) | 975 DECLARE_HYDROGEN_ACCESSOR(CheckHeapObject) |
947 }; | 976 }; |
948 | 977 |
949 | 978 |
950 class LCheckPrototypeMaps: public LTemplateInstruction<0, 0, 2> { | 979 class LCheckPrototypeMaps: public LTemplateInstruction<0, 0, 2> { |
951 public: | 980 public: |
952 explicit LCheckPrototypeMaps(LOperand* temp1, LOperand* temp2) { | 981 LCheckPrototypeMaps(LOperand* temp1 = NULL, LOperand* temp2 = NULL) { |
953 temps_[0] = temp1; | 982 temps_[0] = temp1; |
954 temps_[1] = temp2; | 983 temps_[1] = temp2; |
955 } | 984 } |
956 | 985 |
957 LOperand* temp1() { return temps_[0]; } | 986 LOperand* temp1() { return temps_[0]; } |
958 LOperand* temp2() { return temps_[1]; } | 987 LOperand* temp2() { return temps_[1]; } |
959 | 988 |
960 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps"); | 989 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps"); |
961 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps) | 990 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps) |
962 | 991 |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1181 class LDeclareGlobals: public LTemplateInstruction<0, 0, 0> { | 1210 class LDeclareGlobals: public LTemplateInstruction<0, 0, 0> { |
1182 public: | 1211 public: |
1183 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals") | 1212 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals") |
1184 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals) | 1213 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals) |
1185 }; | 1214 }; |
1186 | 1215 |
1187 | 1216 |
1188 class LDeoptimize: public LTemplateInstruction<0, 0, 0> { | 1217 class LDeoptimize: public LTemplateInstruction<0, 0, 0> { |
1189 public: | 1218 public: |
1190 DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize") | 1219 DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize") |
| 1220 DECLARE_HYDROGEN_ACCESSOR(Deoptimize) |
1191 }; | 1221 }; |
1192 | 1222 |
1193 | 1223 |
1194 class LDivI: public LTemplateInstruction<1, 2, 1> { | 1224 class LDivI: public LTemplateInstruction<1, 2, 1> { |
1195 public: | 1225 public: |
1196 LDivI(LOperand* left, LOperand* right, LOperand* temp) { | 1226 LDivI(LOperand* left, LOperand* right, LOperand* temp) { |
1197 inputs_[0] = left; | 1227 inputs_[0] = left; |
1198 inputs_[1] = right; | 1228 inputs_[1] = right; |
1199 temps_[0] = temp; | 1229 temps_[0] = temp; |
1200 } | 1230 } |
(...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1964 } | 1994 } |
1965 | 1995 |
1966 LOperand* left() { return inputs_[0]; } | 1996 LOperand* left() { return inputs_[0]; } |
1967 LOperand* right() { return inputs_[1]; } | 1997 LOperand* right() { return inputs_[1]; } |
1968 | 1998 |
1969 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i") | 1999 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i") |
1970 DECLARE_HYDROGEN_ACCESSOR(Mul) | 2000 DECLARE_HYDROGEN_ACCESSOR(Mul) |
1971 }; | 2001 }; |
1972 | 2002 |
1973 | 2003 |
| 2004 class LMulS: public LTemplateInstruction<1, 2, 0> { |
| 2005 public: |
| 2006 LMulS(LOperand* left, LOperand* right) { |
| 2007 inputs_[0] = left; |
| 2008 inputs_[1] = right; |
| 2009 } |
| 2010 |
| 2011 LOperand* left() { return inputs_[0]; } |
| 2012 LOperand* right() { return inputs_[1]; } |
| 2013 |
| 2014 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-s") |
| 2015 DECLARE_HYDROGEN_ACCESSOR(Mul) |
| 2016 }; |
| 2017 |
| 2018 |
1974 class LNumberTagD: public LTemplateInstruction<1, 1, 2> { | 2019 class LNumberTagD: public LTemplateInstruction<1, 1, 2> { |
1975 public: | 2020 public: |
1976 LNumberTagD(LOperand* value, LOperand* temp1, LOperand* temp2) { | 2021 LNumberTagD(LOperand* value, LOperand* temp1, LOperand* temp2) { |
1977 inputs_[0] = value; | 2022 inputs_[0] = value; |
1978 temps_[0] = temp1; | 2023 temps_[0] = temp1; |
1979 temps_[1] = temp2; | 2024 temps_[1] = temp2; |
1980 } | 2025 } |
1981 | 2026 |
1982 LOperand* value() { return inputs_[0]; } | 2027 LOperand* value() { return inputs_[0]; } |
1983 LOperand* temp1() { return temps_[0]; } | 2028 LOperand* temp1() { return temps_[0]; } |
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2540 | 2585 |
2541 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties") | 2586 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties") |
2542 DECLARE_HYDROGEN_ACCESSOR(ToFastProperties) | 2587 DECLARE_HYDROGEN_ACCESSOR(ToFastProperties) |
2543 }; | 2588 }; |
2544 | 2589 |
2545 | 2590 |
2546 class LTransitionElementsKind: public LTemplateInstruction<0, 1, 2> { | 2591 class LTransitionElementsKind: public LTemplateInstruction<0, 1, 2> { |
2547 public: | 2592 public: |
2548 LTransitionElementsKind(LOperand* object, | 2593 LTransitionElementsKind(LOperand* object, |
2549 LOperand* temp1, | 2594 LOperand* temp1, |
2550 LOperand* temp2) { | 2595 LOperand* temp2 = NULL) { |
2551 inputs_[0] = object; | 2596 inputs_[0] = object; |
2552 temps_[0] = temp1; | 2597 temps_[0] = temp1; |
2553 temps_[1] = temp2; | 2598 temps_[1] = temp2; |
2554 } | 2599 } |
2555 | 2600 |
2556 LOperand* object() { return inputs_[0]; } | 2601 LOperand* object() { return inputs_[0]; } |
2557 LOperand* temp1() { return temps_[0]; } | 2602 LOperand* temp1() { return temps_[0]; } |
2558 LOperand* temp2() { return temps_[1]; } | 2603 LOperand* temp2() { return temps_[1]; } |
2559 | 2604 |
2560 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind, | 2605 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind, |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2882 | 2927 |
2883 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2928 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
2884 }; | 2929 }; |
2885 | 2930 |
2886 #undef DECLARE_HYDROGEN_ACCESSOR | 2931 #undef DECLARE_HYDROGEN_ACCESSOR |
2887 #undef DECLARE_CONCRETE_INSTRUCTION | 2932 #undef DECLARE_CONCRETE_INSTRUCTION |
2888 | 2933 |
2889 } } // namespace v8::internal | 2934 } } // namespace v8::internal |
2890 | 2935 |
2891 #endif // V8_A64_LITHIUM_A64_H_ | 2936 #endif // V8_A64_LITHIUM_A64_H_ |
OLD | NEW |