V8 Project
v8::internal::ExternalReferenceTable Class Reference

#include <serialize.h>

+ Collaboration diagram for v8::internal::ExternalReferenceTable:

Classes

struct  ExternalReferenceEntry
 

Public Member Functions

 ~ExternalReferenceTable ()
 
int size () const
 
Address address (int i)
 
uint32_t code (int i)
 
const char * name (int i)
 
int max_id (int code)
 

Static Public Member Functions

static ExternalReferenceTableinstance (Isolate *isolate)
 

Private Member Functions

 ExternalReferenceTable (Isolate *isolate)
 
void PopulateTable (Isolate *isolate)
 
void AddFromId (TypeCode type, uint16_t id, const char *name, Isolate *isolate)
 
void Add (Address address, TypeCode type, uint16_t id, const char *name)
 
void Add (Address address, const char *name)
 

Private Attributes

List< ExternalReferenceEntryrefs_
 
uint16_t max_id_ [kTypeCodeCount]
 

Detailed Description

Definition at line 45 of file serialize.h.

Constructor & Destructor Documentation

◆ ~ExternalReferenceTable()

v8::internal::ExternalReferenceTable::~ExternalReferenceTable ( )
inline

Definition at line 49 of file serialize.h.

49 { }

◆ ExternalReferenceTable()

v8::internal::ExternalReferenceTable::ExternalReferenceTable ( Isolate isolate)
inlineexplicitprivate

Definition at line 62 of file serialize.h.

62  : refs_(64) {
63  PopulateTable(isolate);
64  }
List< ExternalReferenceEntry > refs_
Definition: serialize.h:87
void PopulateTable(Isolate *isolate)
Definition: serialize.cc:111

References PopulateTable().

Referenced by instance().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Function Documentation

◆ Add() [1/2]

void v8::internal::ExternalReferenceTable::Add ( Address  address,
const char *  name 
)
inlineprivate

Definition at line 83 of file serialize.h.

83  {
85  }
void Add(Address address, TypeCode type, uint16_t id, const char *name)
Definition: serialize.cc:94
uint16_t max_id_[kTypeCodeCount]
Definition: serialize.h:88

References Add(), address(), max_id_, name(), and v8::internal::UNCLASSIFIED.

+ Here is the call graph for this function:

◆ Add() [2/2]

void v8::internal::ExternalReferenceTable::Add ( Address  address,
TypeCode  type,
uint16_t  id,
const char *  name 
)
private

Definition at line 94 of file serialize.cc.

97  {
99  ExternalReferenceEntry entry;
100  entry.address = address;
101  entry.code = EncodeExternal(type, id);
102  entry.name = name;
103  DCHECK_NE(0, entry.code);
104  // Assert that the code is added in ascending order to rule out duplicates.
105  DCHECK((size() == 0) || (code(size() - 1) < entry.code));
106  refs_.Add(entry);
107  if (id > max_id_[type]) max_id_[type] = id;
108 }
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL
#define DCHECK_NE(v1, v2)
Definition: logging.h:207
#define DCHECK(condition)
Definition: logging.h:205
static uint32_t EncodeExternal(TypeCode type, uint16_t id)
Definition: serialize.cc:35

References address(), v8::internal::ExternalReferenceTable::ExternalReferenceEntry::address, code(), v8::internal::ExternalReferenceTable::ExternalReferenceEntry::code, DCHECK, DCHECK_NE, v8::internal::EncodeExternal(), max_id_, name(), v8::internal::ExternalReferenceTable::ExternalReferenceEntry::name, NULL, refs_, and size().

Referenced by Add(), AddFromId(), and PopulateTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddFromId()

void v8::internal::ExternalReferenceTable::AddFromId ( TypeCode  type,
uint16_t  id,
const char *  name,
Isolate isolate 
)
private

Definition at line 59 of file serialize.cc.

62  {
64  switch (type) {
65  case C_BUILTIN: {
66  ExternalReference ref(static_cast<Builtins::CFunctionId>(id), isolate);
67  address = ref.address();
68  break;
69  }
70  case BUILTIN: {
71  ExternalReference ref(static_cast<Builtins::Name>(id), isolate);
72  address = ref.address();
73  break;
74  }
75  case RUNTIME_FUNCTION: {
76  ExternalReference ref(static_cast<Runtime::FunctionId>(id), isolate);
77  address = ref.address();
78  break;
79  }
80  case IC_UTILITY: {
81  ExternalReference ref(IC_Utility(static_cast<IC::UtilityId>(id)),
82  isolate);
83  address = ref.address();
84  break;
85  }
86  default:
87  UNREACHABLE();
88  return;
89  }
90  Add(address, type, id, name);
91 }
#define UNREACHABLE()
Definition: logging.h:30
byte * Address
Definition: globals.h:101
@ RUNTIME_FUNCTION
Definition: serialize.h:23

