5#ifndef RUNTIME_VM_STATIC_TYPE_EXACTNESS_STATE_H_
6#define RUNTIME_VM_STATIC_TYPE_EXACTNESS_STATE_H_
50 intptr_t type_arguments_offset_in_bytes) {
51 ASSERT((type_arguments_offset_in_bytes > 0) &&
57 intptr_t type_arguments_offset_in_bytes) {
103 bool print_trace =
false);
136 static constexpr int8_t kNotTracking = -4;
137 static constexpr int8_t kNotExact = -3;
138 static constexpr int8_t kHasExactSuperType = -2;
139 static constexpr int8_t kHasExactSuperClass = -1;
145 DISALLOW_ALLOCATION();
static StaticTypeExactnessState TriviallyExact(intptr_t type_arguments_offset_in_bytes)
static bool CanRepresentAsTriviallyExact(intptr_t type_arguments_offset_in_bytes)
bool IsTriviallyExact() const
bool IsHasExactSuperClass() const
static constexpr int8_t kUninitialized
int8_t GetTypeArgumentsOffsetInWords() const
bool IsHasExactSuperType() const
static StaticTypeExactnessState HasExactSuperType()
static StaticTypeExactnessState NotExact()
StaticTypeExactnessState CollapseSuperTypeExactness() const
bool NeedsFieldGuard() const
static StaticTypeExactnessState NotTracking()
static StaticTypeExactnessState Uninitialized()
const char * ToCString() const
bool IsUninitialized() const
bool IsExactOrUninitialized() const
static StaticTypeExactnessState Decode(int8_t value)
static StaticTypeExactnessState Compute(const Type &static_type, const Instance &value, bool print_trace=false)
static StaticTypeExactnessState HasExactSuperClass()
static bool IsInt(intptr_t N, T value)