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

Unified Diff: src/feedback-vector.h

Issue 2707873002: Collect type profile for DevTools. (Closed)
Patch Set: Use constructor name if available. Created 3 years, 10 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..a2fabb3bc18bbf66531c0dee344b405aac02e94c 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(true || FLAG_type_profile);
+ return AddSlot(FeedbackSlotKind::kTypeProfile);
+ }
+
#ifdef OBJECT_PRINT
// For gdb debugging.
void Print();
@@ -742,6 +748,27 @@ class StoreDataPropertyInLiteralICNexus : public FeedbackNexus {
InlineCacheState StateFromFeedback() const override;
};
+// For each assignment, store the types seen so far in the feedback.
+// Feedback is either a Name or an ArrayList with Names.
+// If we've seen too many types, we consider this feedback
+// megamorphic and useless.
+class CollectTypeProfileICNexus : public FeedbackNexus {
+ public:
+ CollectTypeProfileICNexus(Handle<FeedbackVector> vector, FeedbackSlot slot)
+ : FeedbackNexus(vector, slot) {
+ DCHECK_EQ(FeedbackSlotKind::kTypeProfile, vector->GetKind(slot));
+ }
+ CollectTypeProfileICNexus(FeedbackVector* vector, FeedbackSlot slot)
+ : FeedbackNexus(vector, slot) {
+ DCHECK_EQ(FeedbackSlotKind::kTypeProfile, vector->GetKind(slot));
+ }
+
+ void ConfigureMonomorphic(Handle<Name> type);
+ void ConfigurePolymorphic(Handle<Name> type);
+
+ InlineCacheState StateFromFeedback() const override;
+};
+
inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback);
inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback);
« no previous file with comments | « src/compiler/verifier.cc ('k') | src/feedback-vector.cc » ('j') | src/feedback-vector-inl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698