References Add(), address(), v8::internal::BUILTIN, v8::internal::C_BUILTIN, v8::internal::IC_UTILITY, name(), v8::internal::RUNTIME_FUNCTION, and UNREACHABLE.

Referenced by PopulateTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ address()

Address v8::internal::ExternalReferenceTable::address ( int  i)
inline

Definition at line 53 of file serialize.h.

53 { return refs_[i].address; }

References refs_.

Referenced by Add(), AddFromId(), v8::internal::ExternalReferenceDecoder::ExternalReferenceDecoder(), v8::internal::ExternalReferenceEncoder::ExternalReferenceEncoder(), and PopulateTable().

+ Here is the caller graph for this function:

◆ code()

uint32_t v8::internal::ExternalReferenceTable::code ( int  i)
inline

Definition at line 55 of file serialize.h.

55 { return refs_[i].code; }

References refs_.

Referenced by Add(), v8::internal::ExternalReferenceEncoder::Encode(), v8::internal::ExternalReferenceDecoder::ExternalReferenceDecoder(), and max_id().

+ Here is the caller graph for this function:

◆ instance()

ExternalReferenceTable * v8::internal::ExternalReferenceTable::instance ( Isolate isolate)
static

Definition at line 48 of file serialize.cc.

48  {
49  ExternalReferenceTable* external_reference_table =
50  isolate->external_reference_table();
51  if (external_reference_table == NULL) {
52  external_reference_table = new ExternalReferenceTable(isolate);
53  isolate->set_external_reference_table(external_reference_table);
54  }
55  return external_reference_table;
56 }
ExternalReferenceTable(Isolate *isolate)
Definition: serialize.h:62

References ExternalReferenceTable(), and NULL.

Referenced by v8::internal::ExternalReferenceEncoder::Encode(), v8::internal::ExternalReferenceDecoder::ExternalReferenceDecoder(), v8::internal::ExternalReferenceEncoder::ExternalReferenceEncoder(), and v8::internal::ExternalReferenceEncoder::NameOfAddress().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ max_id()

int v8::internal::ExternalReferenceTable::max_id ( int  code)
inline

Definition at line 59 of file serialize.h.

59 { return max_id_[code]; }

References code(), and max_id_.

Referenced by v8::internal::ExternalReferenceDecoder::ExternalReferenceDecoder().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ name()

const char* v8::internal::ExternalReferenceTable::name ( int  i)
inline

Definition at line 57 of file serialize.h.

57 { return refs_[i].name; }

References refs_.

Referenced by Add(), AddFromId(), v8::internal::ExternalReferenceEncoder::NameOfAddress(), and PopulateTable().

+ Here is the caller graph for this function:

◆ PopulateTable()

void v8::internal::ExternalReferenceTable::PopulateTable ( Isolate isolate)
private

Definition at line 111 of file serialize.cc.

111  {
112  for (int type_code = 0; type_code < kTypeCodeCount; type_code++) {
113  max_id_[type_code] = 0;
114  }
115 
116  // Miscellaneous
117  Add(ExternalReference::roots_array_start(isolate).address(),
118  "Heap::roots_array_start()");
119  Add(ExternalReference::address_of_stack_limit(isolate).address(),
120  "StackGuard::address_of_jslimit()");
121  Add(ExternalReference::address_of_real_stack_limit(isolate).address(),
122  "StackGuard::address_of_real_jslimit()");
123  Add(ExternalReference::new_space_start(isolate).address(),
124  "Heap::NewSpaceStart()");
125  Add(ExternalReference::new_space_mask(isolate).address(),
126  "Heap::NewSpaceMask()");
127  Add(ExternalReference::new_space_allocation_limit_address(isolate).address(),
128  "Heap::NewSpaceAllocationLimitAddress()");
129  Add(ExternalReference::new_space_allocation_top_address(isolate).address(),
130  "Heap::NewSpaceAllocationTopAddress()");
131  Add(ExternalReference::debug_break(isolate).address(), "Debug::Break()");
132  Add(ExternalReference::debug_step_in_fp_address(isolate).address(),
133  "Debug::step_in_fp_addr()");
134  Add(ExternalReference::mod_two_doubles_operation(isolate).address(),
135  "mod_two_doubles");
136  // Keyed lookup cache.
137  Add(ExternalReference::keyed_lookup_cache_keys(isolate).address(),
138  "KeyedLookupCache::keys()");
139  Add(ExternalReference::keyed_lookup_cache_field_offsets(isolate).address(),
140  "KeyedLookupCache::field_offsets()");
141  Add(ExternalReference::handle_scope_next_address(isolate).address(),
142  "HandleScope::next");
143  Add(ExternalReference::handle_scope_limit_address(isolate).address(),
144  "HandleScope::limit");
145  Add(ExternalReference::handle_scope_level_address(isolate).address(),
146  "HandleScope::level");
147  Add(ExternalReference::new_deoptimizer_function(isolate).address(),
148  "Deoptimizer::New()");
149  Add(ExternalReference::compute_output_frames_function(isolate).address(),
150  "Deoptimizer::ComputeOutputFrames()");
151  Add(ExternalReference::address_of_min_int().address(),
152  "LDoubleConstant::min_int");
153  Add(ExternalReference::address_of_one_half().address(),
154  "LDoubleConstant::one_half");
155  Add(ExternalReference::isolate_address(isolate).address(), "isolate");
156  Add(ExternalReference::address_of_negative_infinity().address(),
157  "LDoubleConstant::negative_infinity");
158  Add(ExternalReference::power_double_double_function(isolate).address(),
159  "power_double_double_function");
160  Add(ExternalReference::power_double_int_function(isolate).address(),
161  "power_double_int_function");
162  Add(ExternalReference::math_log_double_function(isolate).address(),
163  "std::log");
164  Add(ExternalReference::store_buffer_top(isolate).address(),
165  "store_buffer_top");
166  Add(ExternalReference::address_of_canonical_non_hole_nan().address(),
167  "canonical_nan");
168  Add(ExternalReference::address_of_the_hole_nan().address(), "the_hole_nan");
169  Add(ExternalReference::get_date_field_function(isolate).address(),
170  "JSDate::GetField");
171  Add(ExternalReference::date_cache_stamp(isolate).address(),
172  "date_cache_stamp");
173  Add(ExternalReference::address_of_pending_message_obj(isolate).address(),
174  "address_of_pending_message_obj");
175  Add(ExternalReference::address_of_has_pending_message(isolate).address(),
176  "address_of_has_pending_message");
177  Add(ExternalReference::address_of_pending_message_script(isolate).address(),
178  "pending_message_script");
179  Add(ExternalReference::get_make_code_young_function(isolate).address(),
180  "Code::MakeCodeYoung");
181  Add(ExternalReference::cpu_features().address(), "cpu_features");
182  Add(ExternalReference(Runtime::kAllocateInNewSpace, isolate).address(),
183  "Runtime::AllocateInNewSpace");
184  Add(ExternalReference(Runtime::kAllocateInTargetSpace, isolate).address(),
185  "Runtime::AllocateInTargetSpace");
186  Add(ExternalReference::old_pointer_space_allocation_top_address(isolate)
187  .address(),
188  "Heap::OldPointerSpaceAllocationTopAddress");
189  Add(ExternalReference::old_pointer_space_allocation_limit_address(isolate)
190  .address(),
191  "Heap::OldPointerSpaceAllocationLimitAddress");
192  Add(ExternalReference::old_data_space_allocation_top_address(isolate)
193  .address(),
194  "Heap::OldDataSpaceAllocationTopAddress");
195  Add(ExternalReference::old_data_space_allocation_limit_address(isolate)
196  .address(),
197  "Heap::OldDataSpaceAllocationLimitAddress");
198  Add(ExternalReference::allocation_sites_list_address(isolate).address(),
199  "Heap::allocation_sites_list_address()");
200  Add(ExternalReference::address_of_uint32_bias().address(), "uint32_bias");
201  Add(ExternalReference::get_mark_code_as_executed_function(isolate).address(),
202  "Code::MarkCodeAsExecuted");
203  Add(ExternalReference::is_profiling_address(isolate).address(),
204  "CpuProfiler::is_profiling");
205  Add(ExternalReference::scheduled_exception_address(isolate).address(),
206  "Isolate::scheduled_exception");
207  Add(ExternalReference::invoke_function_callback(isolate).address(),
208  "InvokeFunctionCallback");
209  Add(ExternalReference::invoke_accessor_getter_callback(isolate).address(),
210  "InvokeAccessorGetterCallback");
211  Add(ExternalReference::flush_icache_function(isolate).address(),
212  "CpuFeatures::FlushICache");
213  Add(ExternalReference::log_enter_external_function(isolate).address(),
214  "Logger::EnterExternal");
215  Add(ExternalReference::log_leave_external_function(isolate).address(),
216  "Logger::LeaveExternal");
217  Add(ExternalReference::address_of_minus_one_half().address(),
218  "double_constants.minus_one_half");
219  Add(ExternalReference::stress_deopt_count(isolate).address(),
220  "Isolate::stress_deopt_count_address()");
221  Add(ExternalReference::incremental_marking_record_write_function(isolate)
222  .address(),
223  "IncrementalMarking::RecordWriteFromCode");
224 
225  // Debug addresses
226  Add(ExternalReference::debug_after_break_target_address(isolate).address(),
227  "Debug::after_break_target_address()");
228  Add(ExternalReference::debug_restarter_frame_function_pointer_address(isolate)
229  .address(),
230  "Debug::restarter_frame_function_pointer_address()");
231  Add(ExternalReference::debug_is_active_address(isolate).address(),
232  "Debug::is_active_address()");
233 
234 #ifndef V8_INTERPRETED_REGEXP
235  Add(ExternalReference::re_case_insensitive_compare_uc16(isolate).address(),
236  "NativeRegExpMacroAssembler::CaseInsensitiveCompareUC16()");
237  Add(ExternalReference::re_check_stack_guard_state(isolate).address(),
238  "RegExpMacroAssembler*::CheckStackGuardState()");
239  Add(ExternalReference::re_grow_stack(isolate).address(),
240  "NativeRegExpMacroAssembler::GrowStack()");
241  Add(ExternalReference::re_word_character_map().address(),
242  "NativeRegExpMacroAssembler::word_character_map");
243  Add(ExternalReference::address_of_regexp_stack_limit(isolate).address(),
244  "RegExpStack::limit_address()");
245  Add(ExternalReference::address_of_regexp_stack_memory_address(isolate)
246  .address(),
247  "RegExpStack::memory_address()");
248  Add(ExternalReference::address_of_regexp_stack_memory_size(isolate).address(),
249  "RegExpStack::memory_size()");
250  Add(ExternalReference::address_of_static_offsets_vector(isolate).address(),
251  "OffsetsVector::static_offsets_vector");
252 #endif // V8_INTERPRETED_REGEXP
253 
254  // The following populates all of the different type of external references
255  // into the ExternalReferenceTable.
256  //
257  // NOTE: This function was originally 100k of code. It has since been
258  // rewritten to be mostly table driven, as the callback macro style tends to
259  // very easily cause code bloat. Please be careful in the future when adding
260  // new references.
261 
262  struct RefTableEntry {
263  TypeCode type;
264  uint16_t id;
265  const char* name;
266  };
267 
268  static const RefTableEntry ref_table[] = {
269  // Builtins
270 #define DEF_ENTRY_C(name, ignored) \
271  { C_BUILTIN, \
272  Builtins::c_##name, \
273  "Builtins::" #name },
274 
276 #undef DEF_ENTRY_C
277 
278 #define DEF_ENTRY_C(name, ignored) \
279  { BUILTIN, \
280  Builtins::k##name, \
281  "Builtins::" #name },
282 #define DEF_ENTRY_A(name, kind, state, extra) DEF_ENTRY_C(name, ignored)
283 
287 #undef DEF_ENTRY_C
288 #undef DEF_ENTRY_A
289 
290  // Runtime functions
291 #define RUNTIME_ENTRY(name, nargs, ressize) \
292  { RUNTIME_FUNCTION, \
293  Runtime::k##name, \
294  "Runtime::" #name },
295 
298 #undef RUNTIME_ENTRY
299 
300 #define INLINE_OPTIMIZED_ENTRY(name, nargs, ressize) \
301  { RUNTIME_FUNCTION, \
302  Runtime::kInlineOptimized##name, \
303  "Runtime::" #name },
304 
306 #undef INLINE_OPTIMIZED_ENTRY
307 
308  // IC utilities
309 #define IC_ENTRY(name) \
310  { IC_UTILITY, \
311  IC::k##name, \
312  "IC::" #name },
313 
315 #undef IC_ENTRY
316  }; // end of ref_table[].
317 
318  for (size_t i = 0; i < arraysize(ref_table); ++i) {
319  AddFromId(ref_table[i].type,
320  ref_table[i].id,
321  ref_table[i].name,
322  isolate);
323  }
324 
325  // Stat counters
326  struct StatsRefTableEntry {
327  StatsCounter* (Counters::*counter)();
328  uint16_t id;
329  const char* name;
330  };
331 
332  const StatsRefTableEntry stats_ref_table[] = {
333 #define COUNTER_ENTRY(name, caption) \
334  { &Counters::name, \
335  Counters::k_##name, \
336  "Counters::" #name },
337 
340 #undef COUNTER_ENTRY
341  }; // end of stats_ref_table[].
342 
343  Counters* counters = isolate->counters();
344  for (size_t i = 0; i < arraysize(stats_ref_table); ++i) {
345  Add(reinterpret_cast<Address>(GetInternalPointer(
346  (counters->*(stats_ref_table[i].counter))())),
348  stats_ref_table[i].id,
349  stats_ref_table[i].name);
350  }
351 
352  // Top addresses
353 
354  const char* AddressNames[] = {
355 #define BUILD_NAME_LITERAL(CamelName, hacker_name) \
356  "Isolate::" #hacker_name "_address",
358  NULL
359 #undef BUILD_NAME_LITERAL
360  };
361 
362  for (uint16_t i = 0; i < Isolate::kIsolateAddressCount; ++i) {
363  Add(isolate->get_address_from_id((Isolate::AddressId)i),
364  TOP_ADDRESS, i, AddressNames[i]);
365  }
366 
367  // Accessors
368 #define ACCESSOR_INFO_DECLARATION(name) \
369  Add(FUNCTION_ADDR(&Accessors::name##Getter), \
370  ACCESSOR, \
371  Accessors::k##name##Getter, \
372  "Accessors::" #name "Getter"); \
373  Add(FUNCTION_ADDR(&Accessors::name##Setter), \
374  ACCESSOR, \
375  Accessors::k##name##Setter, \
376  "Accessors::" #name "Setter");
378 #undef ACCESSOR_INFO_DECLARATION
379 
380  StubCache* stub_cache = isolate->stub_cache();
381 
382  // Stub cache tables
383  Add(stub_cache->key_reference(StubCache::kPrimary).address(),
384  STUB_CACHE_TABLE, 1, "StubCache::primary_->key");
385  Add(stub_cache->value_reference(StubCache::kPrimary).address(),
386  STUB_CACHE_TABLE, 2, "StubCache::primary_->value");
387  Add(stub_cache->map_reference(StubCache::kPrimary).address(),
388  STUB_CACHE_TABLE, 3, "StubCache::primary_->map");
389  Add(stub_cache->key_reference(StubCache::kSecondary).address(),
390  STUB_CACHE_TABLE, 4, "StubCache::secondary_->key");
391  Add(stub_cache->value_reference(StubCache::kSecondary).address(),
392  STUB_CACHE_TABLE, 5, "StubCache::secondary_->value");
393  Add(stub_cache->map_reference(StubCache::kSecondary).address(),
394  STUB_CACHE_TABLE, 6, "StubCache::secondary_->map");
395 
396  // Runtime entries
397  Add(ExternalReference::delete_handle_scope_extensions(isolate).address(),
398  RUNTIME_ENTRY, 1, "HandleScope::DeleteExtensions");
399  Add(ExternalReference::incremental_marking_record_write_function(isolate)
400  .address(),
401  RUNTIME_ENTRY, 2, "IncrementalMarking::RecordWrite");
402  Add(ExternalReference::store_buffer_overflow_function(isolate).address(),
403  RUNTIME_ENTRY, 3, "StoreBuffer::StoreBufferOverflow");
404 
405  // Add a small set of deopt entry addresses to encoder without generating the
406  // deopt table code, which isn't possible at deserialization time.
407  HandleScope scope(isolate);
408  for (int entry = 0; entry < kDeoptTableSerializeEntryCount; ++entry) {
410  isolate,
411  entry,
414  Add(address, LAZY_DEOPTIMIZATION, entry, "lazy_deopt");
415  }
416 }
#define ACCESSOR_INFO_LIST(V)
Definition: accessors.h:16
#define BUILTIN_LIST_C(V)
Definition: builtins.h:44
#define BUILTIN_LIST_DEBUG_A(V)
Definition: builtins.h:137
#define BUILTIN_LIST_A(V)
Definition: builtins.h:66
static Address GetDeoptimizationEntry(Isolate *isolate, int id, BailoutType type, GetEntryMode mode=ENSURE_ENTRY_CODE)
Definition: deoptimizer.cc:672
void AddFromId(TypeCode type, uint16_t id, const char *name, Isolate *isolate)
Definition: serialize.cc:59
#define STATS_COUNTER_LIST_1(SC)
Definition: counters.h:380
#define STATS_COUNTER_LIST_2(SC)
Definition: counters.h:433
#define IC_UTIL_LIST(ICU)
Definition: ic.h:17
#define FOR_EACH_ISOLATE_ADDRESS_NAME(C)
Definition: isolate.h:169
#define arraysize(array)
Definition: macros.h:86
unsigned short uint16_t
Definition: unicode.cc:23
const int kTypeCodeCount
Definition: serialize.h:33
const int kDeoptTableSerializeEntryCount
Definition: serialize.h:40
static int * GetInternalPointer(StatsCounter *counter)
Definition: serialize.cc:40
@ LAZY_DEOPTIMIZATION
Definition: serialize.h:30
@ STUB_CACHE_TABLE
Definition: serialize.h:28
#define INLINE_OPTIMIZED_FUNCTION_LIST(F)
Definition: runtime.h:708
#define RUNTIME_FUNCTION_LIST(F)
Definition: runtime.h:651
#define BUILD_NAME_LITERAL(CamelName, hacker_name)
#define COUNTER_ENTRY(name, caption)
#define IC_ENTRY(name)
#define INLINE_OPTIMIZED_ENTRY(name, nargs, ressize)
#define DEF_ENTRY_C(name, ignored)
#define DEF_ENTRY_A(name, kind, state, extra)
#define ACCESSOR_INFO_DECLARATION(name)

References ACCESSOR_INFO_DECLARATION, ACCESSOR_INFO_LIST, Add(), AddFromId(), address(), arraysize, BUILD_NAME_LITERAL, BUILTIN_LIST_A, BUILTIN_LIST_C, BUILTIN_LIST_DEBUG_A, v8::internal::Deoptimizer::CALCULATE_ENTRY_ADDRESS, COUNTER_ENTRY, v8::internal::Isolate::counters(), DEF_ENTRY_A, DEF_ENTRY_C, FOR_EACH_ISOLATE_ADDRESS_NAME, v8::internal::Isolate::get_address_from_id(), v8::internal::Deoptimizer::GetDeoptimizationEntry(), v8::internal::GetInternalPointer(), IC_ENTRY, IC_UTIL_LIST, INLINE_OPTIMIZED_ENTRY, INLINE_OPTIMIZED_FUNCTION_LIST, v8::internal::kDeoptTableSerializeEntryCount, v8::internal::Isolate::kIsolateAddressCount, v8::internal::StubCache::kPrimary, v8::internal::StubCache::kSecondary, v8::internal::kTypeCodeCount, v8::internal::Deoptimizer::LAZY, v8::internal::LAZY_DEOPTIMIZATION, max_id_, name(), NULL, v8::internal::RUNTIME_ENTRY, RUNTIME_FUNCTION_LIST, v8::internal::STATS_COUNTER, STATS_COUNTER_LIST_1, STATS_COUNTER_LIST_2, v8::internal::Isolate::stub_cache(), v8::internal::STUB_CACHE_TABLE, and v8::internal::TOP_ADDRESS.

Referenced by ExternalReferenceTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ size()

int v8::internal::ExternalReferenceTable::size ( ) const
inline

Definition at line 51 of file serialize.h.

51 { return refs_.length(); }

References refs_.

Referenced by Add(), v8::internal::ExternalReferenceDecoder::ExternalReferenceDecoder(), and v8::internal::ExternalReferenceEncoder::ExternalReferenceEncoder().

+ Here is the caller graph for this function:

Member Data Documentation

◆ max_id_

uint16_t v8::internal::ExternalReferenceTable::max_id_[kTypeCodeCount]
private

Definition at line 88 of file serialize.h.

Referenced by Add(), max_id(), and PopulateTable().

◆ refs_

List<ExternalReferenceEntry> v8::internal::ExternalReferenceTable::refs_
private

Definition at line 87 of file serialize.h.

Referenced by Add(), address(), code(), name(), and size().


The documentation for this class was generated from the following files: