V8 Project
|
#include <register-allocator.h>
Static Public Attributes | |
static const int | kInvalidAssignment = 0x7fffffff |
Private Member Functions | |
void | ConvertOperands (Zone *zone) |
UseInterval * | FirstSearchIntervalForPosition (LifetimePosition position) const |
void | AdvanceLastProcessedMarker (UseInterval *to_start_of, LifetimePosition but_not_past) const |
Friends | |
class | RegisterAllocator |
Definition at line 181 of file register-allocator.h.
Definition at line 92 of file register-allocator.cc.
void v8::internal::compiler::LiveRange::AddUseInterval | ( | LifetimePosition | start, |
LifetimePosition | end, | ||
Zone * | zone | ||
) |
Definition at line 383 of file register-allocator.cc.
References DCHECK, v8::internal::compiler::UseInterval::end(), v8::internal::compiler::UseInterval::end_, first_interval_, id_, last_interval_, v8::internal::compiler::Max(), v8::internal::compiler::Min(), NULL, v8::internal::compiler::UseInterval::set_next(), v8::internal::compiler::UseInterval::set_start(), v8::internal::compiler::UseInterval::start(), v8::internal::compiler::UseInterval::start_, and v8::internal::compiler::LifetimePosition::Value().
void v8::internal::compiler::LiveRange::AddUsePosition | ( | LifetimePosition | pos, |
InstructionOperand * | operand, | ||
InstructionOperand * | hint, | ||
Zone * | zone | ||
) |
Definition at line 410 of file register-allocator.cc.
References current_hint_operand_, first_pos_, v8::internal::compiler::UsePosition::HasHint(), id_, v8::internal::compiler::UsePosition::next(), v8::internal::compiler::UsePosition::next_, NULL, v8::internal::compiler::UsePosition::pos(), v8::internal::compiler::UsePosition::set_next(), and v8::internal::compiler::LifetimePosition::Value().
|
private |
Definition at line 232 of file register-allocator.cc.
References current_interval_, v8::internal::compiler::LifetimePosition::Invalid(), NULL, v8::internal::compiler::UseInterval::start(), and v8::internal::compiler::LifetimePosition::Value().
Referenced by Covers(), and FirstIntersection().
|
inline |
Definition at line 197 of file register-allocator.h.
References assigned_register_.
Referenced by CreateAssignedOperand().
bool v8::internal::compiler::LiveRange::CanBeSpilled | ( | LifetimePosition | pos | ) |
Definition at line 183 of file register-allocator.cc.
References v8::internal::compiler::LifetimePosition::InstructionEnd(), v8::internal::compiler::LifetimePosition::NextInstruction(), NextRegisterPosition(), NULL, v8::internal::compiler::UsePosition::pos(), and v8::internal::compiler::LifetimePosition::Value().
bool v8::internal::compiler::LiveRange::CanCover | ( | LifetimePosition | position | ) | const |
Definition at line 456 of file register-allocator.cc.
References End(), IsEmpty(), Start(), and v8::internal::compiler::LifetimePosition::Value().
Referenced by Covers().
|
private |
Definition at line 439 of file register-allocator.cc.
References v8::internal::compiler::InstructionOperand::ConvertTo(), CreateAssignedOperand(), DCHECK, End(), first_pos(), v8::internal::compiler::UsePosition::HasOperand(), v8::internal::compiler::InstructionOperand::index(), v8::internal::compiler::InstructionOperand::kind(), v8::internal::compiler::UsePosition::next(), NULL, v8::internal::compiler::UsePosition::operand(), v8::internal::compiler::UsePosition::pos(), v8::internal::compiler::UsePosition::RequiresRegister(), Start(), and v8::internal::compiler::LifetimePosition::Value().
Referenced by MakeSpilled(), and set_assigned_register().
bool v8::internal::compiler::LiveRange::Covers | ( | LifetimePosition | position | ) |
Definition at line 463 of file register-allocator.cc.
References AdvanceLastProcessedMarker(), CanCover(), DCHECK, FirstSearchIntervalForPosition(), NULL, and v8::internal::compiler::LifetimePosition::Value().
InstructionOperand * v8::internal::compiler::LiveRange::CreateAssignedOperand | ( | Zone * | zone | ) |
Definition at line 193 of file register-allocator.cc.
References assigned_register(), DCHECK, v8::internal::compiler::DOUBLE_REGISTERS, v8::internal::compiler::GENERAL_REGISTERS, GetSpillOperand(), HasRegisterAssigned(), id_, IsSpilled(), Kind(), v8::internal::compiler::UnallocatedOperand::NONE, NULL, v8::internal::compiler::UnallocatedOperand::set_virtual_register(), TopLevel(), and UNREACHABLE.
Referenced by ConvertOperands().
|
inline |
Definition at line 242 of file register-allocator.h.
References current_hint_operand_, DCHECK, and FirstHint().
|
inline |
Definition at line 258 of file register-allocator.h.
References DCHECK, v8::internal::compiler::UseInterval::end(), IsEmpty(), and last_interval_.
Referenced by CanCover(), ConvertOperands(), and FirstIntersection().
void v8::internal::compiler::LiveRange::EnsureInterval | ( | LifetimePosition | start, |
LifetimePosition | end, | ||
Zone * | zone | ||
) |
Definition at line 361 of file register-allocator.cc.
References v8::internal::compiler::UseInterval::end(), first_interval_, id_, last_interval_, v8::internal::compiler::UseInterval::next(), v8::internal::compiler::UseInterval::next_, NULL, v8::internal::compiler::UseInterval::start(), and v8::internal::compiler::LifetimePosition::Value().
|
inline |
Definition at line 187 of file register-allocator.h.
References first_interval_.
Referenced by FirstIntersection(), IsEmpty(), and Start().
|
inline |
Definition at line 188 of file register-allocator.h.
References first_pos_.
Referenced by ConvertOperands(), NextUsePosition(), PreviousUsePositionRegisterIsBeneficial(), and ShouldBeAllocatedBefore().
|
inline |
Definition at line 246 of file register-allocator.h.
References first_pos_, v8::internal::compiler::UsePosition::HasHint(), v8::internal::compiler::UsePosition::hint(), v8::internal::compiler::UsePosition::next(), and NULL.
Referenced by current_hint_operand().
LifetimePosition v8::internal::compiler::LiveRange::FirstIntersection | ( | LiveRange * | other | ) |
Definition at line 478 of file register-allocator.cc.
References AdvanceLastProcessedMarker(), End(), first_interval(), FirstSearchIntervalForPosition(), v8::internal::compiler::UseInterval::Intersect(), v8::internal::compiler::LifetimePosition::Invalid(), v8::internal::compiler::LifetimePosition::IsValid(), v8::internal::compiler::UseInterval::next(), NULL, v8::internal::compiler::UseInterval::start(), and v8::internal::compiler::LifetimePosition::Value().
|
private |
Definition at line 221 of file register-allocator.cc.
References current_interval_, first_interval_, NULL, v8::internal::compiler::UseInterval::start(), and v8::internal::compiler::LifetimePosition::Value().
Referenced by Covers(), FirstIntersection(), and SplitAt().
|
inline |
Definition at line 264 of file register-allocator.h.
References spill_operand_.
Referenced by CreateAssignedOperand().
bool v8::internal::compiler::LiveRange::HasAllocatedSpillOperand | ( | ) | const |
Definition at line 127 of file register-allocator.cc.
References DCHECK, NULL, and spill_operand_.
Referenced by MakeSpilled().
|
inline |
Definition at line 237 of file register-allocator.h.
References assigned_register_, and kInvalidAssignment.
Referenced by CreateAssignedOperand(), and set_assigned_register().
|
inline |
|
inline |
Definition at line 203 of file register-allocator.h.
References is_non_loop_phi_.
Referenced by set_is_non_loop_phi().
|
inline |
Definition at line 201 of file register-allocator.h.
References is_phi_.
Referenced by set_is_phi().
|
inline |
Definition at line 192 of file register-allocator.h.
References NULL, and parent().
|
inline |
Definition at line 195 of file register-allocator.h.
References first_interval(), and NULL.
Referenced by CanCover(), End(), SplitAt(), and Start().
|
inline |
|
inline |
Definition at line 240 of file register-allocator.h.
References spilled_.
Referenced by CreateAssignedOperand(), MakeSpilled(), and set_assigned_register().
|
inline |
Definition at line 236 of file register-allocator.h.
References kind_.
Referenced by CreateAssignedOperand().
void v8::internal::compiler::LiveRange::MakeSpilled | ( | Zone * | zone | ) |
Definition at line 118 of file register-allocator.cc.
References assigned_register_, ConvertOperands(), DCHECK, HasAllocatedSpillOperand(), IsSpilled(), kInvalidAssignment, spilled_, and TopLevel().
|
inline |
Definition at line 191 of file register-allocator.h.
References next_.
Referenced by SplitAt().
UsePosition * v8::internal::compiler::LiveRange::NextRegisterPosition | ( | LifetimePosition | start | ) |
Definition at line 174 of file register-allocator.cc.
References v8::internal::compiler::UsePosition::next(), NextUsePosition(), NULL, and v8::internal::compiler::UsePosition::RequiresRegister().
Referenced by CanBeSpilled().
UsePosition * v8::internal::compiler::LiveRange::NextUsePosition | ( | LifetimePosition | start | ) |
Definition at line 141 of file register-allocator.cc.
References first_pos(), last_processed_use_, v8::internal::compiler::UsePosition::next(), NULL, v8::internal::compiler::UsePosition::pos(), and v8::internal::compiler::LifetimePosition::Value().
Referenced by NextRegisterPosition(), and NextUsePositionRegisterIsBeneficial().
UsePosition * v8::internal::compiler::LiveRange::NextUsePositionRegisterIsBeneficial | ( | LifetimePosition | start | ) |
Definition at line 152 of file register-allocator.cc.
References v8::internal::compiler::UsePosition::next(), NextUsePosition(), NULL, and v8::internal::compiler::UsePosition::RegisterIsBeneficial().
|
inline |
Definition at line 189 of file register-allocator.h.
References parent_.
Referenced by IsChild().
UsePosition * v8::internal::compiler::LiveRange::PreviousUsePositionRegisterIsBeneficial | ( | LifetimePosition | start | ) |
Definition at line 162 of file register-allocator.cc.
References first_pos(), v8::internal::compiler::UsePosition::next(), NULL, v8::internal::compiler::UsePosition::pos(), v8::internal::compiler::UsePosition::RegisterIsBeneficial(), and v8::internal::compiler::LifetimePosition::Value().
Definition at line 111 of file register-allocator.cc.
References assigned_register_, ConvertOperands(), DCHECK, HasRegisterAssigned(), and IsSpilled().
|
inline |
Definition at line 204 of file register-allocator.h.
References is_non_loop_phi(), and is_non_loop_phi_.
|
inline |
Definition at line 202 of file register-allocator.h.
References is_phi(), and is_phi_.
void v8::internal::compiler::LiveRange::SetSpillOperand | ( | InstructionOperand * | operand | ) |
Definition at line 133 of file register-allocator.cc.
References v8::internal::compiler::InstructionOperand::ConvertTo(), DCHECK, v8::internal::compiler::InstructionOperand::index(), v8::internal::compiler::InstructionOperand::kind(), NULL, and spill_operand_.
|
inline |
Definition at line 267 of file register-allocator.h.
References v8::internal::compiler::Min(), and spill_start_index_.
void v8::internal::compiler::LiveRange::ShortenTo | ( | LifetimePosition | start | ) |
Definition at line 351 of file register-allocator.cc.
References DCHECK, v8::internal::compiler::UseInterval::end(), first_interval_, id_, NULL, v8::internal::compiler::UseInterval::set_start(), v8::internal::compiler::UseInterval::start(), and v8::internal::compiler::LifetimePosition::Value().
Definition at line 337 of file register-allocator.cc.
References first_pos(), NULL, v8::internal::compiler::UsePosition::pos(), Start(), and v8::internal::compiler::LifetimePosition::Value().
|
inline |
void v8::internal::compiler::LiveRange::SplitAt | ( | LifetimePosition | position, |
LiveRange * | result, | ||
Zone * | zone | ||
) |
Definition at line 245 of file register-allocator.cc.
References v8::internal::compiler::UseInterval::Contains(), current_interval_, DCHECK, first_interval_, first_pos_, FirstSearchIntervalForPosition(), IsEmpty(), kind_, last_interval_, last_processed_use_, v8::internal::compiler::UseInterval::next(), v8::internal::compiler::UsePosition::next(), next(), v8::internal::compiler::UsePosition::next_, next_, NULL, parent_, v8::internal::compiler::UsePosition::pos(), v8::internal::compiler::UseInterval::SplitAt(), v8::internal::compiler::UseInterval::start(), Start(), and v8::internal::compiler::LifetimePosition::Value().
|
inline |
Definition at line 253 of file register-allocator.h.
References DCHECK, first_interval(), IsEmpty(), and v8::internal::compiler::UseInterval::start().
Referenced by CanCover(), ConvertOperands(), ShouldBeAllocatedBefore(), and SplitAt().
|
inline |
Definition at line 190 of file register-allocator.h.
Referenced by CreateAssignedOperand(), and MakeSpilled().
|
friend |
Definition at line 316 of file register-allocator.h.
|
private |
Definition at line 302 of file register-allocator.h.
Referenced by assigned_register(), HasRegisterAssigned(), MakeSpilled(), and set_assigned_register().
|
private |
Definition at line 312 of file register-allocator.h.
Referenced by AddUsePosition(), and current_hint_operand().
|
mutableprivate |
Definition at line 309 of file register-allocator.h.
Referenced by AdvanceLastProcessedMarker(), FirstSearchIntervalForPosition(), and SplitAt().
|
private |
Definition at line 304 of file register-allocator.h.
Referenced by AddUseInterval(), EnsureInterval(), first_interval(), FirstSearchIntervalForPosition(), ShortenTo(), and SplitAt().
|
private |
Definition at line 305 of file register-allocator.h.
Referenced by AddUsePosition(), first_pos(), FirstHint(), and SplitAt().
|
private |
Definition at line 297 of file register-allocator.h.
Referenced by AddUseInterval(), AddUsePosition(), CreateAssignedOperand(), EnsureInterval(), id(), IsFixed(), and ShortenTo().
|
private |
Definition at line 300 of file register-allocator.h.
Referenced by is_non_loop_phi(), and set_is_non_loop_phi().
|
private |
Definition at line 299 of file register-allocator.h.
Referenced by is_phi(), and set_is_phi().
|
private |
Definition at line 301 of file register-allocator.h.
|
static |
Definition at line 183 of file register-allocator.h.
Referenced by HasRegisterAssigned(), and MakeSpilled().
|
private |
Definition at line 303 of file register-allocator.h.
Referenced by AddUseInterval(), End(), EnsureInterval(), and SplitAt().
|
private |
Definition at line 310 of file register-allocator.h.
Referenced by NextUsePosition(), and SplitAt().
|
private |
Definition at line 307 of file register-allocator.h.
|
private |
Definition at line 306 of file register-allocator.h.
Referenced by parent(), SplitAt(), and TopLevel().
|
private |
Definition at line 313 of file register-allocator.h.
Referenced by GetSpillOperand(), HasAllocatedSpillOperand(), and SetSpillOperand().
|
private |
Definition at line 314 of file register-allocator.h.
Referenced by SetSpillStartIndex(), and spill_start_index().
|
private |
Definition at line 298 of file register-allocator.h.
Referenced by IsSpilled(), and MakeSpilled().