LCOV - code coverage report
Current view: top level - src/runtime - runtime-symbol.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 24 24 100.0 %
Date: 2019-01-20 Functions: 6 10 60.0 %

          Line data    Source code
       1             : // Copyright 2014 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/arguments-inl.h"
       6             : #include "src/counters.h"
       7             : #include "src/isolate-inl.h"
       8             : #include "src/objects-inl.h"
       9             : #include "src/runtime/runtime-utils.h"
      10             : #include "src/string-builder-inl.h"
      11             : 
      12             : namespace v8 {
      13             : namespace internal {
      14             : 
      15         362 : RUNTIME_FUNCTION(Runtime_CreatePrivateSymbol) {
      16         362 :   HandleScope scope(isolate);
      17             :   DCHECK_GE(1, args.length());
      18         362 :   Handle<Symbol> symbol = isolate->factory()->NewPrivateSymbol();
      19         362 :   if (args.length() == 1) {
      20         362 :     CONVERT_ARG_HANDLE_CHECKED(Object, name, 0);
      21         724 :     CHECK(name->IsString() || name->IsUndefined(isolate));
      22        1086 :     if (name->IsString()) symbol->set_name(*name);
      23             :   }
      24         362 :   return *symbol;
      25             : }
      26             : 
      27         840 : RUNTIME_FUNCTION(Runtime_CreatePrivateNameSymbol) {
      28         840 :   HandleScope scope(isolate);
      29             :   DCHECK_EQ(1, args.length());
      30        1680 :   CONVERT_ARG_HANDLE_CHECKED(String, name, 0);
      31         840 :   Handle<Symbol> symbol = isolate->factory()->NewPrivateNameSymbol(name);
      32         840 :   return *symbol;
      33             : }
      34             : 
      35        5652 : RUNTIME_FUNCTION(Runtime_SymbolDescriptiveString) {
      36        5652 :   HandleScope scope(isolate);
      37             :   DCHECK_EQ(1, args.length());
      38       11304 :   CONVERT_ARG_HANDLE_CHECKED(Symbol, symbol, 0);
      39        5652 :   IncrementalStringBuilder builder(isolate);
      40             :   builder.AppendCString("Symbol(");
      41       11304 :   if (symbol->name()->IsString()) {
      42        5562 :     builder.AppendString(handle(String::cast(symbol->name()), isolate));
      43             :   }
      44             :   builder.AppendCharacter(')');
      45       16956 :   RETURN_RESULT_OR_FAILURE(isolate, builder.Finish());
      46             : }
      47             : 
      48             : 
      49         720 : RUNTIME_FUNCTION(Runtime_SymbolIsPrivate) {
      50             :   SealHandleScope shs(isolate);
      51             :   DCHECK_EQ(1, args.length());
      52        2160 :   CONVERT_ARG_CHECKED(Symbol, symbol, 0);
      53         720 :   return isolate->heap()->ToBoolean(symbol->is_private());
      54             : }
      55             : }  // namespace internal
      56      183867 : }  // namespace v8

Generated by: LCOV version 1.10