| // 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<TypeFeedbackVector*>(obj); |
| } |
| |
| static Handle<TypeFeedbackVector> Copy(Isolate* isolate, |
| Handle<TypeFeedbackVector> vector); |
| |
| // The object that indicates an uninitialized cache. |
| static inline Handle<Object> UninitializedSentinel(Isolate* isolate); |
| |
| // The object that indicates a megamorphic state. |
| static inline Handle<Object> MegamorphicSentinel(Isolate* isolate); |
| |
| // The object that indicates a premonomorphic state. |
| static inline Handle<Object> PremonomorphicSentinel(Isolate* isolate); |
| |
| // The object that indicates a generic state. |
| static inline Handle<Object> GenericSentinel(Isolate* isolate); |
| |
| // The object that indicates a monomorphic state of Array with |
| // ElementsKind |
| static inline Handle<Object> 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_ |