5#ifndef V8_COMPILER_BYTECODE_ANALYSIS_H_
6#define V8_COMPILER_BYTECODE_ANALYSIS_H_
32 bool ContainsParameter(
int index)
const;
33 bool ContainsLocal(
int index)
const;
36 int local_count()
const {
return bit_vector_->length() - parameter_count_; }
56 bool is_leaf()
const {
return target_offset_ == final_target_offset_; }
66 ResumeJumpTarget(
int suspend_id,
int target_offset,
int final_target_offset);
72 int register_count,
Zone* zone)
73 : parent_offset_(parent_offset),
74 loop_start_(loop_start),
77 resume_jump_targets_(zone) {}
92 return resume_jump_targets_;
95 resume_jump_targets_.push_back(target);
106 bool resumable_ =
false;
107 bool innermost_ =
true;
124 bool IsLoopHeader(
int offset)
const;
127 int GetLoopOffsetFor(
int offset)
const;
129 int GetLoopEndOffsetForInnermost(
int header_offset)
const;
131 const LoopInfo& GetLoopInfoFor(
int header_offset)
const;
134 const LoopInfo* TryGetLoopInfoFor(
int header_offset)
const;
140 return resume_jump_targets_;
152 return osr_entry_point_;
166 DCHECK(analyze_liveness_);
167 return *liveness_map_;
170 DCHECK(analyze_liveness_);
171 return *liveness_map_;
181 int bytecode_count_ = -1;
BytecodeOffset const osr_bailout_id_
int bytecode_count() const
int osr_entry_point() const
const BytecodeLivenessMap & liveness_map() const
const ZoneVector< ResumeJumpTarget > & resume_jump_targets() const
ZoneMap< int, LoopInfo > header_to_info_
std::optional< BytecodeLivenessMap > liveness_map_
bool const analyze_liveness_
const ZoneMap< int, LoopInfo > & GetLoopInfos() const
bool liveness_analyzed() const
BytecodeAnalysis & operator=(const BytecodeAnalysis &)=delete
BytecodeLivenessMap & liveness_map()
BytecodeOffset osr_bailout_id() const
BytecodeAnalysis(const BytecodeAnalysis &)=delete
ZoneMap< int, int > end_to_header_
ZoneVector< ResumeJumpTarget > resume_jump_targets_
int const parameter_count_
int parameter_count() const
BitVector *const bit_vector_
int target_offset() const
#define CHECK_LE(lhs, rhs)
#define DCHECK(condition)
#define V8_EXPORT_PRIVATE
int parent_offset() const
void mark_not_innermost()
const BytecodeLoopAssignments & assignments() const
BytecodeLoopAssignments assignments_
void AddResumeTarget(const ResumeJumpTarget &target)
LoopInfo(int parent_offset, int loop_start, int loop_end, int parameter_count, int register_count, Zone *zone)
ZoneVector< ResumeJumpTarget > resume_jump_targets_
const ZoneVector< ResumeJumpTarget > & resume_jump_targets() const
bool Contains(int offset) const
BytecodeLoopAssignments & assignments()