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

Side by Side Diff: src/feedback-vector.h

Issue 2745413006: Revert of Collect type profile for DevTools. (Closed)
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « src/compiler/bytecode-graph-builder.cc ('k') | src/feedback-vector.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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_FEEDBACK_VECTOR_H_ 5 #ifndef V8_FEEDBACK_VECTOR_H_
6 #define V8_FEEDBACK_VECTOR_H_ 6 #define V8_FEEDBACK_VECTOR_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "src/base/logging.h" 10 #include "src/base/logging.h"
(...skipping 18 matching lines...) Expand all
29 kLoadKeyed, 29 kLoadKeyed,
30 kStoreNamedSloppy, 30 kStoreNamedSloppy,
31 kStoreNamedStrict, 31 kStoreNamedStrict,
32 kStoreOwnNamed, 32 kStoreOwnNamed,
33 kStoreKeyedSloppy, 33 kStoreKeyedSloppy,
34 kStoreKeyedStrict, 34 kStoreKeyedStrict,
35 kBinaryOp, 35 kBinaryOp,
36 kCompareOp, 36 kCompareOp,
37 kToBoolean, 37 kToBoolean,
38 kStoreDataPropertyInLiteral, 38 kStoreDataPropertyInLiteral,
39 kTypeProfile,
40 kCreateClosure, 39 kCreateClosure,
41 kLiteral, 40 kLiteral,
42 // This is a general purpose slot that occupies one feedback vector element. 41 // This is a general purpose slot that occupies one feedback vector element.
43 kGeneral, 42 kGeneral,
44 43
45 kKindsNumber // Last value indicating number of kinds. 44 kKindsNumber // Last value indicating number of kinds.
46 }; 45 };
47 46
48 inline bool IsCallICKind(FeedbackSlotKind kind) { 47 inline bool IsCallICKind(FeedbackSlotKind kind) {
49 return kind == FeedbackSlotKind::kCall; 48 return kind == FeedbackSlotKind::kCall;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } 143 }
145 144
146 FeedbackSlot AddGeneralSlot() { return AddSlot(FeedbackSlotKind::kGeneral); } 145 FeedbackSlot AddGeneralSlot() { return AddSlot(FeedbackSlotKind::kGeneral); }
147 146
148 FeedbackSlot AddLiteralSlot() { return AddSlot(FeedbackSlotKind::kLiteral); } 147 FeedbackSlot AddLiteralSlot() { return AddSlot(FeedbackSlotKind::kLiteral); }
149 148
150 FeedbackSlot AddStoreDataPropertyInLiteralICSlot() { 149 FeedbackSlot AddStoreDataPropertyInLiteralICSlot() {
151 return AddSlot(FeedbackSlotKind::kStoreDataPropertyInLiteral); 150 return AddSlot(FeedbackSlotKind::kStoreDataPropertyInLiteral);
152 } 151 }
153 152
154 FeedbackSlot AddTypeProfileSlot() {
155 DCHECK(FLAG_type_profile);
156 return AddSlot(FeedbackSlotKind::kTypeProfile);
157 }
158
159 #ifdef OBJECT_PRINT 153 #ifdef OBJECT_PRINT
160 // For gdb debugging. 154 // For gdb debugging.
161 void Print(); 155 void Print();
162 #endif // OBJECT_PRINT 156 #endif // OBJECT_PRINT
163 157
164 DECLARE_PRINTER(FeedbackVectorSpec) 158 DECLARE_PRINTER(FeedbackVectorSpec)
165 159
166 private: 160 private:
167 inline FeedbackSlot AddSlot(FeedbackSlotKind kind); 161 inline FeedbackSlot AddSlot(FeedbackSlotKind kind);
168 162
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 243
250 #ifdef OBJECT_PRINT 244 #ifdef OBJECT_PRINT
251 // For gdb debugging. 245 // For gdb debugging.
252 void Print(); 246 void Print();
253 #endif // OBJECT_PRINT 247 #endif // OBJECT_PRINT
254 248
255 DECLARE_PRINTER(FeedbackMetadata) 249 DECLARE_PRINTER(FeedbackMetadata)
256 250
257 static const char* Kind2String(FeedbackSlotKind kind); 251 static const char* Kind2String(FeedbackSlotKind kind);
258 252
259 bool HasTypeProfileSlot();
260
261 private: 253 private:
262 static const int kFeedbackSlotKindBits = 5; 254 static const int kFeedbackSlotKindBits = 5;
263 STATIC_ASSERT(static_cast<int>(FeedbackSlotKind::kKindsNumber) < 255 STATIC_ASSERT(static_cast<int>(FeedbackSlotKind::kKindsNumber) <
264 (1 << kFeedbackSlotKindBits)); 256 (1 << kFeedbackSlotKindBits));
265 257
266 void SetKind(FeedbackSlot slot, FeedbackSlotKind kind); 258 void SetKind(FeedbackSlot slot, FeedbackSlotKind kind);
267 259
268 typedef BitSetComputer<FeedbackSlotKind, kFeedbackSlotKindBits, kSmiValueSize, 260 typedef BitSetComputer<FeedbackSlotKind, kFeedbackSlotKindBits, kSmiValueSize,
269 uint32_t> 261 uint32_t>
270 VectorICComputer; 262 VectorICComputer;
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 : FeedbackNexus(vector, slot) { 735 : FeedbackNexus(vector, slot) {
744 DCHECK_EQ(FeedbackSlotKind::kStoreDataPropertyInLiteral, 736 DCHECK_EQ(FeedbackSlotKind::kStoreDataPropertyInLiteral,
745 vector->GetKind(slot)); 737 vector->GetKind(slot));
746 } 738 }
747 739
748 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map); 740 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map);
749 741
750 InlineCacheState StateFromFeedback() const override; 742 InlineCacheState StateFromFeedback() const override;
751 }; 743 };
752 744
753 // For each assignment, store the type of the value in the collection of types
754 // in the feedback vector.
755 class CollectTypeProfileNexus : public FeedbackNexus {
756 public:
757 CollectTypeProfileNexus(Handle<FeedbackVector> vector, FeedbackSlot slot)
758 : FeedbackNexus(vector, slot) {
759 DCHECK_EQ(FeedbackSlotKind::kTypeProfile, vector->GetKind(slot));
760 }
761 CollectTypeProfileNexus(FeedbackVector* vector, FeedbackSlot slot)
762 : FeedbackNexus(vector, slot) {
763 DCHECK_EQ(FeedbackSlotKind::kTypeProfile, vector->GetKind(slot));
764 }
765
766 // Add a type to the list of types.
767 void Collect(Handle<Name> type);
768
769 // Dump the types to stdout.
770 // TODO(franzih): pass this information to the debugger protocol instead of
771 // stdout.
772 void Print() const;
773
774 InlineCacheState StateFromFeedback() const override;
775 };
776
777 inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback); 745 inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback);
778 inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback); 746 inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback);
779 747
780 } // namespace internal 748 } // namespace internal
781 } // namespace v8 749 } // namespace v8
782 750
783 #endif // V8_FEEDBACK_VECTOR_H_ 751 #endif // V8_FEEDBACK_VECTOR_H_
OLDNEW
« no previous file with comments | « src/compiler/bytecode-graph-builder.cc ('k') | src/feedback-vector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698