LCOV - code coverage report
Current view: top level - src/objects - stack-frame-info.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 41 41 100.0 %
Date: 2019-04-17 Functions: 12 12 100.0 %

          Line data    Source code
       1             : // Copyright 2019 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             : #include "src/objects/stack-frame-info.h"
       6             : 
       7             : #include "src/objects/stack-frame-info-inl.h"
       8             : 
       9             : namespace v8 {
      10             : namespace internal {
      11             : 
      12       60663 : int StackTraceFrame::GetLineNumber(Handle<StackTraceFrame> frame) {
      13       60663 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      14      121326 :   int line = GetFrameInfo(frame)->line_number();
      15       60663 :   return line != StackFrameBase::kNone ? line : Message::kNoLineNumberInfo;
      16             : }
      17             : 
      18       60628 : int StackTraceFrame::GetColumnNumber(Handle<StackTraceFrame> frame) {
      19       60628 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      20      121256 :   int column = GetFrameInfo(frame)->column_number();
      21       60628 :   return column != StackFrameBase::kNone ? column : Message::kNoColumnInfo;
      22             : }
      23             : 
      24       60244 : int StackTraceFrame::GetScriptId(Handle<StackTraceFrame> frame) {
      25       60244 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      26      120488 :   int id = GetFrameInfo(frame)->script_id();
      27       60244 :   return id != StackFrameBase::kNone ? id : Message::kNoScriptIdInfo;
      28             : }
      29             : 
      30       60431 : Handle<Object> StackTraceFrame::GetFileName(Handle<StackTraceFrame> frame) {
      31       60431 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      32      120862 :   auto name = GetFrameInfo(frame)->script_name();
      33       60431 :   return handle(name, frame->GetIsolate());
      34             : }
      35             : 
      36      120428 : Handle<Object> StackTraceFrame::GetScriptNameOrSourceUrl(
      37             :     Handle<StackTraceFrame> frame) {
      38      120428 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      39      240856 :   auto name = GetFrameInfo(frame)->script_name_or_source_url();
      40      120428 :   return handle(name, frame->GetIsolate());
      41             : }
      42             : 
      43       60593 : Handle<Object> StackTraceFrame::GetFunctionName(Handle<StackTraceFrame> frame) {
      44       60593 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      45      121186 :   auto name = GetFrameInfo(frame)->function_name();
      46       60593 :   return handle(name, frame->GetIsolate());
      47             : }
      48             : 
      49         100 : bool StackTraceFrame::IsEval(Handle<StackTraceFrame> frame) {
      50         100 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      51         200 :   return GetFrameInfo(frame)->is_eval();
      52             : }
      53             : 
      54         100 : bool StackTraceFrame::IsConstructor(Handle<StackTraceFrame> frame) {
      55         100 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      56         200 :   return GetFrameInfo(frame)->is_constructor();
      57             : }
      58             : 
      59       60169 : bool StackTraceFrame::IsWasm(Handle<StackTraceFrame> frame) {
      60       60169 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      61      120338 :   return GetFrameInfo(frame)->is_wasm();
      62             : }
      63             : 
      64      483356 : Handle<StackFrameInfo> StackTraceFrame::GetFrameInfo(
      65             :     Handle<StackTraceFrame> frame) {
      66      483356 :   return handle(StackFrameInfo::cast(frame->frame_info()), frame->GetIsolate());
      67             : }
      68             : 
      69       10770 : void StackTraceFrame::InitializeFrameInfo(Handle<StackTraceFrame> frame) {
      70             :   Isolate* isolate = frame->GetIsolate();
      71             :   Handle<StackFrameInfo> frame_info = isolate->factory()->NewStackFrameInfo(
      72             :       handle(FrameArray::cast(frame->frame_array()), isolate),
      73       10770 :       frame->frame_index());
      74       21540 :   frame->set_frame_info(*frame_info);
      75             : 
      76             :   // After initializing, we no longer need to keep a reference
      77             :   // to the frame_array.
      78       21540 :   frame->set_frame_array(ReadOnlyRoots(isolate).undefined_value());
      79             :   frame->set_frame_index(-1);
      80       10770 : }
      81             : 
      82             : }  // namespace internal
      83      121996 : }  // namespace v8

Generated by: LCOV version 1.10