5#ifndef V8_OBJECTS_DEOPTIMIZATION_DATA_H_
6#define V8_OBJECTS_DEOPTIMIZATION_DATA_H_
94 if (
kind_ != other.kind_) {
99 return object_.equals(other.object_);
106 return int64_ == other.int64_;
108 return uint64_ == other.uint64_;
123#if V8_ENABLE_WEBASSEMBLY
134 int64_t GetInt64()
const {
190 static constexpr int kUncompressedSizeOffset = 0;
191 static constexpr int kUncompressedSizeSize =
kInt32Size;
192 static constexpr int kCompressedDataOffset =
193 kUncompressedSizeOffset + kUncompressedSizeSize;
194 static constexpr int kDeoptimizationFrameTranslationElementSize =
kInt32Size;
197#ifdef ENABLE_DISASSEMBLER
198 void PrintFrameTranslation(
199 std::ostream& os,
int index,
287 static const int kNodeIdOffset = 3;
294#define DECL_ELEMENT_ACCESSORS(name, type) \
295 inline type name() const; \
296 inline void Set##name(type value);
315#undef DECL_ELEMENT_ACCESSORS
320#define DECL_ENTRY_ACCESSORS(name, type) \
321 inline type name(int i) const; \
322 inline void Set##name(int i, type value);
331#undef DECL_ENTRY_ACCESSORS
352 int deopt_entry_count);
354 int deopt_entry_count);
364#ifdef ENABLE_DISASSEMBLER
365 void PrintDeoptimizationData(std::ostream& os)
const;
DeoptimizationFrameTranslation::FrameCount EnterBeginOpcode()
TranslationOpcode NextOpcodeAtPreviousIndex()
int remaining_ops_to_use_from_previous_translation_
const base::Vector< const uint8_t > buffer_
std::vector< int32_t > uncompressed_contents_
int ops_since_previous_index_was_updated_
uint32_t NextOperandUnsigned()
bool HasNextOpcode() const
TranslationOpcode SeekNextJSFrame()
void SkipOpcodeAndItsOperandsAtPreviousIndex()
TranslationOpcode NextOpcode()
TranslationOpcode SeekNextFrame()
uint32_t NextUnsignedOperandAtPreviousIndex()
DeoptTranslationIterator(base::Vector< const uint8_t > buffer, int index)
static int LengthFor(int entry_count)
Tagged< ProtectedDeoptimizationLiteralArray > Tagged< TrustedPodArray< InliningPosition > > Tagged< SharedFunctionInfo > GetSharedFunctionInfo() const
static const int kInlinedFunctionCountIndex
static const int kProtectedLiteralArrayIndex
BytecodeOffset GetBytecodeOffsetOrBuiltinContinuationId(int i) const
static Handle< DeoptimizationData > New(Isolate *isolate, int deopt_entry_count)
static const int kBytecodeOffsetRawOffset
static const int kDeoptEntrySize
static const int kLiteralArrayIndex
static const int kOsrBytecodeOffsetIndex
static const int kNotInlinedIndex
static const int kInliningPositionsIndex
Tagged< SharedFunctionInfo > GetInlinedFunction(int index)
DECL_ELEMENT_ACCESSORS(FrameTranslation, Tagged< DeoptimizationFrameTranslation >) DECL_ELEMENT_ACCESSORS(ProtectedLiteralArray
UnionOf< Smi, SharedFunctionInfoWrapper > SharedFunctionInfoWrapperOrSmi
static const int kOptimizationIdIndex
static const int kEagerDeoptCountIndex
static const int kLazyDeoptCountIndex
static const int kPcOffset
static int IndexForEntry(int i)
static const int kOsrPcOffsetIndex
void SetBytecodeOffset(int i, BytecodeOffset value)
static const int kWrappedSharedFunctionInfoIndex
static const int kTranslationIndexOffset
static V8_EXPORT_PRIVATE Handle< DeoptimizationData > Empty(Isolate *isolate)
static const int kDeoptExitStartIndex
static const int kFrameTranslationIndex
static const int kFirstDeoptEntryIndex
Iterator(Tagged< DeoptimizationFrameTranslation > buffer, int index)
DisallowGarbageCollection no_gc_
void set(int index, Tagged< Object > value)
Tagged< MaybeObject > get_raw(int index) const
Tagged< Object > get(int index) const
DeoptimizationLiteralKind kind_
DeoptimizationLiteral(int32_t int32)
DirectHandle< Object > Reify(Isolate *isolate) const
DeoptimizationLiteral(IndirectHandle< Object > object)
DeoptimizationLiteral(Tagged< Smi > smi)
DeoptimizationLiteralKind kind() const
DeoptimizationLiteral(double number)
DeoptimizationLiteral(uint64_t unsigned_bigint64)
bool operator==(const DeoptimizationLiteral &other) const
DeoptimizationLiteral(int64_t signed_bigint64)
DeoptimizationLiteral(Float64 number)
IndirectHandle< Object > object() const
static DeoptimizationLiteral HoleNaN()
IndirectHandle< Object > object_
DeoptimizationLiteral(Float32 number)
uint32_t get_bits() const
uint64_t get_bits() const
static constexpr Tagged< Smi > FromInt(int value)
#define DECL_ENTRY_ACCESSORS(name, type)
#define DECL_ELEMENT_ACCESSORS(name, type)
FunctionLiteral * literal
V8_INLINE Dest bit_cast(Source const &source)
FloatWithBits< 32 > Float32
typename detail::FlattenUnionHelper< Union<>, Ts... >::type UnionOf
DeoptimizationLiteralKind
#define CHECK_NE(lhs, rhs)
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE