#include <mark-compact.h>
v8::internal::AllStaticを継承しています。
Public 型 | |
typedef Object *(* | AllocationFunction )(HeapObject *object, int object_size) |
typedef void(* | EncodingFunction )(HeapObject *old_object, int object_size, Object *new_object, int *offset) |
typedef void(* | ProcessNonLiveFunction )(HeapObject *object) |
Static Public メソッド | |
static void | CollectGarbage (GCTracer *tracer) |
static bool | HasCompacted () |
static bool | IsCompacting () |
static int | previous_marked_count () |
static GCTracer * | tracer () |
Static Private メソッド | |
static void | Prepare () |
static void | Finish () |
static void | MarkLiveObjects () |
static void | MarkUnmarkedObject (HeapObject *obj) |
static void | MarkObject (HeapObject *obj) |
static void | CreateBackPointers () |
static void | MarkMapContents (Map *map) |
static void | MarkDescriptorArray (DescriptorArray *descriptors) |
static void | ProcessRoots (RootMarkingVisitor *visitor) |
static void | MarkObjectGroups () |
static void | ProcessObjectGroups (MarkingVisitor *visitor) |
static void | ProcessMarkingStack (MarkingVisitor *visitor) |
static void | EmptyMarkingStack (MarkingVisitor *visitor) |
static void | RefillMarkingStack () |
static bool | MustBeMarked (Object **p) |
static void | SweepLargeObjectSpace () |
static bool | SafeIsMap (HeapObject *object) |
static void | ClearNonLiveTransitions () |
static void | EncodeForwardingAddresses () |
static void | EncodeForwardingAddressesInNewSpace () |
template<AllocationFunction Alloc, ProcessNonLiveFunction ProcessNonLive> | |
static void | EncodeForwardingAddressesInPagedSpace (PagedSpace *space) |
static int | IterateLiveObjects (NewSpace *space, HeapObjectCallback size_f) |
static int | IterateLiveObjects (PagedSpace *space, HeapObjectCallback size_f) |
static int | IterateLiveObjectsInRange (Address start, Address end, HeapObjectCallback size_func) |
static void | DeallocateOldPointerBlock (Address start, int size_in_bytes) |
static void | DeallocateOldDataBlock (Address start, int size_in_bytes) |
static void | DeallocateCodeBlock (Address start, int size_in_bytes) |
static void | DeallocateMapBlock (Address start, int size_in_bytes) |
static void | SweepSpaces () |
static void | UpdatePointers () |
static int | UpdatePointersInNewObject (HeapObject *obj) |
static int | UpdatePointersInOldObject (HeapObject *obj) |
static Address | GetForwardingAddressInOldSpace (HeapObject *obj) |
static void | RelocateObjects () |
static int | ConvertCodeICTargetToAddress (HeapObject *obj) |
static int | RelocateMapObject (HeapObject *obj) |
static int | RelocateOldPointerObject (HeapObject *obj) |
static int | RelocateOldDataObject (HeapObject *obj) |
static int | RelocateOldNonCodeObject (HeapObject *obj, OldSpace *space) |
static int | RelocateCodeObject (HeapObject *obj) |
static int | RelocateNewObject (HeapObject *obj) |
static void | RebuildRSets () |
Static Private 変数 | |
static bool | compacting_collection_ = false |
static int | previous_marked_count_ = 0 |
static GCTracer * | tracer_ = NULL |
フレンド | |
class | RootMarkingVisitor |
class | MarkingVisitor |
class | UpdatingVisitor |
mark-compact.h の 52 行で定義されています。
typedef Object*(* v8::internal::MarkCompactCollector::AllocationFunction)(HeapObject *object, int object_size) |
mark-compact.h の 59 行で定義されています。
typedef void(* v8::internal::MarkCompactCollector::EncodingFunction)(HeapObject *old_object, int object_size, Object *new_object, int *offset) |
mark-compact.h の 69 行で定義されています。
typedef void(* v8::internal::MarkCompactCollector::ProcessNonLiveFunction)(HeapObject *object) |
mark-compact.h の 75 行で定義されています。
void v8::internal::MarkCompactCollector::ClearNonLiveTransitions | ( | ) | [static, private] |
mark-compact.cc の 859 行で定義されています。
参照先 ASSERT, v8::internal::Map::ClearNonLiveTransitions(), v8::internal::CountMarkedCallback(), v8::internal::HeapObjectIterator::has_next(), v8::internal::Map::instance_type(), v8::internal::HeapObject::IsMarked(), v8::internal::Map::kPrototypeOffset, v8::internal::Heap::map_space(), v8::internal::HeapObjectIterator::next(), v8::internal::HeapObject::RawField(), と SafeIsMap().
参照元 CollectGarbage().
void v8::internal::MarkCompactCollector::CollectGarbage | ( | GCTracer * | tracer | ) | [static] |
mark-compact.cc の 70 行で定義されています。
参照先 ASSERT, ClearNonLiveTransitions(), compacting_collection_, EncodeForwardingAddresses(), Finish(), IsCompacting(), MarkLiveObjects(), v8::internal::NULL, Prepare(), previous_marked_count_, RebuildRSets(), RelocateObjects(), SweepLargeObjectSpace(), SweepSpaces(), tracer_, と UpdatePointers().
int v8::internal::MarkCompactCollector::ConvertCodeICTargetToAddress | ( | HeapObject * | obj | ) | [static, private] |
void v8::internal::MarkCompactCollector::CreateBackPointers | ( | ) | [static, private] |
mark-compact.cc の 516 行で定義されています。
参照先 ASSERT, v8::internal::Map::cast(), v8::internal::Map::CreateBackPointers(), v8::internal::FIRST_JS_OBJECT_TYPE, v8::internal::HeapObjectIterator::has_next(), v8::internal::Map::instance_type(), v8::internal::Heap::map_space(), と v8::internal::HeapObjectIterator::next().
参照元 Prepare().
void v8::internal::MarkCompactCollector::DeallocateCodeBlock | ( | Address | start, | |
int | size_in_bytes | |||
) | [static, private] |
mark-compact.cc の 1234 行で定義されています。
参照先 v8::internal::Heap::code_space(), と v8::internal::OldSpace::Free().
参照元 SweepSpaces().
void v8::internal::MarkCompactCollector::DeallocateMapBlock | ( | Address | start, | |
int | size_in_bytes | |||
) | [static, private] |
void v8::internal::MarkCompactCollector::DeallocateOldDataBlock | ( | Address | start, | |
int | size_in_bytes | |||
) | [static, private] |
mark-compact.cc の 1228 行で定義されています。
参照先 v8::internal::OldSpace::Free(), と v8::internal::Heap::old_data_space().
参照元 SweepSpaces().
void v8::internal::MarkCompactCollector::DeallocateOldPointerBlock | ( | Address | start, | |
int | size_in_bytes | |||
) | [static, private] |
void v8::internal::MarkCompactCollector::EmptyMarkingStack | ( | MarkingVisitor * | visitor | ) | [static, private] |
mark-compact.cc の 635 行で定義されています。
参照先 ASSERT, v8::internal::Heap::Contains(), v8::internal::Map::instance_type(), v8::internal::MarkingStack::is_empty(), v8::internal::HeapObject::IsMarked(), v8::internal::HeapObject::IsOverflowed(), v8::internal::marking_stack, MarkObject(), と v8::internal::MarkingStack::Pop().
参照元 MarkLiveObjects(), v8::internal::RootMarkingVisitor::MarkObjectByPointer(), ProcessMarkingStack(), と ProcessRoots().
void v8::internal::MarkCompactCollector::EncodeForwardingAddresses | ( | ) | [static, private] |
mark-compact.cc の 1254 行で定義されています。
参照先 ASSERT, v8::internal::Heap::code_space(), EncodeForwardingAddressesInNewSpace(), EncodeForwardingAddressesInPagedSpace(), v8::internal::IgnoreNonLiveObject(), v8::internal::LogNonLiveCodeObject(), v8::internal::Heap::map_space(), v8::internal::NewSpace::MCResetRelocationInfo(), v8::internal::PagedSpace::MCWriteRelocationInfoToPage(), v8::internal::Heap::new_space(), v8::internal::Heap::old_data_space(), と v8::internal::Heap::old_pointer_space().
参照元 CollectGarbage().
void v8::internal::MarkCompactCollector::EncodeForwardingAddressesInNewSpace | ( | ) | [static, private] |
void v8::internal::MarkCompactCollector::EncodeForwardingAddressesInPagedSpace | ( | PagedSpace * | space | ) | [static, private] |
void v8::internal::MarkCompactCollector::Finish | ( | ) | [static, private] |
mark-compact.cc の 169 行で定義されています。
参照先 ASSERT, と v8::internal::StubCache::Clear().
参照元 CollectGarbage().
Address v8::internal::MarkCompactCollector::GetForwardingAddressInOldSpace | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1594 行で定義されています。
参照先 v8::internal::HeapObject::address(), ASSERT, ASSERT_PAGE_OFFSET, v8::internal::Page::is_valid(), v8::internal::Page::kObjectStartOffset, v8::internal::HeapObject::map_word(), v8::internal::Page::mc_first_forwarded, v8::internal::Page::mc_relocation_top, v8::internal::Page::next_page(), と v8::internal::Page::OffsetToAddress().
参照元 RelocateCodeObject(), RelocateMapObject(), RelocateOldNonCodeObject(), v8::internal::UpdatingVisitor::UpdatePointer(), UpdatePointersInNewObject(), と UpdatePointersInOldObject().
static bool v8::internal::MarkCompactCollector::HasCompacted | ( | ) | [inline, static] |
mark-compact.h の 81 行で定義されています。
static bool v8::internal::MarkCompactCollector::IsCompacting | ( | ) | [inline, static] |
mark-compact.h の 84 行で定義されています。
参照元 CollectGarbage(), v8::internal::SweepSpace(), と SweepSpaces().
int v8::internal::MarkCompactCollector::IterateLiveObjects | ( | NewSpace * | space, | |
HeapObjectCallback | size_f | |||
) | [static, private] |
mark-compact.cc の 1337 行で定義されています。
参照先 ASSERT, v8::internal::NewSpace::bottom(), IterateLiveObjectsInRange(), と v8::internal::NewSpace::top().
参照元 RelocateObjects(), と UpdatePointers().
int v8::internal::MarkCompactCollector::IterateLiveObjects | ( | PagedSpace * | space, | |
HeapObjectCallback | size_f | |||
) | [static, private] |
int v8::internal::MarkCompactCollector::IterateLiveObjectsInRange | ( | Address | start, | |
Address | end, | |||
HeapObjectCallback | size_func | |||
) | [static, private] |
void v8::internal::MarkCompactCollector::MarkDescriptorArray | ( | DescriptorArray * | descriptors | ) | [static, private] |
mark-compact.cc の 467 行で定義されています。
参照先 ASSERT, v8::internal::Smi::cast(), v8::internal::FixedArray::get(), v8::internal::HeapObject::IsMarked(), v8::internal::DescriptorArray::kContentArrayIndex, v8::internal::Array::length(), v8::internal::marking_stack, v8::internal::MarkingStack::Push(), v8::internal::HeapObject::SetMark(), と tracer_.
参照元 MarkMapContents().
void v8::internal::MarkCompactCollector::MarkLiveObjects | ( | ) | [static, private] |
mark-compact.cc の 716 行で定義されています。
参照先 ASSERT, EmptyMarkingStack(), v8::internal::MarkingStack::Initialize(), v8::internal::GlobalHandles::IterateWeakRoots(), v8::internal::marking_stack, v8::internal::GlobalHandles::MarkWeakRoots(), MustBeMarked(), v8::internal::Heap::new_space(), v8::internal::MarkingStack::overflowed(), v8::internal::SymbolTableCleaner::PointersRemoved(), ProcessObjectGroups(), ProcessRoots(), RefillMarkingStack(), と v8::internal::GlobalHandles::RemoveObjectGroups().
参照元 CollectGarbage().
void v8::internal::MarkCompactCollector::MarkMapContents | ( | Map * | map | ) | [static, private] |
static void v8::internal::MarkCompactCollector::MarkObject | ( | HeapObject * | obj | ) | [inline, static, private] |
mark-compact.h の 154 行で定義されています。
参照先 v8::internal::HeapObject::IsMarked(), と MarkUnmarkedObject().
参照元 EmptyMarkingStack(), v8::internal::RootMarkingVisitor::MarkObjectByPointer(), v8::internal::MarkingVisitor::MarkObjectByPointer(), MarkObjectGroups(), v8::internal::MarkingVisitor::VisitCodeTarget(), v8::internal::MarkingVisitor::VisitDebugTarget(), と v8::internal::MarkingVisitor::VisitUnmarkedObject().
void v8::internal::MarkCompactCollector::MarkObjectGroups | ( | ) | [static, private] |
void v8::internal::MarkCompactCollector::MarkUnmarkedObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 425 行で定義されています。
参照先 ASSERT, v8::internal::Map::cast(), v8::internal::Map::ClearCodeCache(), v8::internal::Heap::Contains(), v8::internal::FIRST_JS_OBJECT_TYPE, v8::internal::Map::instance_type(), v8::internal::HeapObject::IsMarked(), v8::internal::marking_stack, MarkMapContents(), v8::internal::MarkingStack::Push(), v8::internal::HeapObject::SetMark(), と tracer_.
参照元 MarkObject().
bool v8::internal::MarkCompactCollector::MustBeMarked | ( | Object ** | p | ) | [static, private] |
mark-compact.cc の 565 行で定義されています。
参照先 v8::internal::HeapObject::cast(), と v8::internal::HeapObject::IsMarked().
参照元 MarkLiveObjects().
void v8::internal::MarkCompactCollector::Prepare | ( | ) | [static, private] |
mark-compact.cc の 108 行で定義されています。
参照先 ASSERT, compacting_collection_, と CreateBackPointers().
参照元 CollectGarbage().
static int v8::internal::MarkCompactCollector::previous_marked_count | ( | ) | [inline, static] |
mark-compact.h の 88 行で定義されています。
void v8::internal::MarkCompactCollector::ProcessMarkingStack | ( | MarkingVisitor * | visitor | ) | [static, private] |
void v8::internal::MarkCompactCollector::ProcessObjectGroups | ( | MarkingVisitor * | visitor | ) | [static, private] |
mark-compact.cc の 705 行で定義されています。
参照先 ASSERT, v8::internal::MarkingStack::is_empty(), v8::internal::marking_stack, MarkObjectGroups(), と ProcessMarkingStack().
参照元 MarkLiveObjects().
void v8::internal::MarkCompactCollector::ProcessRoots | ( | RootMarkingVisitor * | visitor | ) | [static, private] |
mark-compact.cc の 572 行で定義されています。
参照先 v8::internal::SymbolTable::cast(), EmptyMarkingStack(), v8::internal::HashTable< prefix_size, element_size >::IteratePrefix(), v8::internal::Heap::IterateStrongRoots(), v8::internal::marking_stack, v8::internal::MarkingStack::overflowed(), RefillMarkingStack(), v8::internal::HeapObject::SetMark(), v8::internal::RootMarkingVisitor::stack_visitor(), と tracer_.
参照元 MarkLiveObjects().
void v8::internal::MarkCompactCollector::RebuildRSets | ( | ) | [static, private] |
void v8::internal::MarkCompactCollector::RefillMarkingStack | ( | ) | [static, private] |
mark-compact.cc の 660 行で定義されています。
参照先 ASSERT, v8::internal::MarkingStack::clear_overflowed(), v8::internal::Heap::code_space(), v8::internal::MarkingStack::is_full(), v8::internal::Heap::lo_space(), v8::internal::Heap::map_space(), v8::internal::marking_stack, v8::internal::Heap::new_space(), v8::internal::Heap::old_data_space(), v8::internal::Heap::old_pointer_space(), v8::internal::MarkingStack::overflowed(), v8::internal::OverflowObjectSize(), と v8::internal::ScanOverflowedObjects().
参照元 MarkLiveObjects(), ProcessMarkingStack(), と ProcessRoots().
int v8::internal::MarkCompactCollector::RelocateCodeObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1803 行で定義されています。
参照先 v8::internal::HeapObject::address(), ASSERT, v8::internal::Code::cast(), v8::internal::Heap::code_space(), v8::internal::Code::ConvertICTargetsFromObjectToAddress(), v8::internal::HeapObject::FromAddress(), GetForwardingAddressInOldSpace(), LOG, v8::internal::Heap::map_space(), v8::internal::HeapObject::map_word(), v8::internal::Code::Relocate(), と v8::internal::RelocateOldObject().
参照元 RelocateObjects().
int v8::internal::MarkCompactCollector::RelocateMapObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1713 行で定義されています。
参照先 v8::internal::HeapObject::address(), ASSERT, v8::internal::HeapObject::FromAddress(), GetForwardingAddressInOldSpace(), v8::internal::Map::kSize, v8::internal::Heap::map_space(), v8::internal::HeapObject::map_word(), v8::internal::PrintF(), と v8::internal::HeapObject::set_map().
参照元 RelocateObjects().
int v8::internal::MarkCompactCollector::RelocateNewObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1850 行で定義されています。
参照先 v8::internal::HeapObject::address(), v8::internal::Memory::Address_at(), ASSERT, v8::internal::HeapObject::FromAddress(), v8::internal::HeapObject::Iterate(), v8::internal::OldSpace::MCAdjustRelocationEnd(), v8::internal::Heap::new_space(), v8::internal::Heap::old_data_space(), v8::internal::Heap::old_pointer_space(), v8::internal::PrintF(), v8::internal::HeapObject::Size(), v8::internal::Heap::TargetSpace(), と v8::internal::NewSpace::ToSpaceOffsetForAddress().
参照元 RelocateObjects().
void v8::internal::MarkCompactCollector::RelocateObjects | ( | ) | [static, private] |
mark-compact.cc の 1650 行で定義されています。
参照先 ASSERT, v8::internal::NewSpace::bottom(), v8::internal::Heap::code_space(), ConvertCodeICTargetToAddress(), v8::internal::NewSpace::Flip(), v8::internal::LargeObjectIterator::has_next(), IterateLiveObjects(), v8::internal::Heap::lo_space(), v8::internal::Heap::map_space(), v8::internal::NewSpace::MCCommitRelocationInfo(), v8::internal::Heap::new_space(), v8::internal::LargeObjectIterator::next(), v8::internal::Heap::old_data_space(), v8::internal::Heap::old_pointer_space(), RelocateCodeObject(), RelocateMapObject(), RelocateNewObject(), RelocateOldDataObject(), RelocateOldPointerObject(), v8::internal::NewSpace::set_age_mark(), と v8::internal::USE().
参照元 CollectGarbage().
int v8::internal::MarkCompactCollector::RelocateOldDataObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1798 行で定義されています。
参照先 v8::internal::Heap::old_data_space(), と RelocateOldNonCodeObject().
参照元 RelocateObjects().
int v8::internal::MarkCompactCollector::RelocateOldNonCodeObject | ( | HeapObject * | obj, | |
OldSpace * | space | |||
) | [inline, static, private] |
int v8::internal::MarkCompactCollector::RelocateOldPointerObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1793 行で定義されています。
参照先 v8::internal::Heap::old_pointer_space(), と RelocateOldNonCodeObject().
参照元 RelocateObjects().
bool v8::internal::MarkCompactCollector::SafeIsMap | ( | HeapObject * | object | ) | [inline, static, private] |
mark-compact.cc の 853 行で定義されています。
void v8::internal::MarkCompactCollector::SweepLargeObjectSpace | ( | ) | [static, private] |
void v8::internal::MarkCompactCollector::SweepSpaces | ( | ) | [static, private] |
mark-compact.cc の 1295 行で定義されています。
参照先 ASSERT, v8::internal::Heap::code_space(), DeallocateCodeBlock(), DeallocateMapBlock(), DeallocateOldDataBlock(), DeallocateOldPointerBlock(), IsCompacting(), v8::internal::Heap::map_space(), v8::internal::Heap::new_space(), v8::internal::Heap::old_data_space(), v8::internal::Heap::old_pointer_space(), と v8::internal::SweepSpace().
参照元 CollectGarbage().
static GCTracer* v8::internal::MarkCompactCollector::tracer | ( | ) | [inline, static] |
void v8::internal::MarkCompactCollector::UpdatePointers | ( | ) | [static, private] |
mark-compact.cc の 1492 行で定義されています。
参照先 ASSERT, v8::internal::Heap::code_space(), v8::internal::LargeObjectIterator::has_next(), IterateLiveObjects(), v8::internal::Heap::IterateRoots(), v8::internal::GlobalHandles::IterateWeakRoots(), v8::internal::Heap::lo_space(), v8::internal::Heap::map_space(), v8::internal::Heap::new_space(), v8::internal::LargeObjectIterator::next(), v8::internal::Heap::old_data_space(), v8::internal::Heap::old_pointer_space(), UpdatePointersInNewObject(), UpdatePointersInOldObject(), と v8::internal::USE().
参照元 CollectGarbage().
int v8::internal::MarkCompactCollector::UpdatePointersInNewObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1534 行で定義されています。
参照先 v8::internal::HeapObject::address(), ASSERT, v8::internal::HeapObject::FromAddress(), GetForwardingAddressInOldSpace(), v8::internal::Map::instance_type(), v8::internal::HeapObject::IterateBody(), v8::internal::HeapObject::map(), v8::internal::Heap::map_space(), v8::internal::PrintF(), v8::internal::HeapObject::set_map(), と v8::internal::HeapObject::SizeFromMap().
参照元 UpdatePointers().
int v8::internal::MarkCompactCollector::UpdatePointersInOldObject | ( | HeapObject * | obj | ) | [static, private] |
mark-compact.cc の 1563 行で定義されています。
参照先 v8::internal::HeapObject::address(), ASSERT, v8::internal::HeapObject::FromAddress(), GetForwardingAddressInOldSpace(), v8::internal::Map::instance_type(), v8::internal::HeapObject::IterateBody(), v8::internal::Heap::map_space(), v8::internal::HeapObject::map_word(), v8::internal::PrintF(), v8::internal::HeapObject::set_map_word(), と v8::internal::HeapObject::SizeFromMap().
参照元 UpdatePointers().
friend class MarkingVisitor [friend] |
mark-compact.h の 147 行で定義されています。
friend class RootMarkingVisitor [friend] |
mark-compact.h の 146 行で定義されています。
friend class UpdatingVisitor [friend] |
mark-compact.h の 281 行で定義されています。
bool v8::internal::MarkCompactCollector::compacting_collection_ = false [static, private] |
mark-compact.h の 116 行で定義されています。
参照元 CollectGarbage(), HasCompacted(), IsCompacting(), Prepare(), と SweepLargeObjectSpace().
int v8::internal::MarkCompactCollector::previous_marked_count_ = 0 [static, private] |
mark-compact.h の 120 行で定義されています。
GCTracer * v8::internal::MarkCompactCollector::tracer_ = NULL [static, private] |
mark-compact.h の 124 行で定義されています。
参照元 CollectGarbage(), MarkDescriptorArray(), MarkUnmarkedObject(), ProcessRoots(), と tracer().