Index: src/crankshaft/hydrogen-instructions.h |
diff --git a/src/crankshaft/hydrogen-instructions.h b/src/crankshaft/hydrogen-instructions.h |
index fdb1fd6d46c5cea8a8f77458d8297f5e8980b51d..898539b21d59d5925292d50bd9e1b9fa5f580e47 100644 |
--- a/src/crankshaft/hydrogen-instructions.h |
+++ b/src/crankshaft/hydrogen-instructions.h |
@@ -4875,8 +4875,10 @@ class HUnknownOSRValue final : public HTemplateInstruction<0> { |
class HLoadGlobalGeneric final : public HTemplateInstruction<2> { |
public: |
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*, |
- Handle<String>, TypeofMode); |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(HLoadGlobalGeneric, HValue*, |
+ Handle<String>, TypeofMode, |
+ Handle<TypeFeedbackVector>, |
+ FeedbackVectorSlot); |
HValue* context() { return OperandAt(0); } |
HValue* global_object() { return OperandAt(1); } |
@@ -4886,12 +4888,6 @@ class HLoadGlobalGeneric final : public HTemplateInstruction<2> { |
Handle<TypeFeedbackVector> feedback_vector() const { |
return feedback_vector_; |
} |
- bool HasVectorAndSlot() const { return true; } |
- void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
- FeedbackVectorSlot slot) { |
- feedback_vector_ = vector; |
- slot_ = slot; |
- } |
std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
@@ -4903,8 +4899,12 @@ class HLoadGlobalGeneric final : public HTemplateInstruction<2> { |
private: |
HLoadGlobalGeneric(HValue* context, HValue* global_object, |
- Handle<String> name, TypeofMode typeof_mode) |
- : name_(name), typeof_mode_(typeof_mode) { |
+ Handle<String> name, TypeofMode typeof_mode, |
+ Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) |
+ : name_(name), |
+ typeof_mode_(typeof_mode), |
+ feedback_vector_(vector), |
+ slot_(slot) { |
SetOperandAt(0, context); |
SetOperandAt(1, global_object); |
set_representation(Representation::Tagged()); |
@@ -5887,26 +5887,19 @@ class HLoadNamedField final : public HTemplateInstruction<2> { |
class HLoadNamedGeneric final : public HTemplateInstruction<2> { |
public: |
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadNamedGeneric, HValue*, |
- Handle<Name>, InlineCacheState); |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HLoadNamedGeneric, HValue*, |
+ Handle<Name>, |
+ Handle<TypeFeedbackVector>, |
+ FeedbackVectorSlot); |
HValue* context() const { return OperandAt(0); } |
HValue* object() const { return OperandAt(1); } |
Handle<Name> name() const { return name_; } |
- InlineCacheState initialization_state() const { |
- return initialization_state_; |
- } |
FeedbackVectorSlot slot() const { return slot_; } |
Handle<TypeFeedbackVector> feedback_vector() const { |
return feedback_vector_; |
} |
- bool HasVectorAndSlot() const { return true; } |
- void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
- FeedbackVectorSlot slot) { |
- feedback_vector_ = vector; |
- slot_ = slot; |
- } |
Representation RequiredInputRepresentation(int index) override { |
return Representation::Tagged(); |
@@ -5918,9 +5911,8 @@ class HLoadNamedGeneric final : public HTemplateInstruction<2> { |
private: |
HLoadNamedGeneric(HValue* context, HValue* object, Handle<Name> name, |
- InlineCacheState initialization_state) |
- : name_(name), |
- initialization_state_(initialization_state) { |
+ Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) |
+ : name_(name), feedback_vector_(vector), slot_(slot) { |
SetOperandAt(0, context); |
SetOperandAt(1, object); |
set_representation(Representation::Tagged()); |
@@ -5930,7 +5922,6 @@ class HLoadNamedGeneric final : public HTemplateInstruction<2> { |
Handle<Name> name_; |
Handle<TypeFeedbackVector> feedback_vector_; |
FeedbackVectorSlot slot_; |
- InlineCacheState initialization_state_; |
}; |
@@ -6172,27 +6163,17 @@ class HLoadKeyed final : public HTemplateInstruction<4>, |
class HLoadKeyedGeneric final : public HTemplateInstruction<3> { |
public: |
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadKeyedGeneric, HValue*, |
- HValue*, InlineCacheState); |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HLoadKeyedGeneric, HValue*, |
+ HValue*, |
+ Handle<TypeFeedbackVector>, |
+ FeedbackVectorSlot); |
HValue* object() const { return OperandAt(0); } |
HValue* key() const { return OperandAt(1); } |
HValue* context() const { return OperandAt(2); } |
- InlineCacheState initialization_state() const { |
- return initialization_state_; |
- } |
FeedbackVectorSlot slot() const { return slot_; } |
Handle<TypeFeedbackVector> feedback_vector() const { |
return feedback_vector_; |
} |
- bool HasVectorAndSlot() const { |
- DCHECK(initialization_state_ == MEGAMORPHIC || !feedback_vector_.is_null()); |
- return !feedback_vector_.is_null(); |
- } |
- void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
- FeedbackVectorSlot slot) { |
- feedback_vector_ = vector; |
- slot_ = slot; |
- } |
std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
@@ -6207,8 +6188,8 @@ class HLoadKeyedGeneric final : public HTemplateInstruction<3> { |
private: |
HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key, |
- InlineCacheState initialization_state) |
- : initialization_state_(initialization_state) { |
+ Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) |
+ : feedback_vector_(vector), slot_(slot) { |
set_representation(Representation::Tagged()); |
SetOperandAt(0, obj); |
SetOperandAt(1, key); |
@@ -6218,7 +6199,6 @@ class HLoadKeyedGeneric final : public HTemplateInstruction<3> { |
Handle<TypeFeedbackVector> feedback_vector_; |
FeedbackVectorSlot slot_; |
- InlineCacheState initialization_state_; |
}; |
@@ -6380,20 +6360,18 @@ class HStoreNamedField final : public HTemplateInstruction<3> { |
uint32_t bit_field_; |
}; |
- |
class HStoreNamedGeneric final : public HTemplateInstruction<3> { |
public: |
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(HStoreNamedGeneric, HValue*, |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P6(HStoreNamedGeneric, HValue*, |
Handle<Name>, HValue*, |
- LanguageMode, InlineCacheState); |
+ LanguageMode, |
+ Handle<TypeFeedbackVector>, |
+ FeedbackVectorSlot); |
HValue* object() const { return OperandAt(0); } |
HValue* value() const { return OperandAt(1); } |
HValue* context() const { return OperandAt(2); } |
Handle<Name> name() const { return name_; } |
LanguageMode language_mode() const { return language_mode_; } |
- InlineCacheState initialization_state() const { |
- return initialization_state_; |
- } |
std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
@@ -6405,22 +6383,17 @@ class HStoreNamedGeneric final : public HTemplateInstruction<3> { |
Handle<TypeFeedbackVector> feedback_vector() const { |
return feedback_vector_; |
} |
- bool HasVectorAndSlot() const { return true; } |
- void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
- FeedbackVectorSlot slot) { |
- feedback_vector_ = vector; |
- slot_ = slot; |
- } |
DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric) |
private: |
HStoreNamedGeneric(HValue* context, HValue* object, Handle<Name> name, |
HValue* value, LanguageMode language_mode, |
- InlineCacheState initialization_state) |
+ Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) |
: name_(name), |
- language_mode_(language_mode), |
- initialization_state_(initialization_state) { |
+ feedback_vector_(vector), |
+ slot_(slot), |
+ language_mode_(language_mode) { |
SetOperandAt(0, object); |
SetOperandAt(1, value); |
SetOperandAt(2, context); |
@@ -6431,10 +6404,8 @@ class HStoreNamedGeneric final : public HTemplateInstruction<3> { |
Handle<TypeFeedbackVector> feedback_vector_; |
FeedbackVectorSlot slot_; |
LanguageMode language_mode_; |
- InlineCacheState initialization_state_; |
}; |
- |
class HStoreKeyed final : public HTemplateInstruction<4>, |
public ArrayInstructionInterface { |
public: |
@@ -6617,21 +6588,18 @@ class HStoreKeyed final : public HTemplateInstruction<4>, |
HValue* dominator_; |
}; |
- |
class HStoreKeyedGeneric final : public HTemplateInstruction<4> { |
public: |
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(HStoreKeyedGeneric, HValue*, |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P6(HStoreKeyedGeneric, HValue*, |
HValue*, HValue*, LanguageMode, |
- InlineCacheState); |
+ Handle<TypeFeedbackVector>, |
+ FeedbackVectorSlot); |
HValue* object() const { return OperandAt(0); } |
HValue* key() const { return OperandAt(1); } |
HValue* value() const { return OperandAt(2); } |
HValue* context() const { return OperandAt(3); } |
LanguageMode language_mode() const { return language_mode_; } |
- InlineCacheState initialization_state() const { |
- return initialization_state_; |
- } |
Representation RequiredInputRepresentation(int index) override { |
// tagged[tagged] = tagged |
@@ -6642,14 +6610,6 @@ class HStoreKeyedGeneric final : public HTemplateInstruction<4> { |
Handle<TypeFeedbackVector> feedback_vector() const { |
return feedback_vector_; |
} |
- bool HasVectorAndSlot() const { |
- return !feedback_vector_.is_null(); |
- } |
- void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
- FeedbackVectorSlot slot) { |
- feedback_vector_ = vector; |
- slot_ = slot; |
- } |
std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
@@ -6658,9 +6618,8 @@ class HStoreKeyedGeneric final : public HTemplateInstruction<4> { |
private: |
HStoreKeyedGeneric(HValue* context, HValue* object, HValue* key, |
HValue* value, LanguageMode language_mode, |
- InlineCacheState initialization_state) |
- : language_mode_(language_mode), |
- initialization_state_(initialization_state) { |
+ Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) |
+ : feedback_vector_(vector), slot_(slot), language_mode_(language_mode) { |
SetOperandAt(0, object); |
SetOperandAt(1, key); |
SetOperandAt(2, value); |
@@ -6671,10 +6630,8 @@ class HStoreKeyedGeneric final : public HTemplateInstruction<4> { |
Handle<TypeFeedbackVector> feedback_vector_; |
FeedbackVectorSlot slot_; |
LanguageMode language_mode_; |
- InlineCacheState initialization_state_; |
}; |
- |
class HTransitionElementsKind final : public HTemplateInstruction<2> { |
public: |
inline static HTransitionElementsKind* New(Isolate* isolate, Zone* zone, |