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

Unified Diff: src/feedback-vector.h

Issue 2707873002: Collect type profile for DevTools. (Closed)
Patch Set: Add documentation and sprinkle consts around. Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: src/feedback-vector.h
diff --git a/src/feedback-vector.h b/src/feedback-vector.h
index 9ac146d5113dbf70a325f2ac7a5d6b2b226b329e..3a6977c39e1bfb1c5e1e2a0b01d244fa3abcbc34 100644
--- a/src/feedback-vector.h
+++ b/src/feedback-vector.h
@@ -36,6 +36,7 @@ enum class FeedbackSlotKind {
kCompareOp,
kToBoolean,
kStoreDataPropertyInLiteral,
+ kTypeProfile,
kCreateClosure,
kLiteral,
// This is a general purpose slot that occupies one feedback vector element.
@@ -150,6 +151,11 @@ class FeedbackVectorSpecBase {
return AddSlot(FeedbackSlotKind::kStoreDataPropertyInLiteral);
}
+ FeedbackSlot AddTypeProfileSlot() {
+ DCHECK(FLAG_type_profile);
+ return AddSlot(FeedbackSlotKind::kTypeProfile);
+ }
+
#ifdef OBJECT_PRINT
// For gdb debugging.
void Print();
@@ -742,6 +748,30 @@ class StoreDataPropertyInLiteralICNexus : public FeedbackNexus {
InlineCacheState StateFromFeedback() const override;
};
+// For each assignment, store the type of the value in the collection of types
+// in the feedback vector.
+class CollectTypeProfileNexus : public FeedbackNexus {
+ public:
+ CollectTypeProfileNexus(Handle<FeedbackVector> vector, FeedbackSlot slot)
+ : FeedbackNexus(vector, slot) {
+ DCHECK_EQ(FeedbackSlotKind::kTypeProfile, vector->GetKind(slot));
+ }
+ CollectTypeProfileNexus(FeedbackVector* vector, FeedbackSlot slot)
+ : FeedbackNexus(vector, slot) {
+ DCHECK_EQ(FeedbackSlotKind::kTypeProfile, vector->GetKind(slot));
+ }
+
+ // Add a type to the list of types.
+ void Collect(Handle<Name> type);
+
+ // Dump the types to stdout.
+ // TODO(franzih): pass this information to the debugger protocol instead of
+ // stdout.
+ void Print() const;
+
+ InlineCacheState StateFromFeedback() const override;
+};
+
inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback);
inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback);

Powered by Google App Engine
This is Rietveld 408576698