V8 Project
|
Public Member Functions | |
HCheckTable (HCheckEliminationPhase *phase) | |
HCheckTable * | Process (HInstruction *instr, Zone *zone) |
![]() | |
INLINE (void *operator new(size_t size, Zone *zone)) | |
void | operator delete (void *, size_t) |
void | operator delete (void *pointer, Zone *zone) |
Static Public Member Functions | |
static HCheckTable * | Merge (HCheckTable *succ_state, HBasicBlock *succ_block, HCheckTable *pred_state, HBasicBlock *pred_block, Zone *zone) |
static HCheckTable * | Finish (HCheckTable *state, HBasicBlock *block, Zone *zone) |
Static Public Attributes | |
static const int | kMaxTrackedObjects = 16 |
Private Member Functions | |
HCheckTable * | Copy (HBasicBlock *succ, HBasicBlock *from_block, Zone *zone) |
HCheckTable * | Merge (HBasicBlock *succ, HCheckTable *that, HBasicBlock *pred_block, Zone *zone) |
void | ReduceCheckMaps (HCheckMaps *instr) |
void | ReduceCheckInstanceType (HCheckInstanceType *instr) |
void | ReduceLoadNamedField (HLoadNamedField *instr) |
void | ReduceCheckHeapObject (HCheckHeapObject *instr) |
void | ReduceStoreNamedField (HStoreNamedField *instr) |
void | ReduceCompareMap (HCompareMap *instr) |
void | ReduceCompareObjectEqAndBranch (HCompareObjectEqAndBranch *instr) |
void | ReduceIsStringAndBranch (HIsStringAndBranch *instr) |
void | ReduceTransitionElementsKind (HTransitionElementsKind *instr) |
void | EnsureChecked (HCheckTableEntry *entry, HValue *value, HInstruction *instr) |
void | Kill () |
void | KillUnstableEntries () |
void | Kill (HValue *object) |
void | Compact () |
HCheckTableEntry * | Find (HValue *object) |
void | Insert (HValue *object, HInstruction *check, Unique< Map > map, HCheckTableEntry::State state) |
void | Insert (HValue *object, HInstruction *check, MapSet maps, HCheckTableEntry::State state) |
Zone * | zone () const |
MapSet | string_maps () const |
STATIC_ASSERT (kMaxTrackedObjects<(1<< 15)) | |
Static Private Member Functions | |
static void | Print (HCheckTable *table) |
Private Attributes | |
HCheckEliminationPhase * | phase_ |
HCheckTableEntry | entries_ [kMaxTrackedObjects] |
int16_t | cursor_ |
int16_t | size_ |
Friends | |
class | HCheckMapsEffects |
class | HCheckEliminationPhase |
Definition at line 74 of file hydrogen-check-elimination.cc.
|
inlineexplicit |
Definition at line 78 of file hydrogen-check-elimination.cc.
Referenced by Copy().
|
inlineprivate |
Definition at line 697 of file hydrogen-check-elimination.cc.
References cursor_, DCHECK, entries_, kMaxTrackedObjects, v8::internal::L, v8::internal::MemMove(), NULL, and size_.
Referenced by Kill(), KillUnstableEntries(), Merge(), and ReduceCheckMaps().
|
inlineprivate |
Definition at line 176 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), v8::internal::HValue::block(), v8::internal::HValue::cast(), v8::internal::HCheckTableEntry::check_, v8::internal::HCheckTableEntry::CHECKED, v8::internal::HCheckTableEntry::CHECKED_STABLE, cursor_, DCHECK, DCHECK_NE, EnsureChecked(), entries_, Find(), HCheckTable(), Insert(), v8::internal::le, v8::internal::HCompareObjectEqAndBranch::left(), v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::object_, v8::internal::HValue::OperandAt(), phase_, Print(), v8::internal::PrintF(), v8::internal::HCompareObjectEqAndBranch::right(), size_, v8::internal::HCheckTableEntry::state_, v8::internal::HCheckTableEntry::StateMerge(), string_maps(), v8::internal::HControlInstruction::SuccessorAt(), v8::internal::HCheckTableEntry::UNCHECKED_STABLE, and zone().
Referenced by Merge().
|
inlineprivate |
Definition at line 646 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::block(), v8::internal::HCheckTableEntry::check_, v8::internal::HCheckTableEntry::CHECKED_STABLE, v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::state_, and v8::internal::HCheckTableEntry::UNCHECKED_STABLE.
Referenced by Copy(), ReduceCheckInstanceType(), ReduceCompareMap(), ReduceCompareObjectEqAndBranch(), ReduceIsStringAndBranch(), ReduceLoadNamedField(), and ReduceTransitionElementsKind().
|
inlineprivate |
Definition at line 754 of file hydrogen-check-elimination.cc.
References v8::internal::HCheckEliminationPhase::aliasing_, DCHECK, entries_, v8::internal::HAliasAnalyzer::MustAlias(), NULL, v8::internal::HCheckTableEntry::object_, phase_, and size_.
Referenced by Copy(), Kill(), Merge(), ReduceCheckHeapObject(), ReduceCheckInstanceType(), ReduceCheckMaps(), ReduceCompareMap(), ReduceCompareObjectEqAndBranch(), ReduceIsStringAndBranch(), ReduceLoadNamedField(), and ReduceTransitionElementsKind().
|
inlinestatic |
Definition at line 160 of file hydrogen-check-elimination.cc.
References NULL, Print(), and v8::internal::PrintF().
|
inlineprivate |
Definition at line 771 of file hydrogen-check-elimination.cc.
References v8::internal::HCheckTableEntry::check_, cursor_, DCHECK, entries_, kMaxTrackedObjects, v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::object_, size_, v8::internal::HCheckTableEntry::state_, and v8::internal::HCheckTableEntry::UNCHECKED_STABLE.
|
inlineprivate |
Definition at line 764 of file hydrogen-check-elimination.cc.
Referenced by Copy(), ReduceCheckInstanceType(), ReduceCheckMaps(), ReduceLoadNamedField(), and ReduceStoreNamedField().
|
inlineprivate |
Definition at line 659 of file hydrogen-check-elimination.cc.
References cursor_, and size_.
Referenced by v8::internal::HCheckMapsEffects::Apply(), Process(), ReduceStoreNamedField(), and v8::internal::HCheckEliminationPhase::Run().
|
inlineprivate |
Definition at line 683 of file hydrogen-check-elimination.cc.
References v8::internal::HCheckEliminationPhase::aliasing_, Compact(), DCHECK, entries_, Find(), v8::internal::HAliasAnalyzer::MayAlias(), NULL, v8::internal::HCheckTableEntry::object_, phase_, and size_.
|
inlineprivate |
Definition at line 665 of file hydrogen-check-elimination.cc.
References v8::internal::HCheckTableEntry::check_, v8::internal::HCheckTableEntry::CHECKED, Compact(), DCHECK_NOT_NULL, entries_, NULL, v8::internal::HCheckTableEntry::object_, size_, v8::internal::HCheckTableEntry::state_, and v8::internal::HCheckTableEntry::UNCHECKED_STABLE.
Referenced by v8::internal::HCheckMapsEffects::Apply(), and Process().
|
inlineprivate |
Definition at line 310 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::block(), v8::internal::HCheckTableEntry::check_, v8::internal::HCheckTableEntry::CHECKED, Compact(), cursor_, DCHECK, entries_, Find(), v8::internal::HValue::IsPhi(), v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::object_, v8::internal::HValue::OperandAt(), Print(), v8::internal::PrintF(), size_, v8::internal::HCheckTableEntry::state_, v8::internal::HCheckTableEntry::StateMerge(), v8::internal::HCheckTableEntry::UNCHECKED_STABLE, and zone().
|
inlinestatic |
|
inlinestaticprivate |
Definition at line 729 of file hydrogen-check-elimination.cc.
References v8::internal::HCheckTableEntry::check_, DCHECK, entries_, v8::internal::HValue::id(), v8::internal::HValue::IsPhi(), v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::object_, v8::internal::PrintF(), size_, v8::internal::HCheckTableEntry::State2String(), v8::internal::HCheckTableEntry::state_, and V8PRIxPTR.
Referenced by Copy(), Finish(), Merge(), and ReduceCheckMaps().
|
inline |
Definition at line 85 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::cast(), v8::internal::HValue::CheckChangesFlag(), Kill(), KillUnstableEntries(), v8::internal::HValue::opcode(), ReduceCheckHeapObject(), ReduceCheckInstanceType(), ReduceCheckMaps(), ReduceCompareMap(), ReduceCompareObjectEqAndBranch(), ReduceIsStringAndBranch(), ReduceLoadNamedField(), ReduceStoreNamedField(), and ReduceTransitionElementsKind().
|
inlineprivate |
Definition at line 517 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), v8::internal::HValue::DeleteAndReplaceWith(), Find(), INC_STAT, and NULL.
Referenced by Process().
|
inlineprivate |
Definition at line 448 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), v8::internal::HCheckTableEntry::CHECKED, v8::internal::HCheckTableEntry::CHECKED_STABLE, EnsureChecked(), Find(), INC_STAT, Insert(), map, v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::state_, string_maps(), TRACE, v8::internal::HCheckTableEntry::UNCHECKED_STABLE, and zone().
Referenced by Process().
|
inlineprivate |
Definition at line 361 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), v8::internal::HValue::block(), v8::internal::HCheckTableEntry::check_, v8::internal::HCheckTableEntry::CHECKED, v8::internal::HCheckTableEntry::CHECKED_STABLE, Compact(), DCHECK, DCHECK_EQ, DCHECK_NE, Find(), v8::internal::HValue::id(), INC_STAT, Insert(), v8::internal::HValue::kIsDead, v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::object_, Print(), v8::internal::HCheckTableEntry::state_, TRACE, and v8::internal::HCheckTableEntry::UNCHECKED_STABLE.
Referenced by Process().
|
inlineprivate |
Definition at line 551 of file hydrogen-check-elimination.cc.
References EnsureChecked(), Find(), INC_STAT, v8::internal::HCheckTableEntry::maps_, NULL, and TRACE.
Referenced by Process().
|
inlineprivate |
Definition at line 581 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), v8::internal::HValue::block(), EnsureChecked(), Find(), v8::internal::HValue::id(), v8::internal::le, v8::internal::HCompareObjectEqAndBranch::left(), v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCompareObjectEqAndBranch::right(), v8::internal::HCompareObjectEqAndBranch::set_known_successor_index(), TRACE, and zone().
Referenced by Process().
|
inlineprivate |
Definition at line 605 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), EnsureChecked(), Find(), v8::internal::HCheckTableEntry::maps_, NULL, string_maps(), TRACE, and zone().
Referenced by Process().
|
inlineprivate |
Definition at line 492 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), v8::internal::HCheckTableEntry::CHECKED, DCHECK_NE, EnsureChecked(), Find(), INC_STAT, Insert(), map, v8::internal::HCheckTableEntry::maps_, NULL, v8::internal::HCheckTableEntry::state_, and v8::internal::HCheckTableEntry::UNCHECKED_STABLE.
Referenced by Process().
|
inlineprivate |
Definition at line 526 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), CHECK, v8::internal::HCheckTableEntry::CHECKED, v8::internal::HCheckTableEntry::CHECKED_STABLE, Insert(), Kill(), and NULL.
Referenced by Process().
|
inlineprivate |
Definition at line 627 of file hydrogen-check-elimination.cc.
References v8::internal::HValue::ActualValue(), EnsureChecked(), Find(), INC_STAT, v8::internal::HCheckTableEntry::maps_, NULL, and zone().
Referenced by Process().
|
private |
|
inlineprivate |
Definition at line 787 of file hydrogen-check-elimination.cc.
References phase_, and v8::internal::HCheckEliminationPhase::string_maps().
Referenced by Copy(), ReduceCheckInstanceType(), and ReduceIsStringAndBranch().
|
inlineprivate |
Definition at line 786 of file hydrogen-check-elimination.cc.
References phase_.
Referenced by Copy(), Insert(), Merge(), ReduceCheckInstanceType(), ReduceCompareObjectEqAndBranch(), ReduceIsStringAndBranch(), and ReduceTransitionElementsKind().
|
friend |
Definition at line 790 of file hydrogen-check-elimination.cc.
|
friend |
Definition at line 789 of file hydrogen-check-elimination.cc.
|
private |
|
private |
Definition at line 793 of file hydrogen-check-elimination.cc.
Referenced by Compact(), Copy(), Find(), Insert(), Kill(), KillUnstableEntries(), Merge(), and Print().
|
static |
Definition at line 76 of file hydrogen-check-elimination.cc.
|
private |
Definition at line 792 of file hydrogen-check-elimination.cc.
Referenced by Copy(), Find(), Kill(), string_maps(), and zone().
|
private |
Definition at line 795 of file hydrogen-check-elimination.cc.
Referenced by Compact(), Copy(), Find(), Insert(), Kill(), KillUnstableEntries(), Merge(), and Print().