LCOV - code coverage report
Current view: top level - test/cctest - profiler-extension.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 18 22 81.8 %
Date: 2017-10-20 Functions: 5 6 83.3 %

          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         156 : v8::Local<v8::FunctionTemplate> ProfilerExtension::GetNativeFunctionTemplate(
      44             :     v8::Isolate* isolate, v8::Local<v8::String> name) {
      45         156 :   v8::Local<v8::Context> context = isolate->GetCurrentContext();
      46         468 :   if (name->Equals(context, v8_str(isolate, "startProfiling")).FromJust()) {
      47             :     return v8::FunctionTemplate::New(isolate,
      48          52 :                                      ProfilerExtension::StartProfiling);
      49             :   }
      50         312 :   if (name->Equals(context, v8_str(isolate, "stopProfiling")).FromJust()) {
      51          52 :     return v8::FunctionTemplate::New(isolate, ProfilerExtension::StopProfiling);
      52             :   }
      53         156 :   if (name->Equals(context, v8_str(isolate, "collectSample")).FromJust()) {
      54          52 :     return v8::FunctionTemplate::New(isolate, ProfilerExtension::CollectSample);
      55             :   }
      56           0 :   CHECK(false);
      57             :   return v8::Local<v8::FunctionTemplate>();
      58             : }
      59             : 
      60          42 : void ProfilerExtension::StartProfiling(
      61          74 :     const v8::FunctionCallbackInfo<v8::Value>& args) {
      62          42 :   last_profile = nullptr;
      63             :   profiler_->StartProfiling(args.Length() > 0
      64             :                                 ? args[0].As<v8::String>()
      65          84 :                                 : v8::String::Empty(args.GetIsolate()));
      66          42 : }
      67             : 
      68          32 : void ProfilerExtension::StopProfiling(
      69          64 :     const v8::FunctionCallbackInfo<v8::Value>& args) {
      70             :   last_profile = profiler_->StopProfiling(
      71             :       args.Length() > 0 ? args[0].As<v8::String>()
      72          64 :                         : v8::String::Empty(args.GetIsolate()));
      73          32 : }
      74             : 
      75           0 : void ProfilerExtension::CollectSample(
      76             :     const v8::FunctionCallbackInfo<v8::Value>& args) {
      77           0 :   profiler_->CollectSample();
      78           0 : }
      79             : 
      80             : }  // namespace internal
      81       71154 : }  // namespace v8

Generated by: LCOV version 1.10