LCOV - code coverage report
Current view: top level - src/objects - script-inl.h (source / functions) Hit Total Coverage
Test: app.info Lines: 37 37 100.0 %
Date: 2019-04-17 Functions: 14 14 100.0 %

          Line data    Source code
       1             : // Copyright 2017 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_OBJECTS_SCRIPT_INL_H_
       6             : #define V8_OBJECTS_SCRIPT_INL_H_
       7             : 
       8             : #include "src/objects/script.h"
       9             : 
      10             : #include "src/objects/shared-function-info.h"
      11             : #include "src/objects/smi-inl.h"
      12             : #include "src/objects/string-inl.h"
      13             : 
      14             : // Has to be the last include (doesn't have include guards):
      15             : #include "src/objects/object-macros.h"
      16             : 
      17             : namespace v8 {
      18             : namespace internal {
      19             : 
      20             : OBJECT_CONSTRUCTORS_IMPL(Script, Struct)
      21             : 
      22             : NEVER_READ_ONLY_SPACE_IMPL(Script)
      23             : 
      24             : CAST_ACCESSOR(Script)
      25             : 
      26    38953055 : ACCESSORS(Script, source, Object, kSourceOffset)
      27    16672810 : ACCESSORS(Script, name, Object, kNameOffset)
      28    14803102 : SMI_ACCESSORS(Script, id, kIdOffset)
      29     8478598 : SMI_ACCESSORS(Script, line_offset, kLineOffsetOffset)
      30     3596892 : SMI_ACCESSORS(Script, column_offset, kColumnOffsetOffset)
      31    36665709 : ACCESSORS(Script, context_data, Object, kContextOffset)
      32    25114368 : SMI_ACCESSORS(Script, type, kScriptTypeOffset)
      33    22934783 : ACCESSORS(Script, line_ends, Object, kLineEndsOffset)
      34    22840482 : ACCESSORS_CHECKED(Script, eval_from_shared_or_wrapped_arguments, Object,
      35             :                   kEvalFromSharedOrWrappedArgumentsOffset,
      36             :                   this->type() != TYPE_WASM)
      37     3868588 : SMI_ACCESSORS_CHECKED(Script, eval_from_position, kEvalFromPositionOffset,
      38             :                       this->type() != TYPE_WASM)
      39    16992418 : ACCESSORS(Script, shared_function_infos, WeakFixedArray,
      40             :           kSharedFunctionInfosOffset)
      41    13437765 : SMI_ACCESSORS(Script, flags, kFlagsOffset)
      42      820546 : ACCESSORS(Script, source_url, Object, kSourceUrlOffset)
      43       77650 : ACCESSORS(Script, source_mapping_url, Object, kSourceMappingUrlOffset)
      44    15263830 : ACCESSORS(Script, host_defined_options, FixedArray, kHostDefinedOptionsOffset)
      45     6159370 : ACCESSORS_CHECKED(Script, wasm_module_object, Object,
      46             :                   kEvalFromSharedOrWrappedArgumentsOffset,
      47             :                   this->type() == TYPE_WASM)
      48             : 
      49     1730908 : bool Script::is_wrapped() const {
      50     1730908 :   return eval_from_shared_or_wrapped_arguments()->IsFixedArray();
      51             : }
      52             : 
      53        3277 : bool Script::has_eval_from_shared() const {
      54        3277 :   return eval_from_shared_or_wrapped_arguments()->IsSharedFunctionInfo();
      55             : }
      56             : 
      57             : void Script::set_eval_from_shared(SharedFunctionInfo shared,
      58             :                                   WriteBarrierMode mode) {
      59             :   DCHECK(!is_wrapped());
      60     1317196 :   set_eval_from_shared_or_wrapped_arguments(shared, mode);
      61             : }
      62             : 
      63             : SharedFunctionInfo Script::eval_from_shared() const {
      64             :   DCHECK(has_eval_from_shared());
      65             :   return SharedFunctionInfo::cast(eval_from_shared_or_wrapped_arguments());
      66             : }
      67             : 
      68             : void Script::set_wrapped_arguments(FixedArray value, WriteBarrierMode mode) {
      69             :   DCHECK(!has_eval_from_shared());
      70          74 :   set_eval_from_shared_or_wrapped_arguments(value, mode);
      71             : }
      72             : 
      73             : FixedArray Script::wrapped_arguments() const {
      74             :   DCHECK(is_wrapped());
      75             :   return FixedArray::cast(eval_from_shared_or_wrapped_arguments());
      76             : }
      77             : 
      78             : Script::CompilationType Script::compilation_type() {
      79             :   return BooleanBit::get(flags(), kCompilationTypeBit) ? COMPILATION_TYPE_EVAL
      80     2542783 :                                                        : COMPILATION_TYPE_HOST;
      81             : }
      82             : void Script::set_compilation_type(CompilationType type) {
      83             :   set_flags(BooleanBit::set(flags(), kCompilationTypeBit,
      84             :                             type == COMPILATION_TYPE_EVAL));
      85             : }
      86             : Script::CompilationState Script::compilation_state() {
      87             :   return BooleanBit::get(flags(), kCompilationStateBit)
      88             :              ? COMPILATION_STATE_COMPILED
      89       33907 :              : COMPILATION_STATE_INITIAL;
      90             : }
      91             : void Script::set_compilation_state(CompilationState state) {
      92             :   set_flags(BooleanBit::set(flags(), kCompilationStateBit,
      93             :                             state == COMPILATION_STATE_COMPILED));
      94             : }
      95             : ScriptOriginOptions Script::origin_options() {
      96     4510512 :   return ScriptOriginOptions((flags() & kOriginOptionsMask) >>
      97     4510512 :                              kOriginOptionsShift);
      98             : }
      99     1474621 : void Script::set_origin_options(ScriptOriginOptions origin_options) {
     100             :   DCHECK(!(origin_options.Flags() & ~((1 << kOriginOptionsSize) - 1)));
     101     2949242 :   set_flags((flags() & ~kOriginOptionsMask) |
     102     1474621 :             (origin_options.Flags() << kOriginOptionsShift));
     103     1474621 : }
     104             : 
     105     2061308 : bool Script::HasValidSource() {
     106             :   Object src = this->source();
     107     2061308 :   if (!src->IsString()) return true;
     108             :   String src_str = String::cast(src);
     109     2061308 :   if (!StringShape(src_str).IsExternal()) return true;
     110       17064 :   if (src_str->IsOneByteRepresentation()) {
     111       17024 :     return ExternalOneByteString::cast(src)->resource() != nullptr;
     112          40 :   } else if (src_str->IsTwoByteRepresentation()) {
     113          40 :     return ExternalTwoByteString::cast(src)->resource() != nullptr;
     114             :   }
     115             :   return true;
     116             : }
     117             : 
     118             : }  // namespace internal
     119             : }  // namespace v8
     120             : 
     121             : #include "src/objects/object-macros-undef.h"
     122             : 
     123             : #endif  // V8_OBJECTS_SCRIPT_INL_H_

Generated by: LCOV version 1.10