| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "src/compiler/feedback-source.h" |
| |
| namespace v8 { |
| namespace internal { |
| namespace compiler { |
| |
| FeedbackSource::FeedbackSource(Handle<FeedbackVector> vector_, |
| FeedbackSlot slot_) |
| : vector(vector_), slot(slot_) { |
| DCHECK(!slot.IsInvalid()); |
| } |
| |
| FeedbackSource::FeedbackSource(FeedbackVectorRef vector_, FeedbackSlot slot_) |
| : FeedbackSource(vector_.object(), slot_) {} |
| |
| int FeedbackSource::index() const { |
| CHECK(IsValid()); |
| return FeedbackVector::GetIndex(slot); |
| } |
| |
| bool operator==(FeedbackSource const& lhs, FeedbackSource const& rhs) { |
| return FeedbackSource::Equal()(lhs, rhs); |
| } |
| |
| bool operator!=(FeedbackSource const& lhs, FeedbackSource const& rhs) { |
| return !(lhs == rhs); |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const FeedbackSource& p) { |
| if (p.IsValid()) { |
| return os << "FeedbackSource(" << p.slot << ")"; |
| } |
| return os << "FeedbackSource(INVALID)"; |
| } |
| |
| } // namespace compiler |
| } // namespace internal |
| } // namespace v8 |