| Index: src/heap/objects-visiting-inl.h
|
| diff --git a/src/objects-visiting-inl.h b/src/heap/objects-visiting-inl.h
|
| similarity index 75%
|
| rename from src/objects-visiting-inl.h
|
| rename to src/heap/objects-visiting-inl.h
|
| index 19fe0c610a1226e4994a60fdfa0ce31eabad5a1d..8846d27bceb4e9f4b9a0eeaa219457209889d88d 100644
|
| --- a/src/objects-visiting-inl.h
|
| +++ b/src/heap/objects-visiting-inl.h
|
| @@ -9,48 +9,43 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticNewSpaceVisitor<StaticVisitor>::Initialize() {
|
| - table_.Register(kVisitShortcutCandidate,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - ConsString::BodyDescriptor,
|
| - int>::Visit);
|
| + table_.Register(
|
| + kVisitShortcutCandidate,
|
| + &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor, int>::Visit);
|
|
|
| - table_.Register(kVisitConsString,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - ConsString::BodyDescriptor,
|
| - int>::Visit);
|
| + table_.Register(
|
| + kVisitConsString,
|
| + &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor, int>::Visit);
|
|
|
| table_.Register(kVisitSlicedString,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - SlicedString::BodyDescriptor,
|
| - int>::Visit);
|
| + &FixedBodyVisitor<StaticVisitor, SlicedString::BodyDescriptor,
|
| + int>::Visit);
|
|
|
| - table_.Register(kVisitSymbol,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - Symbol::BodyDescriptor,
|
| - int>::Visit);
|
| + table_.Register(
|
| + kVisitSymbol,
|
| + &FixedBodyVisitor<StaticVisitor, Symbol::BodyDescriptor, int>::Visit);
|
|
|
| table_.Register(kVisitFixedArray,
|
| &FlexibleBodyVisitor<StaticVisitor,
|
| - FixedArray::BodyDescriptor,
|
| - int>::Visit);
|
| + FixedArray::BodyDescriptor, int>::Visit);
|
|
|
| table_.Register(kVisitFixedDoubleArray, &VisitFixedDoubleArray);
|
| table_.Register(kVisitFixedTypedArray, &VisitFixedTypedArray);
|
| table_.Register(kVisitFixedFloat64Array, &VisitFixedTypedArray);
|
|
|
| - table_.Register(kVisitNativeContext,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - Context::ScavengeBodyDescriptor,
|
| - int>::Visit);
|
| + table_.Register(
|
| + kVisitNativeContext,
|
| + &FixedBodyVisitor<StaticVisitor, Context::ScavengeBodyDescriptor,
|
| + int>::Visit);
|
|
|
| table_.Register(kVisitByteArray, &VisitByteArray);
|
|
|
| - table_.Register(kVisitSharedFunctionInfo,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - SharedFunctionInfo::BodyDescriptor,
|
| - int>::Visit);
|
| + table_.Register(
|
| + kVisitSharedFunctionInfo,
|
| + &FixedBodyVisitor<StaticVisitor, SharedFunctionInfo::BodyDescriptor,
|
| + int>::Visit);
|
|
|
| table_.Register(kVisitSeqOneByteString, &VisitSeqOneByteString);
|
|
|
| @@ -70,41 +65,35 @@ void StaticNewSpaceVisitor<StaticVisitor>::Initialize() {
|
|
|
| table_.Register(kVisitJSRegExp, &JSObjectVisitor::Visit);
|
|
|
| - table_.template RegisterSpecializations<DataObjectVisitor,
|
| - kVisitDataObject,
|
| + table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject,
|
| kVisitDataObjectGeneric>();
|
|
|
| - table_.template RegisterSpecializations<JSObjectVisitor,
|
| - kVisitJSObject,
|
| + table_.template RegisterSpecializations<JSObjectVisitor, kVisitJSObject,
|
| kVisitJSObjectGeneric>();
|
| - table_.template RegisterSpecializations<StructVisitor,
|
| - kVisitStruct,
|
| + table_.template RegisterSpecializations<StructVisitor, kVisitStruct,
|
| kVisitStructGeneric>();
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| int StaticNewSpaceVisitor<StaticVisitor>::VisitJSArrayBuffer(
|
| Map* map, HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
|
|
| - STATIC_ASSERT(
|
| - JSArrayBuffer::kWeakFirstViewOffset ==
|
| - JSArrayBuffer::kWeakNextOffset + kPointerSize);
|
| - VisitPointers(
|
| - heap,
|
| - HeapObject::RawField(object, JSArrayBuffer::BodyDescriptor::kStartOffset),
|
| - HeapObject::RawField(object, JSArrayBuffer::kWeakNextOffset));
|
| + STATIC_ASSERT(JSArrayBuffer::kWeakFirstViewOffset ==
|
| + JSArrayBuffer::kWeakNextOffset + kPointerSize);
|
| + VisitPointers(heap, HeapObject::RawField(
|
| + object, JSArrayBuffer::BodyDescriptor::kStartOffset),
|
| + HeapObject::RawField(object, JSArrayBuffer::kWeakNextOffset));
|
| VisitPointers(
|
| - heap,
|
| - HeapObject::RawField(object,
|
| - JSArrayBuffer::kWeakNextOffset + 2 * kPointerSize),
|
| + heap, HeapObject::RawField(
|
| + object, JSArrayBuffer::kWeakNextOffset + 2 * kPointerSize),
|
| HeapObject::RawField(object, JSArrayBuffer::kSizeWithInternalFields));
|
| return JSArrayBuffer::kSizeWithInternalFields;
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| int StaticNewSpaceVisitor<StaticVisitor>::VisitJSTypedArray(
|
| Map* map, HeapObject* object) {
|
| VisitPointers(
|
| @@ -112,51 +101,45 @@ int StaticNewSpaceVisitor<StaticVisitor>::VisitJSTypedArray(
|
| HeapObject::RawField(object, JSTypedArray::BodyDescriptor::kStartOffset),
|
| HeapObject::RawField(object, JSTypedArray::kWeakNextOffset));
|
| VisitPointers(
|
| - map->GetHeap(),
|
| - HeapObject::RawField(object,
|
| - JSTypedArray::kWeakNextOffset + kPointerSize),
|
| + map->GetHeap(), HeapObject::RawField(
|
| + object, JSTypedArray::kWeakNextOffset + kPointerSize),
|
| HeapObject::RawField(object, JSTypedArray::kSizeWithInternalFields));
|
| return JSTypedArray::kSizeWithInternalFields;
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -int StaticNewSpaceVisitor<StaticVisitor>::VisitJSDataView(
|
| - Map* map, HeapObject* object) {
|
| +template <typename StaticVisitor>
|
| +int StaticNewSpaceVisitor<StaticVisitor>::VisitJSDataView(Map* map,
|
| + HeapObject* object) {
|
| VisitPointers(
|
| map->GetHeap(),
|
| HeapObject::RawField(object, JSDataView::BodyDescriptor::kStartOffset),
|
| HeapObject::RawField(object, JSDataView::kWeakNextOffset));
|
| VisitPointers(
|
| map->GetHeap(),
|
| - HeapObject::RawField(object,
|
| - JSDataView::kWeakNextOffset + kPointerSize),
|
| + HeapObject::RawField(object, JSDataView::kWeakNextOffset + kPointerSize),
|
| HeapObject::RawField(object, JSDataView::kSizeWithInternalFields));
|
| return JSDataView::kSizeWithInternalFields;
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::Initialize() {
|
| table_.Register(kVisitShortcutCandidate,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - ConsString::BodyDescriptor,
|
| - void>::Visit);
|
| + &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor,
|
| + void>::Visit);
|
|
|
| table_.Register(kVisitConsString,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - ConsString::BodyDescriptor,
|
| - void>::Visit);
|
| + &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor,
|
| + void>::Visit);
|
|
|
| table_.Register(kVisitSlicedString,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - SlicedString::BodyDescriptor,
|
| - void>::Visit);
|
| + &FixedBodyVisitor<StaticVisitor, SlicedString::BodyDescriptor,
|
| + void>::Visit);
|
|
|
| - table_.Register(kVisitSymbol,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - Symbol::BodyDescriptor,
|
| - void>::Visit);
|
| + table_.Register(
|
| + kVisitSymbol,
|
| + &FixedBodyVisitor<StaticVisitor, Symbol::BodyDescriptor, void>::Visit);
|
|
|
| table_.Register(kVisitFixedArray, &FixedArrayVisitor::Visit);
|
|
|
| @@ -182,10 +165,9 @@ void StaticMarkingVisitor<StaticVisitor>::Initialize() {
|
|
|
| table_.Register(kVisitJSWeakCollection, &VisitWeakCollection);
|
|
|
| - table_.Register(kVisitOddball,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - Oddball::BodyDescriptor,
|
| - void>::Visit);
|
| + table_.Register(
|
| + kVisitOddball,
|
| + &FixedBodyVisitor<StaticVisitor, Oddball::BodyDescriptor, void>::Visit);
|
|
|
| table_.Register(kVisitMap, &VisitMap);
|
|
|
| @@ -203,28 +185,24 @@ void StaticMarkingVisitor<StaticVisitor>::Initialize() {
|
|
|
| // Registration for kVisitJSRegExp is done by StaticVisitor.
|
|
|
| - table_.Register(kVisitCell,
|
| - &FixedBodyVisitor<StaticVisitor,
|
| - Cell::BodyDescriptor,
|
| - void>::Visit);
|
| + table_.Register(
|
| + kVisitCell,
|
| + &FixedBodyVisitor<StaticVisitor, Cell::BodyDescriptor, void>::Visit);
|
|
|
| table_.Register(kVisitPropertyCell, &VisitPropertyCell);
|
|
|
| - table_.template RegisterSpecializations<DataObjectVisitor,
|
| - kVisitDataObject,
|
| + table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject,
|
| kVisitDataObjectGeneric>();
|
|
|
| - table_.template RegisterSpecializations<JSObjectVisitor,
|
| - kVisitJSObject,
|
| + table_.template RegisterSpecializations<JSObjectVisitor, kVisitJSObject,
|
| kVisitJSObjectGeneric>();
|
|
|
| - table_.template RegisterSpecializations<StructObjectVisitor,
|
| - kVisitStruct,
|
| + table_.template RegisterSpecializations<StructObjectVisitor, kVisitStruct,
|
| kVisitStructGeneric>();
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitCodeEntry(
|
| Heap* heap, Address entry_address) {
|
| Code* code = Code::cast(Code::GetObjectFromEntryAddress(entry_address));
|
| @@ -233,7 +211,7 @@ void StaticMarkingVisitor<StaticVisitor>::VisitCodeEntry(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitEmbeddedPointer(
|
| Heap* heap, RelocInfo* rinfo) {
|
| DCHECK(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT);
|
| @@ -248,9 +226,9 @@ void StaticMarkingVisitor<StaticVisitor>::VisitEmbeddedPointer(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitCell(
|
| - Heap* heap, RelocInfo* rinfo) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitCell(Heap* heap,
|
| + RelocInfo* rinfo) {
|
| DCHECK(rinfo->rmode() == RelocInfo::CELL);
|
| Cell* cell = rinfo->target_cell();
|
| // No need to record slots because the cell space is not compacted during GC.
|
| @@ -260,9 +238,9 @@ void StaticMarkingVisitor<StaticVisitor>::VisitCell(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitDebugTarget(
|
| - Heap* heap, RelocInfo* rinfo) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitDebugTarget(Heap* heap,
|
| + RelocInfo* rinfo) {
|
| DCHECK((RelocInfo::IsJSReturn(rinfo->rmode()) &&
|
| rinfo->IsPatchedReturnSequence()) ||
|
| (RelocInfo::IsDebugBreakSlot(rinfo->rmode()) &&
|
| @@ -273,20 +251,20 @@ void StaticMarkingVisitor<StaticVisitor>::VisitDebugTarget(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitCodeTarget(
|
| - Heap* heap, RelocInfo* rinfo) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitCodeTarget(Heap* heap,
|
| + RelocInfo* rinfo) {
|
| DCHECK(RelocInfo::IsCodeTarget(rinfo->rmode()));
|
| Code* target = Code::GetCodeFromTargetAddress(rinfo->target_address());
|
| // Monomorphic ICs are preserved when possible, but need to be flushed
|
| // when they might be keeping a Context alive, or when the heap is about
|
| // to be serialized.
|
| - if (FLAG_cleanup_code_caches_at_gc && target->is_inline_cache_stub()
|
| - && (target->ic_state() == MEGAMORPHIC || target->ic_state() == GENERIC ||
|
| - target->ic_state() == POLYMORPHIC || heap->flush_monomorphic_ics() ||
|
| - heap->isolate()->serializer_enabled() ||
|
| - target->ic_age() != heap->global_ic_age() ||
|
| - target->is_invalidated_weak_stub())) {
|
| + if (FLAG_cleanup_code_caches_at_gc && target->is_inline_cache_stub() &&
|
| + (target->ic_state() == MEGAMORPHIC || target->ic_state() == GENERIC ||
|
| + target->ic_state() == POLYMORPHIC || heap->flush_monomorphic_ics() ||
|
| + heap->isolate()->serializer_enabled() ||
|
| + target->ic_age() != heap->global_ic_age() ||
|
| + target->is_invalidated_weak_stub())) {
|
| IC::Clear(heap->isolate(), rinfo->pc(), rinfo->host()->constant_pool());
|
| target = Code::GetCodeFromTargetAddress(rinfo->target_address());
|
| }
|
| @@ -295,7 +273,7 @@ void StaticMarkingVisitor<StaticVisitor>::VisitCodeTarget(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitCodeAgeSequence(
|
| Heap* heap, RelocInfo* rinfo) {
|
| DCHECK(RelocInfo::IsCodeAgeSequence(rinfo->rmode()));
|
| @@ -306,16 +284,14 @@ void StaticMarkingVisitor<StaticVisitor>::VisitCodeAgeSequence(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitNativeContext(
|
| Map* map, HeapObject* object) {
|
| - FixedBodyVisitor<StaticVisitor,
|
| - Context::MarkCompactBodyDescriptor,
|
| + FixedBodyVisitor<StaticVisitor, Context::MarkCompactBodyDescriptor,
|
| void>::Visit(map, object);
|
|
|
| MarkCompactCollector* collector = map->GetHeap()->mark_compact_collector();
|
| - for (int idx = Context::FIRST_WEAK_SLOT;
|
| - idx < Context::NATIVE_CONTEXT_SLOTS;
|
| + for (int idx = Context::FIRST_WEAK_SLOT; idx < Context::NATIVE_CONTEXT_SLOTS;
|
| ++idx) {
|
| Object** slot = Context::cast(object)->RawFieldOfElementAt(idx);
|
| collector->RecordSlot(slot, slot, *slot);
|
| @@ -323,9 +299,9 @@ void StaticMarkingVisitor<StaticVisitor>::VisitNativeContext(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitMap(
|
| - Map* map, HeapObject* object) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitMap(Map* map,
|
| + HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| Map* map_object = Map::cast(object);
|
|
|
| @@ -339,14 +315,14 @@ void StaticMarkingVisitor<StaticVisitor>::VisitMap(
|
| if (FLAG_collect_maps && map_object->CanTransition()) {
|
| MarkMapContents(heap, map_object);
|
| } else {
|
| - StaticVisitor::VisitPointers(heap,
|
| - HeapObject::RawField(object, Map::kPointerFieldsBeginOffset),
|
| + StaticVisitor::VisitPointers(
|
| + heap, HeapObject::RawField(object, Map::kPointerFieldsBeginOffset),
|
| HeapObject::RawField(object, Map::kPointerFieldsEndOffset));
|
| }
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitPropertyCell(
|
| Map* map, HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| @@ -364,13 +340,14 @@ void StaticMarkingVisitor<StaticVisitor>::VisitPropertyCell(
|
| StaticVisitor::VisitPointer(heap, slot);
|
| }
|
|
|
| - StaticVisitor::VisitPointers(heap,
|
| + StaticVisitor::VisitPointers(
|
| + heap,
|
| HeapObject::RawField(object, PropertyCell::kPointerFieldsBeginOffset),
|
| HeapObject::RawField(object, PropertyCell::kPointerFieldsEndOffset));
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitAllocationSite(
|
| Map* map, HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| @@ -389,13 +366,14 @@ void StaticMarkingVisitor<StaticVisitor>::VisitAllocationSite(
|
| StaticVisitor::VisitPointer(heap, slot);
|
| }
|
|
|
| - StaticVisitor::VisitPointers(heap,
|
| + StaticVisitor::VisitPointers(
|
| + heap,
|
| HeapObject::RawField(object, AllocationSite::kPointerFieldsBeginOffset),
|
| HeapObject::RawField(object, AllocationSite::kPointerFieldsEndOffset));
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitWeakCollection(
|
| Map* map, HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| @@ -410,13 +388,13 @@ void StaticMarkingVisitor<StaticVisitor>::VisitWeakCollection(
|
|
|
| // Skip visiting the backing hash table containing the mappings and the
|
| // pointer to the other enqueued weak collections, both are post-processed.
|
| - StaticVisitor::VisitPointers(heap,
|
| - HeapObject::RawField(object, JSWeakCollection::kPropertiesOffset),
|
| + StaticVisitor::VisitPointers(
|
| + heap, HeapObject::RawField(object, JSWeakCollection::kPropertiesOffset),
|
| HeapObject::RawField(object, JSWeakCollection::kTableOffset));
|
| STATIC_ASSERT(JSWeakCollection::kTableOffset + kPointerSize ==
|
| - JSWeakCollection::kNextOffset);
|
| + JSWeakCollection::kNextOffset);
|
| STATIC_ASSERT(JSWeakCollection::kNextOffset + kPointerSize ==
|
| - JSWeakCollection::kSize);
|
| + JSWeakCollection::kSize);
|
|
|
| // Partially initialized weak collection is enqueued, but table is ignored.
|
| if (!weak_collection->table()->IsHashTable()) return;
|
| @@ -429,9 +407,9 @@ void StaticMarkingVisitor<StaticVisitor>::VisitWeakCollection(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitCode(
|
| - Map* map, HeapObject* object) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitCode(Map* map,
|
| + HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| Code* code = Code::cast(object);
|
| if (FLAG_age_code && !heap->isolate()->serializer_enabled()) {
|
| @@ -441,7 +419,7 @@ void StaticMarkingVisitor<StaticVisitor>::VisitCode(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitSharedFunctionInfo(
|
| Map* map, HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| @@ -452,8 +430,7 @@ void StaticMarkingVisitor<StaticVisitor>::VisitSharedFunctionInfo(
|
| if (FLAG_cleanup_code_caches_at_gc) {
|
| shared->ClearTypeFeedbackInfo();
|
| }
|
| - if (FLAG_cache_optimized_code &&
|
| - FLAG_flush_optimized_code_cache &&
|
| + if (FLAG_cache_optimized_code && FLAG_flush_optimized_code_cache &&
|
| !shared->optimized_code_map()->IsSmi()) {
|
| // Always flush the optimized code map if requested by flag.
|
| shared->ClearOptimizedCodeMap();
|
| @@ -492,7 +469,7 @@ void StaticMarkingVisitor<StaticVisitor>::VisitSharedFunctionInfo(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitConstantPoolArray(
|
| Map* map, HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| @@ -511,10 +488,10 @@ void StaticMarkingVisitor<StaticVisitor>::VisitConstantPoolArray(
|
| heap->mark_compact_collector()->RecordSlot(slot, slot, object);
|
| bool is_weak_object =
|
| (array->get_weak_object_state() ==
|
| - ConstantPoolArray::WEAK_OBJECTS_IN_OPTIMIZED_CODE &&
|
| + ConstantPoolArray::WEAK_OBJECTS_IN_OPTIMIZED_CODE &&
|
| Code::IsWeakObjectInOptimizedCode(object)) ||
|
| (array->get_weak_object_state() ==
|
| - ConstantPoolArray::WEAK_OBJECTS_IN_IC &&
|
| + ConstantPoolArray::WEAK_OBJECTS_IN_IC &&
|
| Code::IsWeakObjectInIC(object));
|
| if (!is_weak_object) {
|
| StaticVisitor::MarkObject(heap, object);
|
| @@ -523,9 +500,9 @@ void StaticMarkingVisitor<StaticVisitor>::VisitConstantPoolArray(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitJSFunction(
|
| - Map* map, HeapObject* object) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitJSFunction(Map* map,
|
| + HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
| JSFunction* function = JSFunction::cast(object);
|
| MarkCompactCollector* collector = heap->mark_compact_collector();
|
| @@ -561,38 +538,36 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSFunction(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitJSRegExp(
|
| - Map* map, HeapObject* object) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitJSRegExp(Map* map,
|
| + HeapObject* object) {
|
| int last_property_offset =
|
| JSRegExp::kSize + kPointerSize * map->inobject_properties();
|
| - StaticVisitor::VisitPointers(map->GetHeap(),
|
| - HeapObject::RawField(object, JSRegExp::kPropertiesOffset),
|
| + StaticVisitor::VisitPointers(
|
| + map->GetHeap(), HeapObject::RawField(object, JSRegExp::kPropertiesOffset),
|
| HeapObject::RawField(object, last_property_offset));
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitJSArrayBuffer(
|
| Map* map, HeapObject* object) {
|
| Heap* heap = map->GetHeap();
|
|
|
| - STATIC_ASSERT(
|
| - JSArrayBuffer::kWeakFirstViewOffset ==
|
| - JSArrayBuffer::kWeakNextOffset + kPointerSize);
|
| + STATIC_ASSERT(JSArrayBuffer::kWeakFirstViewOffset ==
|
| + JSArrayBuffer::kWeakNextOffset + kPointerSize);
|
| StaticVisitor::VisitPointers(
|
| heap,
|
| HeapObject::RawField(object, JSArrayBuffer::BodyDescriptor::kStartOffset),
|
| HeapObject::RawField(object, JSArrayBuffer::kWeakNextOffset));
|
| StaticVisitor::VisitPointers(
|
| - heap,
|
| - HeapObject::RawField(object,
|
| - JSArrayBuffer::kWeakNextOffset + 2 * kPointerSize),
|
| + heap, HeapObject::RawField(
|
| + object, JSArrayBuffer::kWeakNextOffset + 2 * kPointerSize),
|
| HeapObject::RawField(object, JSArrayBuffer::kSizeWithInternalFields));
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitJSTypedArray(
|
| Map* map, HeapObject* object) {
|
| StaticVisitor::VisitPointers(
|
| @@ -600,31 +575,29 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSTypedArray(
|
| HeapObject::RawField(object, JSTypedArray::BodyDescriptor::kStartOffset),
|
| HeapObject::RawField(object, JSTypedArray::kWeakNextOffset));
|
| StaticVisitor::VisitPointers(
|
| - map->GetHeap(),
|
| - HeapObject::RawField(object,
|
| - JSTypedArray::kWeakNextOffset + kPointerSize),
|
| + map->GetHeap(), HeapObject::RawField(
|
| + object, JSTypedArray::kWeakNextOffset + kPointerSize),
|
| HeapObject::RawField(object, JSTypedArray::kSizeWithInternalFields));
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::VisitJSDataView(
|
| - Map* map, HeapObject* object) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::VisitJSDataView(Map* map,
|
| + HeapObject* object) {
|
| StaticVisitor::VisitPointers(
|
| map->GetHeap(),
|
| HeapObject::RawField(object, JSDataView::BodyDescriptor::kStartOffset),
|
| HeapObject::RawField(object, JSDataView::kWeakNextOffset));
|
| StaticVisitor::VisitPointers(
|
| map->GetHeap(),
|
| - HeapObject::RawField(object,
|
| - JSDataView::kWeakNextOffset + kPointerSize),
|
| + HeapObject::RawField(object, JSDataView::kWeakNextOffset + kPointerSize),
|
| HeapObject::RawField(object, JSDataView::kSizeWithInternalFields));
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::MarkMapContents(
|
| - Heap* heap, Map* map) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::MarkMapContents(Heap* heap,
|
| + Map* map) {
|
| // Make sure that the back pointer stored either in the map itself or
|
| // inside its transitions array is marked. Skip recording the back
|
| // pointer slot since map space is not compacted.
|
| @@ -647,16 +620,15 @@ void StaticMarkingVisitor<StaticVisitor>::MarkMapContents(
|
| DescriptorArray* descriptors = map->instance_descriptors();
|
| if (StaticVisitor::MarkObjectWithoutPush(heap, descriptors) &&
|
| descriptors->length() > 0) {
|
| - StaticVisitor::VisitPointers(heap,
|
| - descriptors->GetFirstElementAddress(),
|
| - descriptors->GetDescriptorEndSlot(0));
|
| + StaticVisitor::VisitPointers(heap, descriptors->GetFirstElementAddress(),
|
| + descriptors->GetDescriptorEndSlot(0));
|
| }
|
| int start = 0;
|
| int end = map->NumberOfOwnDescriptors();
|
| if (start < end) {
|
| StaticVisitor::VisitPointers(heap,
|
| - descriptors->GetDescriptorStartSlot(start),
|
| - descriptors->GetDescriptorEndSlot(end));
|
| + descriptors->GetDescriptorStartSlot(start),
|
| + descriptors->GetDescriptorEndSlot(end));
|
| }
|
|
|
| // Mark prototype dependent codes array but do not push it onto marking
|
| @@ -670,13 +642,13 @@ void StaticMarkingVisitor<StaticVisitor>::MarkMapContents(
|
| // Mark the pointer fields of the Map. Since the transitions array has
|
| // been marked already, it is fine that one of these fields contains a
|
| // pointer to it.
|
| - StaticVisitor::VisitPointers(heap,
|
| - HeapObject::RawField(map, Map::kPointerFieldsBeginOffset),
|
| + StaticVisitor::VisitPointers(
|
| + heap, HeapObject::RawField(map, Map::kPointerFieldsBeginOffset),
|
| HeapObject::RawField(map, Map::kPointerFieldsEndOffset));
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::MarkTransitionArray(
|
| Heap* heap, TransitionArray* transitions) {
|
| if (!StaticVisitor::MarkObjectWithoutPush(heap, transitions)) return;
|
| @@ -700,9 +672,9 @@ void StaticMarkingVisitor<StaticVisitor>::MarkTransitionArray(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -void StaticMarkingVisitor<StaticVisitor>::MarkInlinedFunctionsCode(
|
| - Heap* heap, Code* code) {
|
| +template <typename StaticVisitor>
|
| +void StaticMarkingVisitor<StaticVisitor>::MarkInlinedFunctionsCode(Heap* heap,
|
| + Code* code) {
|
| // Skip in absence of inlining.
|
| // TODO(turbofan): Revisit once we support inlining.
|
| if (code->is_turbofanned()) return;
|
| @@ -712,8 +684,7 @@ void StaticMarkingVisitor<StaticVisitor>::MarkInlinedFunctionsCode(
|
| DeoptimizationInputData* data =
|
| DeoptimizationInputData::cast(code->deoptimization_data());
|
| FixedArray* literals = data->LiteralArray();
|
| - for (int i = 0, count = data->InlinedFunctionCount()->value();
|
| - i < count;
|
| + for (int i = 0, count = data->InlinedFunctionCount()->value(); i < count;
|
| i++) {
|
| JSFunction* inlined = JSFunction::cast(literals->get(i));
|
| StaticVisitor::MarkObject(heap, inlined->shared()->code());
|
| @@ -723,20 +694,20 @@ void StaticMarkingVisitor<StaticVisitor>::MarkInlinedFunctionsCode(
|
|
|
| inline static bool IsValidNonBuiltinContext(Object* context) {
|
| return context->IsContext() &&
|
| - !Context::cast(context)->global_object()->IsJSBuiltinsObject();
|
| + !Context::cast(context)->global_object()->IsJSBuiltinsObject();
|
| }
|
|
|
|
|
| inline static bool HasSourceCode(Heap* heap, SharedFunctionInfo* info) {
|
| Object* undefined = heap->undefined_value();
|
| return (info->script() != undefined) &&
|
| - (reinterpret_cast<Script*>(info->script())->source() != undefined);
|
| + (reinterpret_cast<Script*>(info->script())->source() != undefined);
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| -bool StaticMarkingVisitor<StaticVisitor>::IsFlushable(
|
| - Heap* heap, JSFunction* function) {
|
| +template <typename StaticVisitor>
|
| +bool StaticMarkingVisitor<StaticVisitor>::IsFlushable(Heap* heap,
|
| + JSFunction* function) {
|
| SharedFunctionInfo* shared_info = function->shared();
|
|
|
| // Code is either on stack, in compilation cache or referenced
|
| @@ -765,7 +736,7 @@ bool StaticMarkingVisitor<StaticVisitor>::IsFlushable(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| bool StaticMarkingVisitor<StaticVisitor>::IsFlushable(
|
| Heap* heap, SharedFunctionInfo* shared_info) {
|
| // Code is either on stack, in compilation cache or referenced
|
| @@ -823,20 +794,18 @@ bool StaticMarkingVisitor<StaticVisitor>::IsFlushable(
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitSharedFunctionInfoStrongCode(
|
| Heap* heap, HeapObject* object) {
|
| - Object** start_slot =
|
| - HeapObject::RawField(object,
|
| - SharedFunctionInfo::BodyDescriptor::kStartOffset);
|
| - Object** end_slot =
|
| - HeapObject::RawField(object,
|
| - SharedFunctionInfo::BodyDescriptor::kEndOffset);
|
| + Object** start_slot = HeapObject::RawField(
|
| + object, SharedFunctionInfo::BodyDescriptor::kStartOffset);
|
| + Object** end_slot = HeapObject::RawField(
|
| + object, SharedFunctionInfo::BodyDescriptor::kEndOffset);
|
| StaticVisitor::VisitPointers(heap, start_slot, end_slot);
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitSharedFunctionInfoWeakCode(
|
| Heap* heap, HeapObject* object) {
|
| Object** name_slot =
|
| @@ -845,21 +814,19 @@ void StaticMarkingVisitor<StaticVisitor>::VisitSharedFunctionInfoWeakCode(
|
|
|
| // Skip visiting kCodeOffset as it is treated weakly here.
|
| STATIC_ASSERT(SharedFunctionInfo::kNameOffset + kPointerSize ==
|
| - SharedFunctionInfo::kCodeOffset);
|
| + SharedFunctionInfo::kCodeOffset);
|
| STATIC_ASSERT(SharedFunctionInfo::kCodeOffset + kPointerSize ==
|
| - SharedFunctionInfo::kOptimizedCodeMapOffset);
|
| + SharedFunctionInfo::kOptimizedCodeMapOffset);
|
|
|
| Object** start_slot =
|
| - HeapObject::RawField(object,
|
| - SharedFunctionInfo::kOptimizedCodeMapOffset);
|
| - Object** end_slot =
|
| - HeapObject::RawField(object,
|
| - SharedFunctionInfo::BodyDescriptor::kEndOffset);
|
| + HeapObject::RawField(object, SharedFunctionInfo::kOptimizedCodeMapOffset);
|
| + Object** end_slot = HeapObject::RawField(
|
| + object, SharedFunctionInfo::BodyDescriptor::kEndOffset);
|
| StaticVisitor::VisitPointers(heap, start_slot, end_slot);
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitJSFunctionStrongCode(
|
| Heap* heap, HeapObject* object) {
|
| Object** start_slot =
|
| @@ -870,17 +837,16 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSFunctionStrongCode(
|
|
|
| VisitCodeEntry(heap, object->address() + JSFunction::kCodeEntryOffset);
|
| STATIC_ASSERT(JSFunction::kCodeEntryOffset + kPointerSize ==
|
| - JSFunction::kPrototypeOrInitialMapOffset);
|
| + JSFunction::kPrototypeOrInitialMapOffset);
|
|
|
| start_slot =
|
| HeapObject::RawField(object, JSFunction::kPrototypeOrInitialMapOffset);
|
| - end_slot =
|
| - HeapObject::RawField(object, JSFunction::kNonWeakFieldsEndOffset);
|
| + end_slot = HeapObject::RawField(object, JSFunction::kNonWeakFieldsEndOffset);
|
| StaticVisitor::VisitPointers(heap, start_slot, end_slot);
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void StaticMarkingVisitor<StaticVisitor>::VisitJSFunctionWeakCode(
|
| Heap* heap, HeapObject* object) {
|
| Object** start_slot =
|
| @@ -891,12 +857,11 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSFunctionWeakCode(
|
|
|
| // Skip visiting kCodeEntryOffset as it is treated weakly here.
|
| STATIC_ASSERT(JSFunction::kCodeEntryOffset + kPointerSize ==
|
| - JSFunction::kPrototypeOrInitialMapOffset);
|
| + JSFunction::kPrototypeOrInitialMapOffset);
|
|
|
| start_slot =
|
| HeapObject::RawField(object, JSFunction::kPrototypeOrInitialMapOffset);
|
| - end_slot =
|
| - HeapObject::RawField(object, JSFunction::kNonWeakFieldsEndOffset);
|
| + end_slot = HeapObject::RawField(object, JSFunction::kNonWeakFieldsEndOffset);
|
| StaticVisitor::VisitPointers(heap, start_slot, end_slot);
|
| }
|
|
|
| @@ -927,7 +892,7 @@ void Code::CodeIterateBody(ObjectVisitor* v) {
|
| }
|
|
|
|
|
| -template<typename StaticVisitor>
|
| +template <typename StaticVisitor>
|
| void Code::CodeIterateBody(Heap* heap) {
|
| int mode_mask = RelocInfo::kCodeTargetMask |
|
| RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) |
|
| @@ -943,8 +908,7 @@ void Code::CodeIterateBody(Heap* heap) {
|
| heap,
|
| reinterpret_cast<Object**>(this->address() + kRelocationInfoOffset));
|
| StaticVisitor::VisitPointer(
|
| - heap,
|
| - reinterpret_cast<Object**>(this->address() + kHandlerTableOffset));
|
| + heap, reinterpret_cast<Object**>(this->address() + kHandlerTableOffset));
|
| StaticVisitor::VisitPointer(
|
| heap,
|
| reinterpret_cast<Object**>(this->address() + kDeoptimizationDataOffset));
|
| @@ -952,11 +916,9 @@ void Code::CodeIterateBody(Heap* heap) {
|
| heap,
|
| reinterpret_cast<Object**>(this->address() + kTypeFeedbackInfoOffset));
|
| StaticVisitor::VisitNextCodeLink(
|
| - heap,
|
| - reinterpret_cast<Object**>(this->address() + kNextCodeLinkOffset));
|
| + heap, reinterpret_cast<Object**>(this->address() + kNextCodeLinkOffset));
|
| StaticVisitor::VisitPointer(
|
| - heap,
|
| - reinterpret_cast<Object**>(this->address() + kConstantPoolOffset));
|
| + heap, reinterpret_cast<Object**>(this->address() + kConstantPoolOffset));
|
|
|
|
|
| RelocIterator it(this, mode_mask);
|
| @@ -964,8 +926,7 @@ void Code::CodeIterateBody(Heap* heap) {
|
| it.rinfo()->template Visit<StaticVisitor>(heap);
|
| }
|
| }
|
| -
|
| -
|
| -} } // namespace v8::internal
|
| +}
|
| +} // namespace v8::internal
|
|
|
| #endif // V8_OBJECTS_VISITING_INL_H_
|
|
|