LCOV - code coverage report
Current view: top level - test/cctest - test-feedback-vector.h (source / functions) Hit Total Coverage
Test: app.info Lines: 16 16 100.0 %
Date: 2019-02-19 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/feedback-vector.h"
       9             : #include "src/objects.h"
      10             : #include "src/objects/shared-function-info.h"
      11             : 
      12             : namespace v8 {
      13             : namespace internal {
      14             : 
      15             : // Helper class that allows to write tests in a slot size independent manner.
      16             : // Use helper.slot(X) to get X'th slot identifier.
      17             : class FeedbackVectorHelper {
      18             :  public:
      19          89 :   explicit FeedbackVectorHelper(Handle<FeedbackVector> vector)
      20          89 :       : vector_(vector) {
      21             :     int slot_count = vector->length();
      22          89 :     slots_.reserve(slot_count);
      23         178 :     FeedbackMetadataIterator iter(vector->metadata());
      24         587 :     while (iter.HasNext()) {
      25         409 :       FeedbackSlot slot = iter.Next();
      26         409 :       slots_.push_back(slot);
      27             :     }
      28          89 :   }
      29             : 
      30             :   Handle<FeedbackVector> vector() { return vector_; }
      31             : 
      32             :   // Returns slot identifier by numerical index.
      33         619 :   FeedbackSlot slot(int index) const { return slots_[index]; }
      34             : 
      35             :   // Returns the number of slots in the feedback vector.
      36         120 :   int slot_count() const { return static_cast<int>(slots_.size()); }
      37             : 
      38             :  private:
      39             :   Handle<FeedbackVector> vector_;
      40             :   std::vector<FeedbackSlot> slots_;
      41             : };
      42             : 
      43             : template <typename Spec>
      44          25 : Handle<FeedbackVector> NewFeedbackVector(Isolate* isolate, Spec* spec) {
      45          25 :   Handle<FeedbackMetadata> metadata = FeedbackMetadata::New(isolate, spec);
      46             :   Handle<SharedFunctionInfo> shared =
      47             :       isolate->factory()->NewSharedFunctionInfoForBuiltin(
      48          25 :           isolate->factory()->empty_string(), Builtins::kIllegal);
      49             :   // Set the raw feedback metadata to circumvent checks that we are not
      50             :   // overwriting existing metadata.
      51          50 :   shared->set_raw_outer_scope_info_or_feedback_metadata(*metadata);
      52          25 :   return FeedbackVector::New(isolate, shared);
      53             : }
      54             : 
      55             : template <typename Spec>
      56             : Handle<FeedbackMetadata> NewFeedbackMetadata(Isolate* isolate, Spec* spec) {
      57       17770 :   return FeedbackMetadata::New(isolate, spec);
      58             : }
      59             : 
      60             : }  // namespace internal
      61             : }  // namespace v8
      62             : 
      63             : #endif

Generated by: LCOV version 1.10