| Index: src/heap/mark-compact.cc
|
| diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
|
| index 08472e5b10448949ef761f91de3fbdaedeead34b..2b504e56d58fdd8740d9af92885d68f2b65693de 100644
|
| --- a/src/heap/mark-compact.cc
|
| +++ b/src/heap/mark-compact.cc
|
| @@ -61,7 +61,6 @@ MarkCompactCollector::MarkCompactCollector(Heap* heap)
|
| marking_deque_memory_(NULL),
|
| marking_deque_memory_committed_(0),
|
| code_flusher_(nullptr),
|
| - embedder_heap_tracer_(nullptr),
|
| sweeper_(heap) {
|
| }
|
|
|
| @@ -809,7 +808,7 @@ void MarkCompactCollector::Prepare() {
|
| AbortTransitionArrays();
|
| AbortCompaction();
|
| if (heap_->UsingEmbedderHeapTracer()) {
|
| - heap_->mark_compact_collector()->embedder_heap_tracer()->AbortTracing();
|
| + heap_->embedder_heap_tracer()->AbortTracing();
|
| }
|
| was_marked_incrementally_ = false;
|
| }
|
| @@ -817,12 +816,13 @@ void MarkCompactCollector::Prepare() {
|
| if (!was_marked_incrementally_) {
|
| if (heap_->UsingEmbedderHeapTracer()) {
|
| TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_WRAPPER_PROLOGUE);
|
| - heap_->mark_compact_collector()->embedder_heap_tracer()->TracePrologue();
|
| + heap_->embedder_heap_tracer()->TracePrologue(
|
| + heap_->embedder_reachable_reference_reporter());
|
| }
|
| }
|
|
|
| - if (UsingEmbedderHeapTracer()) {
|
| - embedder_heap_tracer()->EnterFinalPause();
|
| + if (heap_->UsingEmbedderHeapTracer()) {
|
| + heap_->embedder_heap_tracer()->EnterFinalPause();
|
| }
|
|
|
| // Don't start compaction if we are in the middle of incremental
|
| @@ -2085,10 +2085,10 @@ void MarkCompactCollector::ProcessEphemeralMarking(
|
| DCHECK(marking_deque_.IsEmpty() && !marking_deque_.overflowed());
|
| bool work_to_do = true;
|
| while (work_to_do) {
|
| - if (UsingEmbedderHeapTracer()) {
|
| + if (heap_->UsingEmbedderHeapTracer()) {
|
| TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_WRAPPER_TRACING);
|
| - RegisterWrappersWithEmbedderHeapTracer();
|
| - embedder_heap_tracer()->AdvanceTracing(
|
| + heap_->RegisterWrappersWithEmbedderHeapTracer();
|
| + heap_->embedder_heap_tracer()->AdvanceTracing(
|
| 0, EmbedderHeapTracer::AdvanceTracingActions(
|
| EmbedderHeapTracer::ForceCompletionAction::FORCE_COMPLETION));
|
| }
|
| @@ -2202,39 +2202,6 @@ void MarkingDeque::Uninitialize(bool aborting) {
|
| in_use_ = false;
|
| }
|
|
|
| -void MarkCompactCollector::SetEmbedderHeapTracer(EmbedderHeapTracer* tracer) {
|
| - DCHECK_NOT_NULL(tracer);
|
| - CHECK_NULL(embedder_heap_tracer_);
|
| - embedder_heap_tracer_ = tracer;
|
| -}
|
| -
|
| -bool MarkCompactCollector::RequiresImmediateWrapperProcessing() {
|
| - const size_t kTooManyWrappers = 16000;
|
| - return wrappers_to_trace_.size() > kTooManyWrappers;
|
| -}
|
| -
|
| -void MarkCompactCollector::RegisterWrappersWithEmbedderHeapTracer() {
|
| - DCHECK(UsingEmbedderHeapTracer());
|
| - if (wrappers_to_trace_.empty()) {
|
| - return;
|
| - }
|
| - embedder_heap_tracer()->RegisterV8References(wrappers_to_trace_);
|
| - wrappers_to_trace_.clear();
|
| -}
|
| -
|
| -void MarkCompactCollector::TracePossibleWrapper(JSObject* js_object) {
|
| - DCHECK(js_object->WasConstructedFromApiFunction());
|
| - if (js_object->GetInternalFieldCount() >= 2 &&
|
| - js_object->GetInternalField(0) &&
|
| - js_object->GetInternalField(0) != heap_->undefined_value() &&
|
| - js_object->GetInternalField(1) != heap_->undefined_value()) {
|
| - DCHECK(reinterpret_cast<intptr_t>(js_object->GetInternalField(0)) % 2 == 0);
|
| - wrappers_to_trace_.push_back(std::pair<void*, void*>(
|
| - reinterpret_cast<void*>(js_object->GetInternalField(0)),
|
| - reinterpret_cast<void*>(js_object->GetInternalField(1))));
|
| - }
|
| -}
|
| -
|
| class MarkCompactCollector::ObjectStatsVisitor
|
| : public MarkCompactCollector::HeapObjectVisitor {
|
| public:
|
| @@ -2376,9 +2343,9 @@ void MarkCompactCollector::MarkLiveObjects() {
|
| {
|
| TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_WEAK_CLOSURE_HARMONY);
|
| ProcessEphemeralMarking(&root_visitor, true);
|
| - if (UsingEmbedderHeapTracer()) {
|
| + if (heap_->UsingEmbedderHeapTracer()) {
|
| TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_WRAPPER_EPILOGUE);
|
| - embedder_heap_tracer()->TraceEpilogue();
|
| + heap()->embedder_heap_tracer()->TraceEpilogue();
|
| }
|
| }
|
| }
|
|
|