// Copyright 2014 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_TYPE_FEEDBACK_VECTOR_H_ #define V8_TYPE_FEEDBACK_VECTOR_H_ #include "src/checks.h" #include "src/elements-kind.h" #include "src/heap/heap.h" #include "src/isolate.h" #include "src/objects.h" namespace v8 { namespace internal { class TypeFeedbackVector : public FixedArray { public: // Casting. static TypeFeedbackVector* cast(Object* obj) { DCHECK(obj->IsTypeFeedbackVector()); return reinterpret_cast(obj); } static Handle Copy(Isolate* isolate, Handle vector); // The object that indicates an uninitialized cache. static inline Handle UninitializedSentinel(Isolate* isolate); // The object that indicates a megamorphic state. static inline Handle MegamorphicSentinel(Isolate* isolate); // The object that indicates a premonomorphic state. static inline Handle PremonomorphicSentinel(Isolate* isolate); // The object that indicates a generic state. static inline Handle GenericSentinel(Isolate* isolate); // The object that indicates a monomorphic state of Array with // ElementsKind static inline Handle MonomorphicArraySentinel( Isolate* isolate, ElementsKind elements_kind); // A raw version of the uninitialized sentinel that's safe to read during // garbage collection (e.g., for patching the cache). static inline Object* RawUninitializedSentinel(Heap* heap); private: DISALLOW_IMPLICIT_CONSTRUCTORS(TypeFeedbackVector); }; } } // namespace v8::internal #endif // V8_TRANSITIONS_H_