v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
gc-tracer.h File Reference
#include <optional>
#include "include/v8-metrics.h"
#include "src/base/compiler-specific.h"
#include "src/base/macros.h"
#include "src/base/ring-buffer.h"
#include "src/common/globals.h"
#include "src/heap/base/bytes.h"
#include "src/init/heap-symbols.h"
#include "src/logging/counters.h"
#include "src/tracing/trace-event.h"
#include "testing/gtest/include/gtest/gtest_prod.h"
Include dependency graph for gc-tracer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::GCTracer
 
struct  v8::internal::GCTracer::IncrementalInfos
 
class  v8::internal::GCTracer::Scope
 
class  v8::internal::GCTracer::Event
 
class  v8::internal::GCTracer::RecordGCPhasesInfo
 
struct  v8::internal::GCTracer::BackgroundCounter
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define TRACE_GC_CATEGORIES    "devtools.timeline," TRACE_DISABLED_BY_DEFAULT("v8.gc")
 
#define TRACE_GC(tracer, scope_id)
 
#define TRACE_GC_ARG1(tracer, scope_id, arg0_name, arg0_value)
 
#define TRACE_GC_WITH_FLOW(tracer, scope_id, bind_id, flow_flags)
 
#define TRACE_GC1(tracer, scope_id, thread_kind)
 
#define TRACE_GC1_WITH_FLOW(tracer, scope_id, thread_kind, bind_id, flow_flags)
 
#define TRACE_GC_EPOCH(tracer, scope_id, thread_kind)
 
#define TRACE_GC_EPOCH_WITH_FLOW(tracer, scope_id, thread_kind, bind_id, flow_flags)
 
#define TRACE_GC_NOTE(note)
 
#define TRACE_GC_NOTE_WITH_FLOW(note, bind_id, flow_flags)
 
#define DEFINE_SCOPE(scope)
 

Typedefs

using v8::internal::CollectionEpoch = uint32_t
 

Enumerations

enum  v8::internal::YoungGenerationSpeedMode { v8::internal::kUpToAndIncludingAtomicPause , v8::internal::kOnlyAtomicPause }
 

Functions

const char * v8::internal::ToString (GCTracer::Event::Type type, bool short_name)
 

Macro Definition Documentation

◆ DEFINE_SCOPE

#define DEFINE_SCOPE ( scope)
Value:
scope,

Definition at line 122 of file gc-tracer.h.

◆ TRACE_GC

#define TRACE_GC ( tracer,
scope_id )
Value:
DCHECK_NE(GCTracer::Scope::MC_SWEEP, scope_id); \
DCHECK_NE(GCTracer::Scope::MC_BACKGROUND_SWEEPING, scope_id); \
GCTracer::Scope UNIQUE_IDENTIFIER(gc_tracer_scope)( \
tracer, GCTracer::Scope::ScopeId(scope_id), ThreadKind::kMain); \
TRACE_EVENT0(TRACE_GC_CATEGORIES, \
GCTracer::Scope::Name(GCTracer::Scope::ScopeId(scope_id)))
#define TRACE_GC_CATEGORIES
Definition gc-tracer.h:29
#define DCHECK_NE(v1, v2)
Definition logging.h:486
#define UNIQUE_IDENTIFIER(base)
Definition macros.h:24

Definition at line 35 of file gc-tracer.h.

◆ TRACE_GC1

#define TRACE_GC1 ( tracer,
scope_id,
thread_kind )
Value:
GCTracer::Scope UNIQUE_IDENTIFIER(gc_tracer_scope)( \
tracer, GCTracer::Scope::ScopeId(scope_id), thread_kind); \
TRACE_EVENT0(TRACE_GC_CATEGORIES, \
GCTracer::Scope::Name(GCTracer::Scope::ScopeId(scope_id)))

Definition at line 62 of file gc-tracer.h.

◆ TRACE_GC1_WITH_FLOW

