LCOV - code coverage report
Current view: top level - src - field-type.h (source / functions) Hit Total Coverage
Test: app.info Lines: 7 7 100.0 %
Date: 2017-04-26 Functions: 1 1 100.0 %

          Line data    Source code
       1             : // Copyright 2016 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_FIELD_TYPE_H_
       6             : #define V8_FIELD_TYPE_H_
       7             : 
       8             : #include "src/ast/ast-types.h"
       9             : #include "src/objects.h"
      10             : #include "src/ostreams.h"
      11             : 
      12             : namespace v8 {
      13             : namespace internal {
      14             : 
      15             : template <typename T>
      16             : class Handle;
      17             : 
      18             : class FieldType : public Object {
      19             :  public:
      20             :   static FieldType* None();
      21             :   static FieldType* Any();
      22             :   static Handle<FieldType> None(Isolate* isolate);
      23             :   static Handle<FieldType> Any(Isolate* isolate);
      24             :   static FieldType* Class(i::Map* map);
      25             :   static Handle<FieldType> Class(i::Handle<i::Map> map, Isolate* isolate);
      26             :   static FieldType* cast(Object* object);
      27             : 
      28    64803159 :   bool NowContains(Object* value) {
      29    64803159 :     if (this == Any()) return true;
      30     9264641 :     if (this == None()) return false;
      31     9264610 :     if (!value->IsHeapObject()) return false;
      32     9264610 :     return HeapObject::cast(value)->map() == Map::cast(this);
      33             :   }
      34             : 
      35    40561440 :   bool NowContains(Handle<Object> value) { return NowContains(*value); }
      36             : 
      37             :   bool IsClass();
      38             :   Handle<i::Map> AsClass();
      39     4706612 :   bool IsNone() { return this == None(); }
      40             :   bool IsAny() { return this == Any(); }
      41             :   bool NowStable();
      42             :   bool NowIs(FieldType* other);
      43             :   bool NowIs(Handle<FieldType> other);
      44             :   AstType* Convert(Zone* zone);
      45             : 
      46             :   void PrintTo(std::ostream& os);
      47             : };
      48             : 
      49             : }  // namespace internal
      50             : }  // namespace v8
      51             : 
      52             : #endif  // V8_FIELD_TYPE_H_

Generated by: LCOV version 1.10