5#ifndef V8_OBJECTS_PROPERTY_DETAILS_H_
6#define V8_OBJECTS_PROPERTY_DETAILS_H_
128 return kind_ == other.kind_;
132 return IsDouble() == other.IsDouble();
158 if (
Equals(other))
return true;
159 if (
IsWasmValue() || other.IsWasmValue())
return false;
165 if (
IsNone())
return !other.IsDouble();
166 if (!other.IsTagged())
return false;
182 return kind_ > other.kind_;
186 return other.is_more_general_than(*
this) || other.Equals(*
this);
190 if (other.fits_into(*
this))
return *
this;
191 if (other.is_more_general_than(*
this))
return other;
230 return kind_ == other.kind_;
312 return value_ == other.value_;
316 return value_ != other.value_;
444 void Print(
bool dictionary_mode);
457 void PrintAsSlowTo(std::ostream& out,
bool print_dict_index);
531 std::ostream& os,
const Representation& representation);
static constexpr int kLastUsedBit
static constexpr T decode(U value)
static constexpr bool is_valid(T value)
static constexpr U encode(T value)
static V8_NODISCARD constexpr U update(U previous, T value)
static constexpr int kShift
constexpr PropertyDetails(PropertyKind kind, PropertyAttributes attributes, PropertyLocation location, PropertyConstness constness, Representation representation, int field_index=0)
constexpr PropertyDetails(PropertyKind kind, PropertyAttributes attributes, PropertyConstness constness, int dictionary_index=0)
constexpr PropertyDetails(PropertyKind kind, PropertyAttributes attributes, PropertyCellType cell_type, int dictionary_index=0)
PropertyAttributes attributes() const
PropertyDetails CopyWithConstness(PropertyConstness constness) const
PropertyLocation location() const
PropertyDetails(uint32_t value)
bool operator==(PropertyDetails const &other) const
int field_width_in_words() const
Representation representation() const
PropertyCellType cell_type() const
PropertyDetails(int value, int pointer)
static constexpr PropertyConstness kConstIfDictConstnessTracking
int dictionary_index() const
PropertyDetails(int value, PropertyConstness constness)
static const int kInitialIndex
static const int kAttributesDontEnumMask
static const int kAttributesReadOnlyMask
void PrintAsFastTo(std::ostream &out, PrintMode mode=kPrintFull)
PropertyKind kind() const
PropertyDetails set_index(int index) const
bool HasKindAndAttributes(PropertyKind kind, PropertyAttributes attributes)
static bool IsValidIndex(int index)
static constexpr PropertyDetails Empty(PropertyCellType cell_type=PropertyCellType::kNoCell)
PropertyConstness constness() const
static PropertyDetails FromByte(uint8_t encoded_details)
bool IsConfigurable() const
PropertyDetails CopyAddAttributes(PropertyAttributes new_attributes) const
static Representation DecodeRepresentation(uint32_t bits)
PropertyDetails set_cell_type(PropertyCellType type) const
static const int kAttributesDontDeleteMask
PropertyDetails(int value, PropertyAttributes attributes)
static constexpr uint8_t EncodeRepresentation(Representation representation)
bool IsEnumerable() const
PropertyDetails(int value, Representation representation)
Tagged< Smi > AsSmi() const
void PrintAsSlowTo(std::ostream &out, bool print_dict_index)
PropertyDetails set_pointer(int i) const
bool operator!=(PropertyDetails const &other) const
PropertyDetails CopyWithRepresentation(Representation representation) const
constexpr bool IsHeapObject() const
bool is_more_general_than(const Representation &other) const
constexpr Representation()
bool MightCauseMapDeprecation() const
const char * Mnemonic() const
bool fits_into(const Representation &other) const
constexpr bool IsNone() const
constexpr Representation(Kind k)
bool IsCompatibleForStore(const Representation &other) const
constexpr bool IsSmiOrTagged() const
Representation MostGenericInPlaceChange() const
constexpr bool IsWasmValue() const
constexpr Kind kind() const
static constexpr Representation Double()
bool IsCompatibleForLoad(const Representation &other) const
Representation generalize(Representation other)
constexpr bool IsTagged() const
bool operator==(const Representation &other) const
bool Equals(const Representation &other) const
constexpr bool IsSmi() const
static constexpr Representation WasmValue()
static constexpr Representation FromKind(Kind kind)
static constexpr Representation HeapObject()
static constexpr Representation None()
static constexpr Representation Smi()
static constexpr Representation Tagged()
constexpr bool IsDouble() const
bool CanBeInPlaceChangedTo(const Representation &other) const
#define V8_DICT_PROPERTY_CONST_TRACKING_BOOL
constexpr int kTaggedSize
constexpr int kBitsPerByte
static const int kFirstInobjectPropertyOffsetBitCount
static const int kPropertyAttributesCombinationsCount
PropertyConstness GeneralizeConstness(PropertyConstness a, PropertyConstness b)
std::ostream & operator<<(std::ostream &os, AtomicMemoryOrder order)
void Print(Tagged< Object > obj)
static const int kInvalidEnumCacheSentinel
static const int kMaxNumberOfDescriptors
V8_INLINE PropertyAttributes PropertyAttributesFromInt(int value)
static const int kDescriptorIndexBitCount
bool IsGeneralizableTo(PropertyLocation a, PropertyLocation b)
constexpr int kDoubleSize
static const int kPropertyAttributesBitsCount
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE