Index: src/type-feedback-vector.h |
diff --git a/src/type-feedback-vector.h b/src/type-feedback-vector.h |
index b6fadba73ea0623ea62ee852f15eda9af3394207..18b1c1974b616501edaf349d1e2a91b60fb054ae 100644 |
--- a/src/type-feedback-vector.h |
+++ b/src/type-feedback-vector.h |
@@ -49,6 +49,42 @@ class TypeFeedbackVector : public FixedArray { |
private: |
DISALLOW_IMPLICIT_CONSTRUCTORS(TypeFeedbackVector); |
}; |
+ |
+// A FeedbackNode is the combination of a TypeFeedbackVector and a slot. |
+// Derived classes customize the update and retrieval of feedback. |
+class FeedbackNode { |
+ public: |
+ FeedbackNode(Handle<TypeFeedbackVector> vector, int slot) |
+ : vector_(vector), slot_(slot) {} |
+ virtual ~FeedbackNode() {} |
+ |
+ Handle<TypeFeedbackVector> vector() const { return vector_; } |
+ int slot() const { return slot_; } |
+ |
+ private: |
+ Handle<TypeFeedbackVector> vector_; |
+ int slot_; |
+}; |
+ |
+ |
+bool operator==(FeedbackNode const&, FeedbackNode const&); |
+bool operator!=(FeedbackNode const&, FeedbackNode const&); |
+ |
+size_t hash_value(FeedbackNode const&); |
+ |
+ |
+class LoadICFeedbackNode : public FeedbackNode { |
+ public: |
+ LoadICFeedbackNode(Handle<TypeFeedbackVector> vector, int slot) |
+ : FeedbackNode(vector, slot) {} |
+}; |
+ |
+ |
+class KeyedLoadICFeedbackNode : public FeedbackNode { |
+ public: |
+ KeyedLoadICFeedbackNode(Handle<TypeFeedbackVector> vector, int slot) |
+ : FeedbackNode(vector, slot) {} |
+}; |
} |
} // namespace v8::internal |