LCOV - code coverage report
Current view: top level - test/cctest - profiler-extension.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 20 21 95.2 %
Date: 2019-04-17 Functions: 6 6 100.0 %

          Line data    Source code
       1             : // Copyright 2013 the V8 project authors. All rights reserved.
       2             : // Redistribution and use in source and binary forms, with or without
       3             : // modification, are permitted provided that the following conditions are
       4             : // met:
       5             : //
       6             : //     * Redistributions of source code must retain the above copyright
       7             : //       notice, this list of conditions and the following disclaimer.
       8             : //     * Redistributions in binary form must reproduce the above
       9             : //       copyright notice, this list of conditions and the following
      10             : //       disclaimer in the documentation and/or other materials provided
      11             : //       with the distribution.
      12             : //     * Neither the name of Google Inc. nor the names of its
      13             : //       contributors may be used to endorse or promote products derived
      14             : //       from this software without specific prior written permission.
      15             : //
      16             : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      17             : // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      18             : // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      19             : // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      20             : // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      21             : // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      22             : // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      23             : // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      24             : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      25             : // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      26             : // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      27             : //
      28             : // Tests of profiles generator and utilities.
      29             : 
      30             : #include "test/cctest/profiler-extension.h"
      31             : #include "test/cctest/cctest.h"
      32             : 
      33             : namespace v8 {
      34             : namespace internal {
      35             : 
      36             : v8::CpuProfiler* ProfilerExtension::profiler_ = nullptr;
      37             : v8::CpuProfile* ProfilerExtension::last_profile = nullptr;
      38             : const char* ProfilerExtension::kSource =
      39             :     "native function startProfiling();"
      40             :     "native function stopProfiling();"
      41             :     "native function collectSample();";
      42             : 
      43         192 : v8::Local<v8::FunctionTemplate> ProfilerExtension::GetNativeFunctionTemplate(
      44             :     v8::Isolate* isolate, v8::Local<v8::String> name) {
      45         384 :   if (name->StrictEquals(v8_str(isolate, "startProfiling"))) {
      46             :     return v8::FunctionTemplate::New(isolate,
      47          64 :                                      ProfilerExtension::StartProfiling);
      48             :   }
      49         256 :   if (name->StrictEquals(v8_str(isolate, "stopProfiling"))) {
      50          64 :     return v8::FunctionTemplate::New(isolate, ProfilerExtension::StopProfiling);
      51             :   }
      52         128 :   if (name->StrictEquals(v8_str(isolate, "collectSample"))) {
      53          64 :     return v8::FunctionTemplate::New(isolate, ProfilerExtension::CollectSample);
      54             :   }
      55           0 :   UNREACHABLE();
      56             : }
      57             : 
      58          39 : void ProfilerExtension::StartProfiling(
      59             :     const v8::FunctionCallbackInfo<v8::Value>& args) {
      60          39 :   last_profile = nullptr;
      61          78 :   profiler_->StartProfiling(args.Length() > 0
      62             :                                 ? args[0].As<v8::String>()
      63          39 :                                 : v8::String::Empty(args.GetIsolate()));
      64          39 : }
      65             : 
      66          24 : void ProfilerExtension::StopProfiling(
      67             :     const v8::FunctionCallbackInfo<v8::Value>& args) {
      68          48 :   last_profile = profiler_->StopProfiling(
      69             :       args.Length() > 0 ? args[0].As<v8::String>()
      70          24 :                         : v8::String::Empty(args.GetIsolate()));
      71          24 : }
      72             : 
      73           5 : void ProfilerExtension::CollectSample(
      74             :     const v8::FunctionCallbackInfo<v8::Value>& args) {
      75           5 :   v8::CpuProfiler::CollectSample(args.GetIsolate());
      76           5 : }
      77             : 
      78             : }  // namespace internal
      79       79917 : }  // namespace v8

Generated by: LCOV version 1.10