Index: src/type-feedback-vector-inl.h |
diff --git a/src/type-feedback-vector-inl.h b/src/type-feedback-vector-inl.h |
index 02a567bb350ddeb1f2c2486771e8ac737cef4c63..2c971cac5d93aaef5e10017364d5fc8927d5ba67 100644 |
--- a/src/type-feedback-vector-inl.h |
+++ b/src/type-feedback-vector-inl.h |
@@ -78,12 +78,6 @@ TypeFeedbackMetadata* TypeFeedbackVector::metadata() const { |
} |
-FeedbackVectorSlotKind TypeFeedbackVector::GetKind( |
- FeedbackVectorSlot slot) const { |
- DCHECK(!is_empty()); |
- return metadata()->GetKind(slot); |
-} |
- |
// static |
int TypeFeedbackVector::GetIndex(FeedbackVectorSlot slot) { |
return kReservedIndexCount + slot.ToInt(); |
@@ -153,6 +147,21 @@ Symbol* TypeFeedbackVector::RawUninitializedSentinel(Isolate* isolate) { |
return isolate->heap()->uninitialized_symbol(); |
} |
+bool TypeFeedbackMetadataIterator::HasNext() const { |
+ return slot_.ToInt() < metadata()->slot_count(); |
+} |
+ |
+FeedbackVectorSlot TypeFeedbackMetadataIterator::Next() { |
+ DCHECK(HasNext()); |
+ FeedbackVectorSlot slot = slot_; |
+ slot_kind_ = metadata()->GetKind(slot); |
+ slot_ = FeedbackVectorSlot(slot_.ToInt() + entry_size()); |
+ return slot; |
+} |
+ |
+int TypeFeedbackMetadataIterator::entry_size() const { |
+ return TypeFeedbackMetadata::GetSlotSize(kind()); |
+} |
Object* FeedbackNexus::GetFeedback() const { return vector()->Get(slot()); } |