V8 Project
|
#include <lithium-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 | LAllocator |
Definition at line 190 of file lithium-allocator.h.
Definition at line 98 of file lithium-allocator.cc.
void v8::internal::LiveRange::AddUseInterval | ( | LifetimePosition | start, |
LifetimePosition | end, | ||
Zone * | zone | ||
) |
Definition at line 388 of file lithium-allocator.cc.
References DCHECK, v8::internal::UseInterval::end(), v8::internal::UseInterval::end_, first_interval_, id_, last_interval_, v8::internal::Max(), v8::internal::Min(), NULL, v8::internal::UseInterval::set_next(), v8::internal::UseInterval::set_start(), v8::internal::UseInterval::start(), v8::internal::UseInterval::start_, and v8::internal::LifetimePosition::Value().
void v8::internal::LiveRange::AddUsePosition | ( | LifetimePosition | pos, |
LOperand * | operand, | ||
LOperand * | hint, | ||
Zone * | zone | ||
) |
Definition at line 418 of file lithium-allocator.cc.
References current_hint_operand_, first_pos_, v8::internal::UsePosition::HasHint(), id_, v8::internal::UsePosition::next(), v8::internal::UsePosition::next_, NULL, v8::internal::UsePosition::pos(), v8::internal::UsePosition::set_next(), and v8::internal::LifetimePosition::Value().
|
private |
Definition at line 235 of file lithium-allocator.cc.
References current_interval_, v8::internal::LifetimePosition::Invalid(), NULL, v8::internal::UseInterval::start(), and v8::internal::LifetimePosition::Value().
Referenced by Covers(), and FirstIntersection().
|
inline |
Definition at line 206 of file lithium-allocator.h.
References assigned_register_.
Referenced by CreateAssignedOperand().
bool v8::internal::LiveRange::CanBeSpilled | ( | LifetimePosition | pos | ) |
Definition at line 187 of file lithium-allocator.cc.
References v8::internal::LifetimePosition::InstructionEnd(), v8::internal::LifetimePosition::NextInstruction(), NextRegisterPosition(), NULL, v8::internal::UsePosition::pos(), and v8::internal::LifetimePosition::Value().
bool v8::internal::LiveRange::CanCover | ( | LifetimePosition | position | ) | const |
Definition at line 466 of file lithium-allocator.cc.
References End(), IsEmpty(), Start(), and v8::internal::LifetimePosition::Value().
Referenced by Covers().
|
private |
Definition at line 449 of file lithium-allocator.cc.
References v8::internal::LOperand::ConvertTo(), CreateAssignedOperand(), DCHECK, End(), first_pos(), v8::internal::UsePosition::HasOperand(), v8::internal::LOperand::index(), v8::internal::LOperand::kind(), v8::internal::UsePosition::next(), NULL, v8::internal::UsePosition::operand(), v8::internal::UsePosition::pos(), v8::internal::UsePosition::RequiresRegister(), Start(), and v8::internal::LifetimePosition::Value().
Referenced by MakeSpilled(), and set_assigned_register().
bool v8::internal::LiveRange::Covers | ( | LifetimePosition | position | ) |
Definition at line 473 of file lithium-allocator.cc.
References AdvanceLastProcessedMarker(), CanCover(), DCHECK, FirstSearchIntervalForPosition(), NULL, and v8::internal::LifetimePosition::Value().
Definition at line 197 of file lithium-allocator.cc.
References assigned_register(), DCHECK, v8::internal::DOUBLE_REGISTERS, v8::internal::GENERAL_REGISTERS, GetSpillOperand(), HasRegisterAssigned(), id_, IsSpilled(), Kind(), v8::internal::LUnallocated::NONE, NULL, v8::internal::LUnallocated::set_virtual_register(), TopLevel(), and UNREACHABLE.
Referenced by ConvertOperands().
|
inline |
Definition at line 245 of file lithium-allocator.h.
References current_hint_operand_, DCHECK, and FirstHint().
|
inline |
Definition at line 261 of file lithium-allocator.h.
References DCHECK, v8::internal::UseInterval::end(), IsEmpty(), and last_interval_.
Referenced by CanCover(), ConvertOperands(), and FirstIntersection().
void v8::internal::LiveRange::EnsureInterval | ( | LifetimePosition | start, |
LifetimePosition | end, | ||
Zone * | zone | ||
) |
Definition at line 363 of file lithium-allocator.cc.
References v8::internal::UseInterval::end(), first_interval_, id_, last_interval_, v8::internal::UseInterval::next(), v8::internal::UseInterval::next_, NULL, v8::internal::UseInterval::start(), and v8::internal::LifetimePosition::Value().
|
inline |
Definition at line 196 of file lithium-allocator.h.
References first_interval_.
Referenced by FirstIntersection(), IsEmpty(), and Start().
|
inline |
Definition at line 197 of file lithium-allocator.h.
References first_pos_.
Referenced by ConvertOperands(), NextUsePosition(), PreviousUsePositionRegisterIsBeneficial(), and ShouldBeAllocatedBefore().
|
inline |
Definition at line 249 of file lithium-allocator.h.
References first_pos_, v8::internal::UsePosition::HasHint(), v8::internal::UsePosition::hint(), v8::internal::UsePosition::next(), and NULL.
Referenced by current_hint_operand().
LifetimePosition v8::internal::LiveRange::FirstIntersection | ( | LiveRange * | other | ) |
Definition at line 489 of file lithium-allocator.cc.
References AdvanceLastProcessedMarker(), End(), first_interval(), FirstSearchIntervalForPosition(), v8::internal::UseInterval::Intersect(), v8::internal::LifetimePosition::Invalid(), v8::internal::LifetimePosition::IsValid(), v8::internal::UseInterval::next(), NULL, v8::internal::UseInterval::start(), and v8::internal::LifetimePosition::Value().
|
private |
Definition at line 224 of file lithium-allocator.cc.
References current_interval_, first_interval_, NULL, v8::internal::UseInterval::start(), and v8::internal::LifetimePosition::Value().
Referenced by Covers(), FirstIntersection(), and SplitAt().
|
inline |
Definition at line 267 of file lithium-allocator.h.
References spill_operand_.
Referenced by CreateAssignedOperand().
bool v8::internal::LiveRange::HasAllocatedSpillOperand | ( | ) | const |
Definition at line 131 of file lithium-allocator.cc.
References DCHECK, NULL, and spill_operand_.
Referenced by MakeSpilled().
|
inline |
Definition at line 240 of file lithium-allocator.h.
References assigned_register_, and kInvalidAssignment.
Referenced by CreateAssignedOperand(), and set_assigned_register().
|
inline |
|
inline |
Definition at line 201 of file lithium-allocator.h.
References NULL, and parent().
|
inline |
Definition at line 204 of file lithium-allocator.h.
References first_interval(), and NULL.
Referenced by CanCover(), End(), SplitAt(), and Start().
|
inline |
|
inline |
Definition at line 243 of file lithium-allocator.h.
References spilled_.
Referenced by CreateAssignedOperand(), MakeSpilled(), and set_assigned_register().
|
inline |
Definition at line 239 of file lithium-allocator.h.
References kind_.
Referenced by CreateAssignedOperand().
void v8::internal::LiveRange::MakeSpilled | ( | Zone * | zone | ) |
Definition at line 122 of file lithium-allocator.cc.
References assigned_register_, ConvertOperands(), DCHECK, HasAllocatedSpillOperand(), IsSpilled(), kInvalidAssignment, spilled_, and TopLevel().
|
inline |
Definition at line 200 of file lithium-allocator.h.
References next_.
Referenced by SplitAt().
UsePosition * v8::internal::LiveRange::NextRegisterPosition | ( | LifetimePosition | start | ) |
Definition at line 178 of file lithium-allocator.cc.
References v8::internal::UsePosition::next(), NextUsePosition(), NULL, and v8::internal::UsePosition::RequiresRegister().
Referenced by CanBeSpilled().
UsePosition * v8::internal::LiveRange::NextUsePosition | ( | LifetimePosition | start | ) |
Definition at line 145 of file lithium-allocator.cc.
References first_pos(), last_processed_use_, v8::internal::UsePosition::next(), NULL, v8::internal::UsePosition::pos(), and v8::internal::LifetimePosition::Value().
Referenced by NextRegisterPosition(), and NextUsePositionRegisterIsBeneficial().
UsePosition * v8::internal::LiveRange::NextUsePositionRegisterIsBeneficial | ( | LifetimePosition | start | ) |
Definition at line 156 of file lithium-allocator.cc.
References v8::internal::UsePosition::next(), NextUsePosition(), NULL, and v8::internal::UsePosition::RegisterIsBeneficial().
|
inline |
Definition at line 198 of file lithium-allocator.h.
References parent_.
Referenced by IsChild().
UsePosition * v8::internal::LiveRange::PreviousUsePositionRegisterIsBeneficial | ( | LifetimePosition | start | ) |
Definition at line 166 of file lithium-allocator.cc.
References first_pos(), v8::internal::UsePosition::next(), NULL, v8::internal::UsePosition::pos(), v8::internal::UsePosition::RegisterIsBeneficial(), and v8::internal::LifetimePosition::Value().
Definition at line 115 of file lithium-allocator.cc.
References assigned_register_, ConvertOperands(), DCHECK, HasRegisterAssigned(), and IsSpilled().
void v8::internal::LiveRange::SetSpillOperand | ( | LOperand * | operand | ) |
Definition at line 137 of file lithium-allocator.cc.
References v8::internal::LOperand::ConvertTo(), DCHECK, v8::internal::LOperand::index(), v8::internal::LOperand::kind(), NULL, and spill_operand_.
|
inline |
Definition at line 270 of file lithium-allocator.h.
References v8::internal::Min(), and spill_start_index_.
void v8::internal::LiveRange::ShortenTo | ( | LifetimePosition | start | ) |
Definition at line 354 of file lithium-allocator.cc.
References DCHECK, v8::internal::UseInterval::end(), first_interval_, id_, NULL, v8::internal::UseInterval::set_start(), v8::internal::UseInterval::start(), and v8::internal::LifetimePosition::Value().
Definition at line 340 of file lithium-allocator.cc.
References first_pos(), NULL, v8::internal::UsePosition::pos(), Start(), and v8::internal::LifetimePosition::Value().
|
inline |
void v8::internal::LiveRange::SplitAt | ( | LifetimePosition | position, |
LiveRange * | result, | ||
Zone * | zone | ||
) |
Definition at line 248 of file lithium-allocator.cc.
References v8::internal::UseInterval::Contains(), current_interval_, DCHECK, first_interval_, first_pos_, FirstSearchIntervalForPosition(), IsEmpty(), kind_, last_interval_, last_processed_use_, v8::internal::UseInterval::next(), v8::internal::UsePosition::next(), next(), v8::internal::UsePosition::next_, next_, NULL, parent_, v8::internal::UsePosition::pos(), v8::internal::UseInterval::SplitAt(), v8::internal::UseInterval::start(), Start(), and v8::internal::LifetimePosition::Value().
|
inline |
Definition at line 256 of file lithium-allocator.h.
References DCHECK, first_interval(), IsEmpty(), and v8::internal::UseInterval::start().
Referenced by CanCover(), ConvertOperands(), ShouldBeAllocatedBefore(), and SplitAt().
|
inline |
Definition at line 199 of file lithium-allocator.h.
Referenced by CreateAssignedOperand(), and MakeSpilled().
|
friend |
Definition at line 323 of file lithium-allocator.h.
|
private |
Definition at line 309 of file lithium-allocator.h.
Referenced by assigned_register(), HasRegisterAssigned(), MakeSpilled(), and set_assigned_register().
|
private |
Definition at line 319 of file lithium-allocator.h.
Referenced by AddUsePosition(), and current_hint_operand().
|
mutableprivate |
Definition at line 316 of file lithium-allocator.h.
Referenced by AdvanceLastProcessedMarker(), FirstSearchIntervalForPosition(), and SplitAt().
|
private |
Definition at line 311 of file lithium-allocator.h.
Referenced by AddUseInterval(), EnsureInterval(), first_interval(), FirstSearchIntervalForPosition(), ShortenTo(), and SplitAt().
|
private |
Definition at line 312 of file lithium-allocator.h.
Referenced by AddUsePosition(), first_pos(), FirstHint(), and SplitAt().
|
private |
Definition at line 306 of file lithium-allocator.h.
Referenced by AddUseInterval(), AddUsePosition(), CreateAssignedOperand(), EnsureInterval(), id(), IsFixed(), and ShortenTo().
|
private |
Definition at line 308 of file lithium-allocator.h.
|
static |
Definition at line 192 of file lithium-allocator.h.
Referenced by HasRegisterAssigned(), and MakeSpilled().
|
private |
Definition at line 310 of file lithium-allocator.h.
Referenced by AddUseInterval(), End(), EnsureInterval(), and SplitAt().
|
private |
Definition at line 317 of file lithium-allocator.h.
Referenced by NextUsePosition(), and SplitAt().
|
private |
Definition at line 314 of file lithium-allocator.h.
|
private |
Definition at line 313 of file lithium-allocator.h.
Referenced by parent(), SplitAt(), and TopLevel().
|
private |
Definition at line 320 of file lithium-allocator.h.
Referenced by GetSpillOperand(), HasAllocatedSpillOperand(), and SetSpillOperand().
|
private |
Definition at line 321 of file lithium-allocator.h.
Referenced by SetSpillStartIndex(), and spill_start_index().
|
private |
Definition at line 307 of file lithium-allocator.h.
Referenced by IsSpilled(), and MakeSpilled().