LCOV - code coverage report
Current view: top level - test/cctest - test-feedback-vector.h (source / functions) Hit Total Coverage
Test: app.info Lines: 15 15 100.0 %
Date: 2017-10-20 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright 2015 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #ifndef V8_TEST_FEEDBACK_VECTOR_H_
       6             : #define V8_TEST_FEEDBACK_VECTOR_H_
       7             : 
       8             : #include "src/objects.h"
       9             : #include "src/objects/shared-function-info.h"
      10             : 
      11             : namespace v8 {
      12             : namespace internal {
      13             : 
      14             : // Helper class that allows to write tests in a slot size independent manner.
      15             : // Use helper.slot(X) to get X'th slot identifier.
      16             : class FeedbackVectorHelper {
      17             :  public:
      18         103 :   explicit FeedbackVectorHelper(Handle<FeedbackVector> vector)
      19         103 :       : vector_(vector) {
      20             :     int slot_count = vector->length();
      21         103 :     slots_.reserve(slot_count);
      22             :     FeedbackMetadataIterator iter(vector->metadata());
      23         598 :     while (iter.HasNext()) {
      24         495 :       FeedbackSlot slot = iter.Next();
      25         495 :       slots_.push_back(slot);
      26             :     }
      27         103 :   }
      28             : 
      29             :   Handle<FeedbackVector> vector() { return vector_; }
      30             : 
      31             :   // Returns slot identifier by numerical index.
      32         718 :   FeedbackSlot slot(int index) const { return slots_[index]; }
      33             : 
      34             :   // Returns the number of slots in the feedback vector.
      35         146 :   int slot_count() const { return static_cast<int>(slots_.size()); }
      36             : 
      37             :  private:
      38             :   Handle<FeedbackVector> vector_;
      39             :   std::vector<FeedbackSlot> slots_;
      40             : };
      41             : 
      42             : template <typename Spec>
      43          30 : Handle<FeedbackVector> NewFeedbackVector(Isolate* isolate, Spec* spec) {
      44          30 :   Handle<FeedbackMetadata> metadata = FeedbackMetadata::New(isolate, spec);
      45             :   Handle<SharedFunctionInfo> shared = isolate->factory()->NewSharedFunctionInfo(
      46          30 :       isolate->factory()->empty_string(), MaybeHandle<Code>(), false);
      47          30 :   shared->set_feedback_metadata(*metadata);
      48          30 :   return FeedbackVector::New(isolate, shared);
      49             : }
      50             : 
      51             : template <typename Spec>
      52             : Handle<FeedbackMetadata> NewFeedbackMetadata(Isolate* isolate, Spec* spec) {
      53       20442 :   return FeedbackMetadata::New(isolate, spec);
      54             : }
      55             : 
      56             : }  // namespace internal
      57             : }  // namespace v8
      58             : 
      59             : #endif

Generated by: LCOV version 1.10