[heap] Remove unnecessary marking specializations
R=hpayer@chromium.org BUG=chromium:651828 Review-Url: https://codereview.chromium.org/2377203003 Cr-Commit-Position: refs/heads/master@{#39917}
This commit is contained in:
parent
db8dcd1a22
commit
a5dfdb755d
@ -179,7 +179,6 @@ class IncrementalMarkingMarkingVisitor
|
||||
StaticMarkingVisitor<IncrementalMarkingMarkingVisitor>::Initialize();
|
||||
table_.Register(kVisitFixedArray, &VisitFixedArrayIncremental);
|
||||
table_.Register(kVisitNativeContext, &VisitNativeContextIncremental);
|
||||
table_.Register(kVisitJSRegExp, &VisitJSRegExp);
|
||||
}
|
||||
|
||||
static const int kProgressBarScanningChunk = 32 * 1024;
|
||||
|
@ -1246,7 +1246,7 @@ class MarkCompactMarkingVisitor
|
||||
Heap* heap = map->GetHeap();
|
||||
MarkCompactCollector* collector = heap->mark_compact_collector();
|
||||
if (!collector->is_code_flushing_enabled()) {
|
||||
VisitJSRegExp(map, object);
|
||||
JSObjectVisitor::Visit(map, object);
|
||||
return;
|
||||
}
|
||||
JSRegExp* re = reinterpret_cast<JSRegExp*>(object);
|
||||
@ -1254,7 +1254,7 @@ class MarkCompactMarkingVisitor
|
||||
UpdateRegExpCodeAgeAndFlush(heap, re, true);
|
||||
UpdateRegExpCodeAgeAndFlush(heap, re, false);
|
||||
// Visit the fields of the RegExp, including the updated FixedArray.
|
||||
VisitJSRegExp(map, object);
|
||||
JSObjectVisitor::Visit(map, object);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -147,11 +147,17 @@ void StaticMarkingVisitor<StaticVisitor>::Initialize() {
|
||||
|
||||
table_.Register(kVisitNativeContext, &VisitNativeContext);
|
||||
|
||||
table_.Register(kVisitAllocationSite, &VisitAllocationSite);
|
||||
table_.Register(
|
||||
kVisitAllocationSite,
|
||||
&FixedBodyVisitor<StaticVisitor, AllocationSite::MarkingBodyDescriptor,
|
||||
void>::Visit);
|
||||
|
||||
table_.Register(kVisitByteArray, &DataObjectVisitor::Visit);
|
||||
|
||||
table_.Register(kVisitBytecodeArray, &VisitBytecodeArray);
|
||||
table_.Register(
|
||||
kVisitBytecodeArray,
|
||||
&FixedBodyVisitor<StaticVisitor, BytecodeArray::MarkingBodyDescriptor,
|
||||
void>::Visit);
|
||||
|
||||
table_.Register(kVisitFreeSpace, &DataObjectVisitor::Visit);
|
||||
|
||||
@ -178,13 +184,15 @@ void StaticMarkingVisitor<StaticVisitor>::Initialize() {
|
||||
&FlexibleBodyVisitor<StaticVisitor, JSArrayBuffer::BodyDescriptor,
|
||||
void>::Visit);
|
||||
|
||||
// Registration for kVisitJSRegExp is done by StaticVisitor.
|
||||
table_.Register(kVisitJSRegExp, &JSObjectVisitor::Visit);
|
||||
|
||||
table_.Register(
|
||||
kVisitCell,
|
||||
&FixedBodyVisitor<StaticVisitor, Cell::BodyDescriptor, void>::Visit);
|
||||
|
||||
table_.Register(kVisitPropertyCell, &VisitPropertyCell);
|
||||
table_.Register(kVisitPropertyCell,
|
||||
&FixedBodyVisitor<StaticVisitor, PropertyCell::BodyDescriptor,
|
||||
void>::Visit);
|
||||
|
||||
table_.Register(kVisitWeakCell, &VisitWeakCell);
|
||||
|
||||
@ -319,19 +327,6 @@ void StaticMarkingVisitor<StaticVisitor>::VisitMap(Map* map,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <typename StaticVisitor>
|
||||
void StaticMarkingVisitor<StaticVisitor>::VisitPropertyCell(
|
||||
Map* map, HeapObject* object) {
|
||||
Heap* heap = map->GetHeap();
|
||||
|
||||
StaticVisitor::VisitPointers(
|
||||
heap, object,
|
||||
HeapObject::RawField(object, PropertyCell::kPointerFieldsBeginOffset),
|
||||
HeapObject::RawField(object, PropertyCell::kPointerFieldsEndOffset));
|
||||
}
|
||||
|
||||
|
||||
template <typename StaticVisitor>
|
||||
void StaticMarkingVisitor<StaticVisitor>::VisitWeakCell(Map* map,
|
||||
HeapObject* object) {
|
||||
@ -384,19 +379,6 @@ void StaticMarkingVisitor<StaticVisitor>::VisitTransitionArray(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <typename StaticVisitor>
|
||||
void StaticMarkingVisitor<StaticVisitor>::VisitAllocationSite(
|
||||
Map* map, HeapObject* object) {
|
||||
Heap* heap = map->GetHeap();
|
||||
|
||||
StaticVisitor::VisitPointers(
|
||||
heap, object,
|
||||
HeapObject::RawField(object, AllocationSite::kPointerFieldsBeginOffset),
|
||||
HeapObject::RawField(object, AllocationSite::kPointerFieldsEndOffset));
|
||||
}
|
||||
|
||||
|
||||
template <typename StaticVisitor>
|
||||
void StaticMarkingVisitor<StaticVisitor>::VisitWeakCollection(
|
||||
Map* map, HeapObject* object) {
|
||||
@ -504,23 +486,6 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSFunction(Map* map,
|
||||
VisitJSFunctionStrongCode(map, object);
|
||||
}
|
||||
|
||||
|
||||
template <typename StaticVisitor>
|
||||
void StaticMarkingVisitor<StaticVisitor>::VisitJSRegExp(Map* map,
|
||||
HeapObject* object) {
|
||||
JSObjectVisitor::Visit(map, object);
|
||||
}
|
||||
|
||||
template <typename StaticVisitor>
|
||||
void StaticMarkingVisitor<StaticVisitor>::VisitBytecodeArray(
|
||||
Map* map, HeapObject* object) {
|
||||
StaticVisitor::VisitPointers(
|
||||
map->GetHeap(), object,
|
||||
HeapObject::RawField(object, BytecodeArray::kConstantPoolOffset),
|
||||
HeapObject::RawField(object, BytecodeArray::kFrameSizeOffset));
|
||||
}
|
||||
|
||||
|
||||
template <typename StaticVisitor>
|
||||
void StaticMarkingVisitor<StaticVisitor>::MarkMapContents(Heap* heap,
|
||||
Map* map) {
|
||||
|
@ -354,7 +354,6 @@ class StaticMarkingVisitor : public StaticVisitorBase {
|
||||
table_.GetVisitor(map)(map, obj);
|
||||
}
|
||||
|
||||
INLINE(static void VisitPropertyCell(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitWeakCell(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitTransitionArray(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitCodeEntry(Heap* heap, HeapObject* object,
|
||||
@ -374,12 +373,9 @@ class StaticMarkingVisitor : public StaticVisitorBase {
|
||||
INLINE(static void VisitMap(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitCode(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitSharedFunctionInfo(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitAllocationSite(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitWeakCollection(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitJSFunction(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitJSRegExp(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitNativeContext(Map* map, HeapObject* object));
|
||||
INLINE(static void VisitBytecodeArray(Map* map, HeapObject* object));
|
||||
|
||||
// Mark pointers in a Map treating some elements of the descriptor array weak.
|
||||
static void MarkMapContents(Heap* heap, Map* map);
|
||||
|
@ -4858,6 +4858,13 @@ class BytecodeArray : public FixedArrayBase {
|
||||
// Maximal length of a single BytecodeArray.
|
||||
static const int kMaxLength = kMaxSize - kHeaderSize;
|
||||
|
||||
static const int kPointerFieldsBeginOffset = kConstantPoolOffset;
|
||||
static const int kPointerFieldsEndOffset = kFrameSizeOffset;
|
||||
|
||||
typedef FixedBodyDescriptor<kPointerFieldsBeginOffset,
|
||||
kPointerFieldsEndOffset, kHeaderSize>
|
||||
MarkingBodyDescriptor;
|
||||
|
||||
class BodyDescriptor;
|
||||
|
||||
private:
|
||||
@ -8920,6 +8927,10 @@ class AllocationSite: public Struct {
|
||||
static const int kPointerFieldsBeginOffset = kTransitionInfoOffset;
|
||||
static const int kPointerFieldsEndOffset = kWeakNextOffset;
|
||||
|
||||
typedef FixedBodyDescriptor<kPointerFieldsBeginOffset,
|
||||
kPointerFieldsEndOffset, kSize>
|
||||
MarkingBodyDescriptor;
|
||||
|
||||
// For other visitors, use the fixed body descriptor below.
|
||||
typedef FixedBodyDescriptor<HeapObject::kHeaderSize, kSize, kSize>
|
||||
BodyDescriptor;
|
||||
@ -10170,9 +10181,6 @@ class PropertyCell : public HeapObject {
|
||||
static const int kDependentCodeOffset = kValueOffset + kPointerSize;
|
||||
static const int kSize = kDependentCodeOffset + kPointerSize;
|
||||
|
||||
static const int kPointerFieldsBeginOffset = kValueOffset;
|
||||
static const int kPointerFieldsEndOffset = kSize;
|
||||
|
||||
typedef FixedBodyDescriptor<kValueOffset,
|
||||
kSize,
|
||||
kSize> BodyDescriptor;
|
||||
|
Loading…
Reference in New Issue
Block a user