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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 V(Sar) \ | 126 V(Sar) \ |
127 V(SeqStringGetChar) \ | 127 V(SeqStringGetChar) \ |
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) \ | |
137 V(StoreNamedField) \ | 136 V(StoreNamedField) \ |
138 V(StringAdd) \ | 137 V(StringAdd) \ |
139 V(StringCharCodeAt) \ | 138 V(StringCharCodeAt) \ |
140 V(StringCharFromCode) \ | 139 V(StringCharFromCode) \ |
141 V(StringCompareAndBranch) \ | 140 V(StringCompareAndBranch) \ |
142 V(Sub) \ | 141 V(Sub) \ |
143 V(ThisFunction) \ | 142 V(ThisFunction) \ |
144 V(TransitionElementsKind) \ | 143 V(TransitionElementsKind) \ |
145 V(TrapAllocationMemento) \ | 144 V(TrapAllocationMemento) \ |
146 V(Typeof) \ | 145 V(Typeof) \ |
(...skipping 6355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6502 class IsDehoistedField : public BitField<bool, 0, 1> {}; | 6501 class IsDehoistedField : public BitField<bool, 0, 1> {}; |
6503 class IsUninitializedField : public BitField<bool, 1, 1> {}; | 6502 class IsUninitializedField : public BitField<bool, 1, 1> {}; |
6504 class StoreModeField : public BitField<StoreFieldOrKeyedMode, 2, 1> {}; | 6503 class StoreModeField : public BitField<StoreFieldOrKeyedMode, 2, 1> {}; |
6505 class ElementsKindField : public BitField<ElementsKind, 3, 5> {}; | 6504 class ElementsKindField : public BitField<ElementsKind, 3, 5> {}; |
6506 | 6505 |
6507 uint32_t base_offset_; | 6506 uint32_t base_offset_; |
6508 uint32_t bit_field_; | 6507 uint32_t bit_field_; |
6509 HValue* dominator_; | 6508 HValue* dominator_; |
6510 }; | 6509 }; |
6511 | 6510 |
6512 class HStoreKeyedGeneric final : public HTemplateInstruction<4> { | |
6513 public: | |
6514 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P6(HStoreKeyedGeneric, HValue*, | |
6515 HValue*, HValue*, LanguageMode, | |
6516 Handle<TypeFeedbackVector>, | |
6517 FeedbackVectorSlot); | |
6518 | |
6519 HValue* object() const { return OperandAt(0); } | |
6520 HValue* key() const { return OperandAt(1); } | |
6521 HValue* value() const { return OperandAt(2); } | |
6522 HValue* context() const { return OperandAt(3); } | |
6523 LanguageMode language_mode() const { return language_mode_; } | |
6524 | |
6525 Representation RequiredInputRepresentation(int index) override { | |
6526 // tagged[tagged] = tagged | |
6527 return Representation::Tagged(); | |
6528 } | |
6529 | |
6530 FeedbackVectorSlot slot() const { return slot_; } | |
6531 Handle<TypeFeedbackVector> feedback_vector() const { | |
6532 return feedback_vector_; | |
6533 } | |
6534 | |
6535 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | |
6536 | |
6537 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric) | |
6538 | |
6539 private: | |
6540 HStoreKeyedGeneric(HValue* context, HValue* object, HValue* key, | |
6541 HValue* value, LanguageMode language_mode, | |
6542 Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) | |
6543 : feedback_vector_(vector), slot_(slot), language_mode_(language_mode) { | |
6544 SetOperandAt(0, object); | |
6545 SetOperandAt(1, key); | |
6546 SetOperandAt(2, value); | |
6547 SetOperandAt(3, context); | |
6548 SetAllSideEffects(); | |
6549 } | |
6550 | |
6551 Handle<TypeFeedbackVector> feedback_vector_; | |
6552 FeedbackVectorSlot slot_; | |
6553 LanguageMode language_mode_; | |
6554 }; | |
6555 | |
6556 class HTransitionElementsKind final : public HTemplateInstruction<2> { | 6511 class HTransitionElementsKind final : public HTemplateInstruction<2> { |
6557 public: | 6512 public: |
6558 inline static HTransitionElementsKind* New(Isolate* isolate, Zone* zone, | 6513 inline static HTransitionElementsKind* New(Isolate* isolate, Zone* zone, |
6559 HValue* context, HValue* object, | 6514 HValue* context, HValue* object, |
6560 Handle<Map> original_map, | 6515 Handle<Map> original_map, |
6561 Handle<Map> transitioned_map) { | 6516 Handle<Map> transitioned_map) { |
6562 return new(zone) HTransitionElementsKind(context, object, | 6517 return new(zone) HTransitionElementsKind(context, object, |
6563 original_map, transitioned_map); | 6518 original_map, transitioned_map); |
6564 } | 6519 } |
6565 | 6520 |
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7082 bool IsDeletable() const override { return true; } | 7037 bool IsDeletable() const override { return true; } |
7083 }; | 7038 }; |
7084 | 7039 |
7085 #undef DECLARE_INSTRUCTION | 7040 #undef DECLARE_INSTRUCTION |
7086 #undef DECLARE_CONCRETE_INSTRUCTION | 7041 #undef DECLARE_CONCRETE_INSTRUCTION |
7087 | 7042 |
7088 } // namespace internal | 7043 } // namespace internal |
7089 } // namespace v8 | 7044 } // namespace v8 |
7090 | 7045 |
7091 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7046 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |