13#if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID) 
   14#define SYMBOLIZE_FUNCTION 
   25#define ADD_EXT_REF_NAME(name, desc) desc, 
   26#define ADD_BUILTIN_NAME(Name, ...) "Builtin_" #Name, 
   27#define ADD_RUNTIME_FUNCTION(name, ...) "Runtime::" #name, 
   28#define ADD_ISOLATE_ADDR(Name, name) "Isolate::" #name "_address", 
   29#define ADD_ACCESSOR_INFO_NAME(_, __, AccessorName, ...) \ 
   30  "Accessors::" #AccessorName "Getter", 
 
   31#define ADD_ACCESSOR_GETTER_NAME(name) "Accessors::" #name, 
   32#define ADD_ACCESSOR_SETTER_NAME(name) "Accessors::" #name, 
   33#define ADD_ACCESSOR_CALLBACK_NAME(_, name, ...) "Accessors::" #name, 
   34#define ADD_STATS_COUNTER_NAME(name, ...) "StatsCounter::" #name, 
   61        "Load StubCache::primary_->key",
 
   62        "Load StubCache::primary_->value",
 
   63        "Load StubCache::primary_->map",
 
   64        "Load StubCache::secondary_->key",
 
   65        "Load StubCache::secondary_->value",
 
   66        "Load StubCache::secondary_->map",
 
   67        "Store StubCache::primary_->key",
 
   68        "Store StubCache::primary_->value",
 
   69        "Store StubCache::primary_->map",
 
   70        "Store StubCache::secondary_->key",
 
   71        "Store StubCache::secondary_->value",
 
   72        "Store StubCache::secondary_->map",
 
   77#undef ADD_EXT_REF_NAME 
   78#undef ADD_BUILTIN_NAME 
   79#undef ADD_RUNTIME_FUNCTION 
   80#undef ADD_ISOLATE_ADDR 
   81#undef ADD_ACCESSOR_INFO_NAME 
   82#undef ADD_ACCESSOR_SETTER_NAME 
   83#undef ADD_ACCESSOR_CALLBACK_NAME 
   84#undef ADD_STATS_COUNTER_NAME 
   87#define FORWARD_DECLARE(Name, Argc) \ 
   88  Address Builtin_##Name(int argc, Address* args, Isolate* isolate); 
 
  117#ifdef SYMBOLIZE_FUNCTION 
  118  char** names = backtrace_symbols(&
address, 1);
 
  119  const char* name = names[0];
 
  125  return "<unresolved>";
 
 
  148    if (shared_external_references[
i] == 
address) {
 
 
  163  shared_external_references[(*index)++] = 
address;
 
 
  171#define ADD_EXTERNAL_REFERENCE(name, desc)                          \ 
  172  AddIsolateIndependent(ExternalReference::name().address(), index, \ 
  173                        shared_external_references); 
  175#undef ADD_EXTERNAL_REFERENCE 
 
  185#define ADD_EXTERNAL_REFERENCE(name, desc) \ 
  186  Add(ExternalReference::name(isolate).address(), index); 
  188#undef ADD_EXTERNAL_REFERENCE 
 
  200  static const Address c_builtins[] = {
 
  201#define DEF_ENTRY(Name, ...) FUNCTION_ADDR(&Builtin_##Name), 
  205  for (
Address addr : c_builtins) {
 
  207                          shared_external_references);
 
 
  223#define RUNTIME_ENTRY(name, ...) Runtime::k##name, 
  230                          shared_external_references);
 
 
  243  std::copy(shared_external_references.
data(),
 
 
  269#define ACCESSOR_INFO_DECLARATION(_, __, AccessorName, ...) \ 
  270  FUNCTION_ADDR(&Accessors::AccessorName##Getter), 
  271#define ACCESSOR_GETTER_DECLARATION(name) FUNCTION_ADDR(&Accessors::name), 
  272#define ACCESSOR_SETTER_DECLARATION(name) FUNCTION_ADDR(&Accessors::name), 
  273#define ACCESSOR_CALLBACK_DECLARATION(_, AccessorName, ...) \ 
  274  FUNCTION_ADDR(&Accessors::AccessorName), 
  276  static const Address accessors[] = {
 
  286#undef ACCESSOR_INFO_DECLARATION 
  287#undef ACCESSOR_GETTER_DECLARATION 
  288#undef ACCESSOR_SETTER_DECLARATION 
  289#undef ACCESSOR_CALLBACK_DECLARATION 
  291  for (
Address addr : accessors) {
 
 
  307  std::array<StubCache*, 3> stub_caches{isolate->load_stub_cache(),
 
  308                                        isolate->store_stub_cache(),
 
  309                                        isolate->define_own_stub_cache()};
 
  311  for (
StubCache* stub_cache : stub_caches) {
 
 
  340  Counters* counters = isolate->counters();
 
  342#define SC(name, caption) Add(GetStatsCounterAddress(counters->name()), index); 
 
  356#undef SYMBOLIZE_FUNCTION 
#define ACCESSOR_GETTER_DECLARATION(_, accessor_name, AccessorName,...)
#define ACCESSOR_CALLBACK_LIST_GENERATOR(V, _)
#define ACCESSOR_SETTER_LIST(V)
#define ACCESSOR_GETTER_LIST(V)
#define ACCESSOR_SETTER_DECLARATION(AccessorName)
#define ACCESSOR_INFO_DECLARATION(_, accessor_name, AccessorName,...)
#define ACCESSOR_INFO_LIST_GENERATOR(V, _)
#define ACCESSOR_CALLBACK_DECLARATION(_, AccessorName,...)
#define BUILTIN_LIST_C(V)
#define FORWARD_DECLARE(Name, Argc)
constexpr T * data() const
constexpr size_t size() const
static constexpr int kExternalReferenceCountIsolateDependent
static constexpr int kSpecialReferenceCount
InitializationState is_initialized_
static void AddIsolateIndependent(Address address, int *index, MemorySpan< Address > shared_external_references)
Address address(uint32_t i) const
Address GetStatsCounterAddress(StatsCounter *counter)
void Init(Isolate *isolate)
static void AddRuntimeFunctions(int *index, MemorySpan< Address > shared_external_references)
static void InitializeOncePerIsolateGroup(MemorySpan< Address > shared_external_references)
static constexpr int kSizeIsolateIndependent
uint32_t dummy_stats_counter_
static constexpr int kSize
static void AddBuiltins(int *index, MemorySpan< Address > shared_external_references)
void AddStubCache(Isolate *isolate, int *index)
void Add(Address address, int *index)
static constexpr int kExternalReferenceCountIsolateIndependent
void InitIsolateIndependent(MemorySpan< Address > shared_external_references)
void AddIsolateDependentReferences(Isolate *isolate, int *index)
static const char * ResolveSymbol(void *address)
static void AddIsolateIndependentReferences(int *index, MemorySpan< Address > shared_external_references)
static constexpr int kRuntimeReferenceCount
static constexpr int kStubCacheReferenceCount
static constexpr int kAccessorReferenceCount
static void AddAccessors(int *index, MemorySpan< Address > shared_external_references)
@ kInitializedIsolateIndependent
static const char *const ref_name_[kSize]
static constexpr int kIsolateAddressReferenceCount
static const char * NameOfIsolateIndependentAddress(Address address, MemorySpan< Address > shared_external_references)
void AddNativeCodeStatsCounters(Isolate *isolate, int *index)
static constexpr int kStatsCountersReferenceCount
void AddIsolateAddresses(Isolate *isolate, int *index)
static constexpr int kBuiltinsReferenceCount
void CopyIsolateIndependentReferences(int *index, MemorySpan< Address > shared_external_references)
static ExternalReference Create(const SCTableReference &table_ref)
V8_EXPORT_PRIVATE bool Enabled()
std::atomic< int > * GetInternalPointer()
#define FOR_EACH_ISOLATE_ADDRESS_NAME(C)
#define STATS_COUNTER_NATIVE_CODE_LIST(SC)
#define RUNTIME_ENTRY(name,...)
#define ADD_EXTERNAL_REFERENCE(name, desc)
#define ADD_ACCESSOR_GETTER_NAME(name)
#define ADD_BUILTIN_NAME(Name,...)
#define ADD_ACCESSOR_INFO_NAME(_, __, AccessorName,...)
#define DEF_ENTRY(Name,...)
#define ADD_ACCESSOR_CALLBACK_NAME(_, name,...)
#define ADD_STATS_COUNTER_NAME(name,...)
#define ADD_ISOLATE_ADDR(Name, name)
#define ADD_RUNTIME_FUNCTION(name,...)
#define ADD_EXT_REF_NAME(name, desc)
#define ADD_ACCESSOR_SETTER_NAME(name)
#define EXTERNAL_REFERENCE_LIST(V)
#define EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(V)
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enable experimental feedback collection in generic lowering enable Turboshaft s WasmLoadElimination enable Turboshaft s low level load elimination for JS enable Turboshaft s escape analysis for string concatenation use enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the Collect garbage after Collect garbage after keeps maps alive for< n > old space garbage collections print one detailed trace line in name
static constexpr Address kNullAddress
#define FOR_EACH_INTRINSIC(F)
#define DCHECK_GE(v1, v2)
#define CHECK_EQ(lhs, rhs)
#define DCHECK_EQ(v1, v2)