LCOV - code coverage report
Current view: top level - src/runtime - runtime-symbol.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 20 27 74.1 %
Date: 2017-04-26 Functions: 4 10 40.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/runtime/runtime-utils.h"
       6             : 
       7             : #include "src/arguments.h"
       8             : #include "src/isolate-inl.h"
       9             : #include "src/objects-inl.h"
      10             : #include "src/string-builder.h"
      11             : 
      12             : namespace v8 {
      13             : namespace internal {
      14             : 
      15           0 : RUNTIME_FUNCTION(Runtime_CreateSymbol) {
      16           0 :   HandleScope scope(isolate);
      17             :   DCHECK_EQ(1, args.length());
      18           0 :   CONVERT_ARG_HANDLE_CHECKED(Object, name, 0);
      19           0 :   CHECK(name->IsString() || name->IsUndefined(isolate));
      20           0 :   Handle<Symbol> symbol = isolate->factory()->NewSymbol();
      21           0 :   if (name->IsString()) symbol->set_name(*name);
      22           0 :   return *symbol;
      23             : }
      24             : 
      25             : 
      26        2246 : RUNTIME_FUNCTION(Runtime_CreatePrivateSymbol) {
      27        1123 :   HandleScope scope(isolate);
      28             :   DCHECK_EQ(1, args.length());
      29        1123 :   CONVERT_ARG_HANDLE_CHECKED(Object, name, 0);
      30        1123 :   CHECK(name->IsString() || name->IsUndefined(isolate));
      31        1123 :   Handle<Symbol> symbol = isolate->factory()->NewPrivateSymbol();
      32        2246 :   if (name->IsString()) symbol->set_name(*name);
      33        1123 :   return *symbol;
      34             : }
      35             : 
      36             : 
      37         316 : RUNTIME_FUNCTION(Runtime_SymbolDescription) {
      38             :   SealHandleScope shs(isolate);
      39             :   DCHECK_EQ(1, args.length());
      40         316 :   CONVERT_ARG_CHECKED(Symbol, symbol, 0);
      41         158 :   return symbol->name();
      42             : }
      43             : 
      44             : 
      45      131820 : RUNTIME_FUNCTION(Runtime_SymbolDescriptiveString) {
      46       65910 :   HandleScope scope(isolate);
      47             :   DCHECK_EQ(1, args.length());
      48      131820 :   CONVERT_ARG_HANDLE_CHECKED(Symbol, symbol, 0);
      49       65910 :   IncrementalStringBuilder builder(isolate);
      50             :   builder.AppendCString("Symbol(");
      51      131820 :   if (symbol->name()->IsString()) {
      52      123980 :     builder.AppendString(handle(String::cast(symbol->name()), isolate));
      53             :   }
      54             :   builder.AppendCharacter(')');
      55      197730 :   RETURN_RESULT_OR_FAILURE(isolate, builder.Finish());
      56             : }
      57             : 
      58             : 
      59        2240 : RUNTIME_FUNCTION(Runtime_SymbolIsPrivate) {
      60             :   SealHandleScope shs(isolate);
      61             :   DCHECK_EQ(1, args.length());
      62        2240 :   CONVERT_ARG_CHECKED(Symbol, symbol, 0);
      63        1120 :   return isolate->heap()->ToBoolean(symbol->is_private());
      64             : }
      65             : }  // namespace internal
      66             : }  // namespace v8

Generated by: LCOV version 1.10