Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: src/crankshaft/hydrogen-instructions.h

Issue 2358533002: [crankshaft] Remove HStoreNamedGeneric and use HCallWithDescriptor instead to call StoreIC. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/crankshaft/hydrogen.cc ('k') | src/crankshaft/hydrogen-instructions.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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_
OLDNEW
« no previous file with comments | « src/crankshaft/hydrogen.cc ('k') | src/crankshaft/hydrogen-instructions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698