#define TRACE_GC1_WITH_FLOW ( tracer,
scope_id,
thread_kind,
bind_id,
flow_flags )
Value:
GCTracer::Scope UNIQUE_IDENTIFIER(gc_tracer_scope)( \
tracer, GCTracer::Scope::ScopeId(scope_id), thread_kind); \
TRACE_EVENT_WITH_FLOW0( \
GCTracer::Scope::Name(GCTracer::Scope::ScopeId(scope_id)), bind_id, \
flow_flags)

Definition at line 68 of file gc-tracer.h.

◆ TRACE_GC_ARG1

#define TRACE_GC_ARG1 ( tracer,
scope_id,
arg0_name,
arg0_value )
Value:
DCHECK_NE(GCTracer::Scope::MC_SWEEP, scope_id); \
DCHECK_NE(GCTracer::Scope::MC_BACKGROUND_SWEEPING, scope_id); \
GCTracer::Scope UNIQUE_IDENTIFIER(gc_tracer_scope)( \
tracer, GCTracer::Scope::ScopeId(scope_id), ThreadKind::kMain); \
TRACE_EVENT1(TRACE_GC_CATEGORIES, \
GCTracer::Scope::Name(GCTracer::Scope::ScopeId(scope_id)), \
arg0_name, arg0_value)

Definition at line 43 of file gc-tracer.h.

◆ TRACE_GC_CATEGORIES

#define TRACE_GC_CATEGORIES    "devtools.timeline," TRACE_DISABLED_BY_DEFAULT("v8.gc")

Definition at line 29 of file gc-tracer.h.

◆ TRACE_GC_EPOCH

#define TRACE_GC_EPOCH ( tracer,
scope_id,
thread_kind )
Value:
GCTracer::Scope UNIQUE_IDENTIFIER(gc_tracer_scope)( \
tracer, GCTracer::Scope::ScopeId(scope_id), thread_kind); \
TRACE_EVENT1(TRACE_GC_CATEGORIES, \
GCTracer::Scope::Name(GCTracer::Scope::ScopeId(scope_id)), \
"epoch", tracer->CurrentEpoch(scope_id))

Definition at line 77 of file gc-tracer.h.

◆ TRACE_GC_EPOCH_WITH_FLOW

#define TRACE_GC_EPOCH_WITH_FLOW ( tracer,
scope_id,
thread_kind,
bind_id,
flow_flags )
Value:
GCTracer::Scope UNIQUE_IDENTIFIER(gc_tracer_scope)( \
tracer, GCTracer::Scope::ScopeId(scope_id), thread_kind); \
TRACE_EVENT_WITH_FLOW1( \
GCTracer::Scope::Name(GCTracer::Scope::ScopeId(scope_id)), bind_id, \
flow_flags, "epoch", tracer->CurrentEpoch(scope_id))

Definition at line 84 of file gc-tracer.h.

◆ TRACE_GC_NOTE

#define TRACE_GC_NOTE ( note)
Value:
do { \
TRACE_EVENT0(TRACE_GC_CATEGORIES, note); \
} while (0)

Definition at line 93 of file gc-tracer.h.

◆ TRACE_GC_NOTE_WITH_FLOW

#define TRACE_GC_NOTE_WITH_FLOW ( note,
bind_id,
flow_flags )
Value:
do { \
TRACE_EVENT_WITH_FLOW0(TRACE_GC_CATEGORIES, note, bind_id, flow_flags); \
} while (0)

Definition at line 98 of file gc-tracer.h.

◆ TRACE_GC_WITH_FLOW

#define TRACE_GC_WITH_FLOW ( tracer,
scope_id,
bind_id,
flow_flags )
Value:
DCHECK_NE(GCTracer::Scope::MC_SWEEP, scope_id); \
DCHECK_NE(GCTracer::Scope::MC_BACKGROUND_SWEEPING, scope_id); \
GCTracer::Scope UNIQUE_IDENTIFIER(gc_tracer_scope)( \
tracer, GCTracer::Scope::ScopeId(scope_id), ThreadKind::kMain); \
TRACE_EVENT_WITH_FLOW0( \
GCTracer::Scope::Name(GCTracer::Scope::ScopeId(scope_id)), bind_id, \
flow_flags)

Definition at line 52 of file gc-tracer.h.