5 #ifndef HYDROGEN_TYPES_H_
6 #define HYDROGEN_TYPES_H_
16 template <
typename T>
class Handle;
20 #define HTYPE_LIST(V) \
23 V(TaggedPrimitive, 0x5) \
24 V(TaggedNumber, 0xd) \
27 V(HeapPrimitive, 0x25) \
39 #define DECLARE_CONSTRUCTOR(Name, mask) \
40 static HType Name() WARN_UNUSED_RESULT { return HType(k##Name); }
42 #undef DECLARE_CONSTRUCTOR
46 return HType(
static_cast<Kind>(kind_ & other.kind_));
50 return kind_ == other.kind_;
54 return Combine(other).Equals(other);
57 #define DECLARE_IS_TYPE(Name, mask) \
58 bool Is##Name() const WARN_UNUSED_RESULT { \
59 return IsSubtypeOf(HType::Name()); \
62 #undef DECLARE_IS_TYPE
72 #define DECLARE_TYPE(Name, mask) k##Name = mask,
static HType FromValue(Handle< Object > value) WARN_UNUSED_RESULT
bool IsSubtypeOf(HType other) const WARN_UNUSED_RESULT
static HType FromType(typename T::TypeHandle type) WARN_UNUSED_RESULT
STATIC_ASSERT(LAST_KIND<(1<<(CHAR_BIT *sizeof(int16_t))))
bool Equals(HType other) const WARN_UNUSED_RESULT
HType Combine(HType other) const WARN_UNUSED_RESULT
#define WARN_UNUSED_RESULT
#define DECLARE_TYPE(Name, mask)
#define DECLARE_CONSTRUCTOR(Name, mask)
#define DECLARE_IS_TYPE(Name, mask)
ContainedInLattice Combine(ContainedInLattice a, ContainedInLattice b)
kSerializedDataOffset Object
OStream & operator<<(OStream &os, const BasicBlockProfiler &p)
Debugger support for the V8 JavaScript engine.