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-19 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       60685 : int StackTraceFrame::GetLineNumber(Handle<StackTraceFrame> frame) {
      13       60685 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      14      121370 :   int line = GetFrameInfo(frame)->line_number();
      15       60685 :   return line != StackFrameBase::kNone ? line : Message::kNoLineNumberInfo;
      16             : }
      17             : 
      18       60650 : int StackTraceFrame::GetColumnNumber(Handle<StackTraceFrame> frame) {
      19       60650 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      20      121300 :   int column = GetFrameInfo(frame)->column_number();
      21       60650 :   return column != StackFrameBase::kNone ? column : Message::kNoColumnInfo;
      22             : }
      23             : 
      24       60266 : int StackTraceFrame::GetScriptId(Handle<StackTraceFrame> frame) {
      25       60266 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      26      120532 :   int id = GetFrameInfo(frame)->script_id();
      27       60266 :   return id != StackFrameBase::kNone ? id : Message::kNoScriptIdInfo;
      28             : }
      29             : 
      30       60453 : Handle<Object> StackTraceFrame::GetFileName(Handle<StackTraceFrame> frame) {
      31       60453 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      32      120906 :   auto name = GetFrameInfo(frame)->script_name();
      33       60453 :   return handle(name, frame->GetIsolate());
      34             : }
      35             : 
      36      120472 : Handle<Object> StackTraceFrame::GetScriptNameOrSourceUrl(
      37             :     Handle<StackTraceFrame> frame) {
      38      120472 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      39      240944 :   auto name = GetFrameInfo(frame)->script_name_or_source_url();
      40      120472 :   return handle(name, frame->GetIsolate());
      41             : }
      42             : 
      43       60615 : Handle<Object> StackTraceFrame::GetFunctionName(Handle<StackTraceFrame> frame) {
      44       60615 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      45      121230 :   auto name = GetFrameInfo(frame)->function_name();
      46       60615 :   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       60191 : bool StackTraceFrame::IsWasm(Handle<StackTraceFrame> frame) {
      60       60191 :   if (frame->frame_info()->IsUndefined()) InitializeFrameInfo(frame);
      61      120382 :   return GetFrameInfo(frame)->is_wasm();
      62             : }
      63             : 
      64      483532 : Handle<StackFrameInfo> StackTraceFrame::GetFrameInfo(
      65             :     Handle<StackTraceFrame> frame) {
      66      483532 :   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      122036 : }  // namespace v8

Generated by: LCOV version 1.10