OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
7 | 7 |
8 #include <cstring> | 8 #include <cstring> |
9 #include <iosfwd> | 9 #include <iosfwd> |
10 | 10 |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 V(SeqStringSetChar) \ | 128 V(SeqStringSetChar) \ |
129 V(Shl) \ | 129 V(Shl) \ |
130 V(Shr) \ | 130 V(Shr) \ |
131 V(Simulate) \ | 131 V(Simulate) \ |
132 V(StackCheck) \ | 132 V(StackCheck) \ |
133 V(StoreCodeEntry) \ | 133 V(StoreCodeEntry) \ |
134 V(StoreContextSlot) \ | 134 V(StoreContextSlot) \ |
135 V(StoreKeyed) \ | 135 V(StoreKeyed) \ |
136 V(StoreKeyedGeneric) \ | 136 V(StoreKeyedGeneric) \ |
137 V(StoreNamedField) \ | 137 V(StoreNamedField) \ |
138 V(StoreNamedGeneric) \ | |
139 V(StringAdd) \ | 138 V(StringAdd) \ |
140 V(StringCharCodeAt) \ | 139 V(StringCharCodeAt) \ |
141 V(StringCharFromCode) \ | 140 V(StringCharFromCode) \ |
142 V(StringCompareAndBranch) \ | 141 V(StringCompareAndBranch) \ |
143 V(Sub) \ | 142 V(Sub) \ |
144 V(ThisFunction) \ | 143 V(ThisFunction) \ |
145 V(TransitionElementsKind) \ | 144 V(TransitionElementsKind) \ |
146 V(TrapAllocationMemento) \ | 145 V(TrapAllocationMemento) \ |
147 V(Typeof) \ | 146 V(Typeof) \ |
148 V(TypeofIsAndBranch) \ | 147 V(TypeofIsAndBranch) \ |
(...skipping 6172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6321 } | 6320 } |
6322 | 6321 |
6323 class HasTransitionField : public BitField<bool, 0, 1> {}; | 6322 class HasTransitionField : public BitField<bool, 0, 1> {}; |
6324 class StoreModeField : public BitField<StoreFieldOrKeyedMode, 1, 1> {}; | 6323 class StoreModeField : public BitField<StoreFieldOrKeyedMode, 1, 1> {}; |
6325 | 6324 |
6326 HObjectAccess access_; | 6325 HObjectAccess access_; |
6327 HValue* dominator_; | 6326 HValue* dominator_; |
6328 uint32_t bit_field_; | 6327 uint32_t bit_field_; |
6329 }; | 6328 }; |
6330 | 6329 |
6331 class HStoreNamedGeneric final : public HTemplateInstruction<3> { | |
6332 public: | |
6333 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P6(HStoreNamedGeneric, HValue*, | |
6334 Handle<Name>, HValue*, | |
6335 LanguageMode, | |
6336 Handle<TypeFeedbackVector>, | |
6337 FeedbackVectorSlot); | |
6338 HValue* object() const { return OperandAt(0); } | |
6339 HValue* value() const { return OperandAt(1); } | |
6340 HValue* context() const { return OperandAt(2); } | |
6341 Handle<Name> name() const { return name_; } | |
6342 LanguageMode language_mode() const { return language_mode_; } | |
6343 | |
6344 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | |
6345 | |
6346 Representation RequiredInputRepresentation(int index) override { | |
6347 return Representation::Tagged(); | |
6348 } | |
6349 | |
6350 FeedbackVectorSlot slot() const { return slot_; } | |
6351 Handle<TypeFeedbackVector> feedback_vector() const { | |
6352 return feedback_vector_; | |
6353 } | |
6354 | |
6355 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric) | |
6356 | |
6357 private: | |
6358 HStoreNamedGeneric(HValue* context, HValue* object, Handle<Name> name, | |
6359 HValue* value, LanguageMode language_mode, | |
6360 Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) | |
6361 : name_(name), | |
6362 feedback_vector_(vector), | |
6363 slot_(slot), | |
6364 language_mode_(language_mode) { | |
6365 SetOperandAt(0, object); | |
6366 SetOperandAt(1, value); | |
6367 SetOperandAt(2, context); | |
6368 SetAllSideEffects(); | |
6369 } | |
6370 | |
6371 Handle<Name> name_; | |
6372 Handle<TypeFeedbackVector> feedback_vector_; | |
6373 FeedbackVectorSlot slot_; | |
6374 LanguageMode language_mode_; | |
6375 }; | |
6376 | |
6377 class HStoreKeyed final : public HTemplateInstruction<4>, | 6330 class HStoreKeyed final : public HTemplateInstruction<4>, |
6378 public ArrayInstructionInterface { | 6331 public ArrayInstructionInterface { |
6379 public: | 6332 public: |
6380 DECLARE_INSTRUCTION_FACTORY_P5(HStoreKeyed, HValue*, HValue*, HValue*, | 6333 DECLARE_INSTRUCTION_FACTORY_P5(HStoreKeyed, HValue*, HValue*, HValue*, |
6381 HValue*, ElementsKind); | 6334 HValue*, ElementsKind); |
6382 DECLARE_INSTRUCTION_FACTORY_P6(HStoreKeyed, HValue*, HValue*, HValue*, | 6335 DECLARE_INSTRUCTION_FACTORY_P6(HStoreKeyed, HValue*, HValue*, HValue*, |
6383 HValue*, ElementsKind, StoreFieldOrKeyedMode); | 6336 HValue*, ElementsKind, StoreFieldOrKeyedMode); |
6384 DECLARE_INSTRUCTION_FACTORY_P7(HStoreKeyed, HValue*, HValue*, HValue*, | 6337 DECLARE_INSTRUCTION_FACTORY_P7(HStoreKeyed, HValue*, HValue*, HValue*, |
6385 HValue*, ElementsKind, StoreFieldOrKeyedMode, | 6338 HValue*, ElementsKind, StoreFieldOrKeyedMode, |
6386 int); | 6339 int); |
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7129 bool IsDeletable() const override { return true; } | 7082 bool IsDeletable() const override { return true; } |
7130 }; | 7083 }; |
7131 | 7084 |
7132 #undef DECLARE_INSTRUCTION | 7085 #undef DECLARE_INSTRUCTION |
7133 #undef DECLARE_CONCRETE_INSTRUCTION | 7086 #undef DECLARE_CONCRETE_INSTRUCTION |
7134 | 7087 |
7135 } // namespace internal | 7088 } // namespace internal |
7136 } // namespace v8 | 7089 } // namespace v8 |
7137 | 7090 |
7138 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7091 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |