| Index: src/heap/heap.cc | 
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc | 
| index d8cb6a1be6bc0c95238a3bbc772b7b02f20e2faf..07c361f19fa0afe87c3c1df31e4083dd9f80907f 100644 | 
| --- a/src/heap/heap.cc | 
| +++ b/src/heap/heap.cc | 
| @@ -819,7 +819,7 @@ void Heap::FinalizeIncrementalMarking(const char* gc_reason) { | 
| PrintF("[IncrementalMarking] (%s).\n", gc_reason); | 
| } | 
|  | 
| -  GCTracer::Scope gc_scope(tracer(), GCTracer::Scope::MC_INCREMENTAL_FINALIZE); | 
| +  TRACE_GC(tracer(), GCTracer::Scope::MC_INCREMENTAL_FINALIZE); | 
| HistogramTimerScope incremental_marking_scope( | 
| isolate()->counters()->gc_incremental_marking_finalize()); | 
| TRACE_EVENT0("v8", "V8.GCIncrementalMarkingFinalize"); | 
| @@ -828,8 +828,7 @@ void Heap::FinalizeIncrementalMarking(const char* gc_reason) { | 
| GCCallbacksScope scope(this); | 
| if (scope.CheckReenter()) { | 
| AllowHeapAllocation allow_allocation; | 
| -      GCTracer::Scope scope(tracer(), | 
| -                            GCTracer::Scope::MC_INCREMENTAL_EXTERNAL_PROLOGUE); | 
| +      TRACE_GC(tracer(), GCTracer::Scope::MC_INCREMENTAL_EXTERNAL_PROLOGUE); | 
| VMState<EXTERNAL> state(isolate_); | 
| HandleScope handle_scope(isolate_); | 
| CallGCPrologueCallbacks(kGCTypeIncrementalMarking, kNoGCCallbackFlags); | 
| @@ -840,8 +839,7 @@ void Heap::FinalizeIncrementalMarking(const char* gc_reason) { | 
| GCCallbacksScope scope(this); | 
| if (scope.CheckReenter()) { | 
| AllowHeapAllocation allow_allocation; | 
| -      GCTracer::Scope scope(tracer(), | 
| -                            GCTracer::Scope::MC_INCREMENTAL_EXTERNAL_EPILOGUE); | 
| +      TRACE_GC(tracer(), GCTracer::Scope::MC_INCREMENTAL_EXTERNAL_EPILOGUE); | 
| VMState<EXTERNAL> state(isolate_); | 
| HandleScope handle_scope(isolate_); | 
| CallGCEpilogueCallbacks(kGCTypeIncrementalMarking, kNoGCCallbackFlags); | 
| @@ -1291,10 +1289,9 @@ bool Heap::PerformGarbageCollection( | 
| GCCallbacksScope scope(this); | 
| if (scope.CheckReenter()) { | 
| AllowHeapAllocation allow_allocation; | 
| -      GCTracer::Scope scope(tracer(), | 
| -                            collector == MARK_COMPACTOR | 
| -                                ? GCTracer::Scope::MC_EXTERNAL_PROLOGUE | 
| -                                : GCTracer::Scope::SCAVENGER_EXTERNAL_PROLOGUE); | 
| +      TRACE_GC(tracer(), collector == MARK_COMPACTOR | 
| +                             ? GCTracer::Scope::MC_EXTERNAL_PROLOGUE | 
| +                             : GCTracer::Scope::SCAVENGER_EXTERNAL_PROLOGUE); | 
| VMState<EXTERNAL> state(isolate_); | 
| HandleScope handle_scope(isolate_); | 
| CallGCPrologueCallbacks(gc_type, kNoGCCallbackFlags); | 
| @@ -1341,8 +1338,7 @@ bool Heap::PerformGarbageCollection( | 
| gc_post_processing_depth_++; | 
| { | 
| AllowHeapAllocation allow_allocation; | 
| -    GCTracer::Scope scope(tracer(), | 
| -                          GCTracer::Scope::EXTERNAL_WEAK_GLOBAL_HANDLES); | 
| +    TRACE_GC(tracer(), GCTracer::Scope::EXTERNAL_WEAK_GLOBAL_HANDLES); | 
| freed_global_handles = | 
| isolate_->global_handles()->PostGarbageCollectionProcessing( | 
| collector, gc_callback_flags); | 
| @@ -1372,10 +1368,9 @@ bool Heap::PerformGarbageCollection( | 
| GCCallbacksScope scope(this); | 
| if (scope.CheckReenter()) { | 
| AllowHeapAllocation allow_allocation; | 
| -      GCTracer::Scope scope(tracer(), | 
| -                            collector == MARK_COMPACTOR | 
| -                                ? GCTracer::Scope::MC_EXTERNAL_EPILOGUE | 
| -                                : GCTracer::Scope::SCAVENGER_EXTERNAL_EPILOGUE); | 
| +      TRACE_GC(tracer(), collector == MARK_COMPACTOR | 
| +                             ? GCTracer::Scope::MC_EXTERNAL_EPILOGUE | 
| +                             : GCTracer::Scope::SCAVENGER_EXTERNAL_EPILOGUE); | 
| VMState<EXTERNAL> state(isolate_); | 
| HandleScope handle_scope(isolate_); | 
| CallGCEpilogueCallbacks(gc_type, gc_callback_flags); | 
| @@ -1628,7 +1623,7 @@ class ScavengeWeakObjectRetainer : public WeakObjectRetainer { | 
|  | 
|  | 
| void Heap::Scavenge() { | 
| -  GCTracer::Scope gc_scope(tracer(), GCTracer::Scope::SCAVENGER_SCAVENGE); | 
| +  TRACE_GC(tracer(), GCTracer::Scope::SCAVENGER_SCAVENGE); | 
| RelocationLock relocation_lock(this); | 
| // There are soft limits in the allocation code, designed to trigger a mark | 
| // sweep collection by failing allocations. There is no sense in trying to | 
| @@ -1689,20 +1684,19 @@ void Heap::Scavenge() { | 
|  | 
| { | 
| // Copy roots. | 
| -    GCTracer::Scope gc_scope(tracer(), GCTracer::Scope::SCAVENGER_ROOTS); | 
| +    TRACE_GC(tracer(), GCTracer::Scope::SCAVENGER_ROOTS); | 
| IterateRoots(&scavenge_visitor, VISIT_ALL_IN_SCAVENGE); | 
| } | 
|  | 
| { | 
| // Copy objects reachable from the old generation. | 
| -    GCTracer::Scope gc_scope(tracer(), | 
| -                             GCTracer::Scope::SCAVENGER_OLD_TO_NEW_POINTERS); | 
| +    TRACE_GC(tracer(), GCTracer::Scope::SCAVENGER_OLD_TO_NEW_POINTERS); | 
| RememberedSet<OLD_TO_NEW>::IterateWithWrapper(this, | 
| Scavenger::ScavengeObject); | 
| } | 
|  | 
| { | 
| -    GCTracer::Scope gc_scope(tracer(), GCTracer::Scope::SCAVENGER_WEAK); | 
| +    TRACE_GC(tracer(), GCTracer::Scope::SCAVENGER_WEAK); | 
| // Copy objects reachable from the encountered weak collections list. | 
| scavenge_visitor.VisitPointer(&encountered_weak_collections_); | 
| // Copy objects reachable from the encountered weak cells. | 
| @@ -1711,8 +1705,7 @@ void Heap::Scavenge() { | 
|  | 
| { | 
| // Copy objects reachable from the code flushing candidates list. | 
| -    GCTracer::Scope gc_scope(tracer(), | 
| -                             GCTracer::Scope::SCAVENGER_CODE_FLUSH_CANDIDATES); | 
| +    TRACE_GC(tracer(), GCTracer::Scope::SCAVENGER_CODE_FLUSH_CANDIDATES); | 
| MarkCompactCollector* collector = mark_compact_collector(); | 
| if (collector->is_code_flushing_enabled()) { | 
| collector->code_flusher()->IteratePointersToFromSpace(&scavenge_visitor); | 
| @@ -1720,7 +1713,7 @@ void Heap::Scavenge() { | 
| } | 
|  | 
| { | 
| -    GCTracer::Scope gc_scope(tracer(), GCTracer::Scope::SCAVENGER_SEMISPACE); | 
| +    TRACE_GC(tracer(), GCTracer::Scope::SCAVENGER_SEMISPACE); | 
| new_space_front = DoScavenge(&scavenge_visitor, new_space_front); | 
| } | 
|  | 
| @@ -1732,8 +1725,7 @@ void Heap::Scavenge() { | 
| &scavenge_visitor); | 
| new_space_front = DoScavenge(&scavenge_visitor, new_space_front); | 
| } else { | 
| -    GCTracer::Scope gc_scope(tracer(), | 
| -                             GCTracer::Scope::SCAVENGER_OBJECT_GROUPS); | 
| +    TRACE_GC(tracer(), GCTracer::Scope::SCAVENGER_OBJECT_GROUPS); | 
| while (isolate()->global_handles()->IterateObjectGroups( | 
| &scavenge_visitor, &IsUnscavengedHeapObject)) { | 
| new_space_front = DoScavenge(&scavenge_visitor, new_space_front); | 
|  |