V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
objects-definitions.h
1 // Copyright 2018 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_OBJECTS_DEFINITIONS_H_
6 #define V8_OBJECTS_DEFINITIONS_H_
7 
8 #include "src/heap-symbols.h"
9 
10 namespace v8 {
11 
12 namespace internal {
13 
14 // All Maps have a field instance_type containing a InstanceType.
15 // It describes the type of the instances.
16 //
17 // As an example, a JavaScript object is a heap object and its map
18 // instance_type is JS_OBJECT_TYPE.
19 //
20 // The names of the string instance types are intended to systematically
21 // mirror their encoding in the instance_type field of the map. The default
22 // encoding is considered TWO_BYTE. It is not mentioned in the name. ONE_BYTE
23 // encoding is mentioned explicitly in the name. Likewise, the default
24 // representation is considered sequential. It is not mentioned in the
25 // name. The other representations (e.g. CONS, EXTERNAL) are explicitly
26 // mentioned. Finally, the string is either a STRING_TYPE (if it is a normal
27 // string) or a INTERNALIZED_STRING_TYPE (if it is a internalized string).
28 //
29 // NOTE: The following things are some that depend on the string types having
30 // instance_types that are less than those of all other types:
31 // HeapObject::Size, HeapObject::IterateBody, the typeof operator, and
32 // Object::IsString.
33 //
34 // NOTE: Everything following JS_VALUE_TYPE is considered a
35 // JSObject for GC purposes. The first four entries here have typeof
36 // 'object', whereas JS_FUNCTION_TYPE has typeof 'function'.
37 //
38 // NOTE: List had to be split into two, because of conditional item(s) from
39 // INTL namespace. They can't just be appended to the end, because of the
40 // checks we do in tests (expecting JS_FUNCTION_TYPE to be last).
41 #define INSTANCE_TYPE_LIST_BEFORE_INTL(V) \
42  V(INTERNALIZED_STRING_TYPE) \
43  V(EXTERNAL_INTERNALIZED_STRING_TYPE) \
44  V(ONE_BYTE_INTERNALIZED_STRING_TYPE) \
45  V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \
46  V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \
47  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE) \
48  V(UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \
49  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \
50  V(STRING_TYPE) \
51  V(CONS_STRING_TYPE) \
52  V(EXTERNAL_STRING_TYPE) \
53  V(SLICED_STRING_TYPE) \
54  V(THIN_STRING_TYPE) \
55  V(ONE_BYTE_STRING_TYPE) \
56  V(CONS_ONE_BYTE_STRING_TYPE) \
57  V(EXTERNAL_ONE_BYTE_STRING_TYPE) \
58  V(SLICED_ONE_BYTE_STRING_TYPE) \
59  V(THIN_ONE_BYTE_STRING_TYPE) \
60  V(EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \
61  V(UNCACHED_EXTERNAL_STRING_TYPE) \
62  V(UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE) \
63  V(UNCACHED_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \
64  \
65  V(SYMBOL_TYPE) \
66  V(HEAP_NUMBER_TYPE) \
67  V(BIGINT_TYPE) \
68  V(ODDBALL_TYPE) \
69  \
70  V(MAP_TYPE) \
71  V(CODE_TYPE) \
72  V(MUTABLE_HEAP_NUMBER_TYPE) \
73  V(FOREIGN_TYPE) \
74  V(BYTE_ARRAY_TYPE) \
75  V(BYTECODE_ARRAY_TYPE) \
76  V(FREE_SPACE_TYPE) \
77  \
78  V(FIXED_INT8_ARRAY_TYPE) \
79  V(FIXED_UINT8_ARRAY_TYPE) \
80  V(FIXED_INT16_ARRAY_TYPE) \
81  V(FIXED_UINT16_ARRAY_TYPE) \
82  V(FIXED_INT32_ARRAY_TYPE) \
83  V(FIXED_UINT32_ARRAY_TYPE) \
84  V(FIXED_FLOAT32_ARRAY_TYPE) \
85  V(FIXED_FLOAT64_ARRAY_TYPE) \
86  V(FIXED_UINT8_CLAMPED_ARRAY_TYPE) \
87  V(FIXED_BIGINT64_ARRAY_TYPE) \
88  V(FIXED_BIGUINT64_ARRAY_TYPE) \
89  \
90  V(FIXED_DOUBLE_ARRAY_TYPE) \
91  V(FEEDBACK_METADATA_TYPE) \
92  V(FILLER_TYPE) \
93  \
94  V(ACCESS_CHECK_INFO_TYPE) \
95  V(ACCESSOR_INFO_TYPE) \
96  V(ACCESSOR_PAIR_TYPE) \
97  V(ALIASED_ARGUMENTS_ENTRY_TYPE) \
98  V(ALLOCATION_MEMENTO_TYPE) \
99  V(ASM_WASM_DATA_TYPE) \
100  V(ASYNC_GENERATOR_REQUEST_TYPE) \
101  V(DEBUG_INFO_TYPE) \
102  V(FUNCTION_TEMPLATE_INFO_TYPE) \
103  V(FUNCTION_TEMPLATE_RARE_DATA_TYPE) \
104  V(INTERCEPTOR_INFO_TYPE) \
105  V(INTERPRETER_DATA_TYPE) \
106  V(MODULE_INFO_ENTRY_TYPE) \
107  V(MODULE_TYPE) \
108  V(OBJECT_TEMPLATE_INFO_TYPE) \
109  V(PROMISE_CAPABILITY_TYPE) \
110  V(PROMISE_REACTION_TYPE) \
111  V(PROTOTYPE_INFO_TYPE) \
112  V(SCRIPT_TYPE) \
113  V(STACK_FRAME_INFO_TYPE) \
114  V(TUPLE2_TYPE) \
115  V(TUPLE3_TYPE) \
116  V(ARRAY_BOILERPLATE_DESCRIPTION_TYPE) \
117  V(WASM_DEBUG_INFO_TYPE) \
118  V(WASM_EXPORTED_FUNCTION_DATA_TYPE) \
119  \
120  V(CALLABLE_TASK_TYPE) \
121  V(CALLBACK_TASK_TYPE) \
122  V(PROMISE_FULFILL_REACTION_JOB_TASK_TYPE) \
123  V(PROMISE_REJECT_REACTION_JOB_TASK_TYPE) \
124  V(PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE) \
125  V(WEAK_FACTORY_CLEANUP_JOB_TASK_TYPE) \
126  \
127  V(ALLOCATION_SITE_TYPE) \
128  V(EMBEDDER_DATA_ARRAY_TYPE) \
129  \
130  V(FIXED_ARRAY_TYPE) \
131  V(OBJECT_BOILERPLATE_DESCRIPTION_TYPE) \
132  V(HASH_TABLE_TYPE) \
133  V(ORDERED_HASH_MAP_TYPE) \
134  V(ORDERED_HASH_SET_TYPE) \
135  V(ORDERED_NAME_DICTIONARY_TYPE) \
136  V(NAME_DICTIONARY_TYPE) \
137  V(GLOBAL_DICTIONARY_TYPE) \
138  V(NUMBER_DICTIONARY_TYPE) \
139  V(SIMPLE_NUMBER_DICTIONARY_TYPE) \
140  V(STRING_TABLE_TYPE) \
141  V(EPHEMERON_HASH_TABLE_TYPE) \
142  V(SCOPE_INFO_TYPE) \
143  V(SCRIPT_CONTEXT_TABLE_TYPE) \
144  \
145  V(AWAIT_CONTEXT_TYPE) \
146  V(BLOCK_CONTEXT_TYPE) \
147  V(CATCH_CONTEXT_TYPE) \
148  V(DEBUG_EVALUATE_CONTEXT_TYPE) \
149  V(EVAL_CONTEXT_TYPE) \
150  V(FUNCTION_CONTEXT_TYPE) \
151  V(MODULE_CONTEXT_TYPE) \
152  V(NATIVE_CONTEXT_TYPE) \
153  V(SCRIPT_CONTEXT_TYPE) \
154  V(WITH_CONTEXT_TYPE) \
155  \
156  V(WEAK_FIXED_ARRAY_TYPE) \
157  V(TRANSITION_ARRAY_TYPE) \
158  \
159  V(CALL_HANDLER_INFO_TYPE) \
160  V(CELL_TYPE) \
161  V(CODE_DATA_CONTAINER_TYPE) \
162  V(DESCRIPTOR_ARRAY_TYPE) \
163  V(FEEDBACK_CELL_TYPE) \
164  V(FEEDBACK_VECTOR_TYPE) \
165  V(LOAD_HANDLER_TYPE) \
166  V(PRE_PARSED_SCOPE_DATA_TYPE) \
167  V(PROPERTY_ARRAY_TYPE) \
168  V(PROPERTY_CELL_TYPE) \
169  V(SHARED_FUNCTION_INFO_TYPE) \
170  V(SMALL_ORDERED_HASH_MAP_TYPE) \
171  V(SMALL_ORDERED_HASH_SET_TYPE) \
172  V(SMALL_ORDERED_NAME_DICTIONARY_TYPE) \
173  V(STORE_HANDLER_TYPE) \
174  V(UNCOMPILED_DATA_WITHOUT_PRE_PARSED_SCOPE_TYPE) \
175  V(UNCOMPILED_DATA_WITH_PRE_PARSED_SCOPE_TYPE) \
176  V(WEAK_ARRAY_LIST_TYPE) \
177  \
178  V(JS_PROXY_TYPE) \
179  V(JS_GLOBAL_OBJECT_TYPE) \
180  V(JS_GLOBAL_PROXY_TYPE) \
181  V(JS_MODULE_NAMESPACE_TYPE) \
182  V(JS_SPECIAL_API_OBJECT_TYPE) \
183  V(JS_VALUE_TYPE) \
184  V(JS_API_OBJECT_TYPE) \
185  V(JS_OBJECT_TYPE) \
186  \
187  V(JS_ARGUMENTS_TYPE) \
188  V(JS_ARRAY_BUFFER_TYPE) \
189  V(JS_ARRAY_ITERATOR_TYPE) \
190  V(JS_ARRAY_TYPE) \
191  V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) \
192  V(JS_ASYNC_FUNCTION_OBJECT_TYPE) \
193  V(JS_ASYNC_GENERATOR_OBJECT_TYPE) \
194  V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \
195  V(JS_DATE_TYPE) \
196  V(JS_ERROR_TYPE) \
197  V(JS_GENERATOR_OBJECT_TYPE) \
198  V(JS_MAP_TYPE) \
199  V(JS_MAP_KEY_ITERATOR_TYPE) \
200  V(JS_MAP_KEY_VALUE_ITERATOR_TYPE) \
201  V(JS_MAP_VALUE_ITERATOR_TYPE) \
202  V(JS_MESSAGE_OBJECT_TYPE) \
203  V(JS_PROMISE_TYPE) \
204  V(JS_REGEXP_TYPE) \
205  V(JS_REGEXP_STRING_ITERATOR_TYPE) \
206  V(JS_SET_TYPE) \
207  V(JS_SET_KEY_VALUE_ITERATOR_TYPE) \
208  V(JS_SET_VALUE_ITERATOR_TYPE) \
209  V(JS_STRING_ITERATOR_TYPE) \
210  V(JS_WEAK_CELL_TYPE) \
211  V(JS_WEAK_REF_TYPE) \
212  V(JS_WEAK_FACTORY_CLEANUP_ITERATOR_TYPE) \
213  V(JS_WEAK_FACTORY_TYPE) \
214  V(JS_WEAK_MAP_TYPE) \
215  V(JS_WEAK_SET_TYPE) \
216  V(JS_TYPED_ARRAY_TYPE) \
217  V(JS_DATA_VIEW_TYPE)
218 
219 #define INSTANCE_TYPE_LIST_AFTER_INTL(V) \
220  V(WASM_EXCEPTION_TYPE) \
221  V(WASM_GLOBAL_TYPE) \
222  V(WASM_INSTANCE_TYPE) \
223  V(WASM_MEMORY_TYPE) \
224  V(WASM_MODULE_TYPE) \
225  V(WASM_TABLE_TYPE) \
226  V(JS_BOUND_FUNCTION_TYPE) \
227  V(JS_FUNCTION_TYPE)
228 
229 #ifdef V8_INTL_SUPPORT
230 #define INSTANCE_TYPE_LIST(V) \
231  INSTANCE_TYPE_LIST_BEFORE_INTL(V) \
232  V(JS_INTL_V8_BREAK_ITERATOR_TYPE) \
233  V(JS_INTL_COLLATOR_TYPE) \
234  V(JS_INTL_DATE_TIME_FORMAT_TYPE) \
235  V(JS_INTL_LIST_FORMAT_TYPE) \
236  V(JS_INTL_LOCALE_TYPE) \
237  V(JS_INTL_NUMBER_FORMAT_TYPE) \
238  V(JS_INTL_PLURAL_RULES_TYPE) \
239  V(JS_INTL_RELATIVE_TIME_FORMAT_TYPE) \
240  V(JS_INTL_SEGMENT_ITERATOR_TYPE) \
241  V(JS_INTL_SEGMENTER_TYPE) \
242  INSTANCE_TYPE_LIST_AFTER_INTL(V)
243 #else
244 #define INSTANCE_TYPE_LIST(V) \
245  INSTANCE_TYPE_LIST_BEFORE_INTL(V) \
246  INSTANCE_TYPE_LIST_AFTER_INTL(V)
247 #endif // V8_INTL_SUPPORT
248 
249 // Since string types are not consecutive, this macro is used to
250 // iterate over them.
251 #define STRING_TYPE_LIST(V) \
252  V(STRING_TYPE, kVariableSizeSentinel, string, String) \
253  V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string, \
254  OneByteString) \
255  V(CONS_STRING_TYPE, ConsString::kSize, cons_string, ConsString) \
256  V(CONS_ONE_BYTE_STRING_TYPE, ConsString::kSize, cons_one_byte_string, \
257  ConsOneByteString) \
258  V(SLICED_STRING_TYPE, SlicedString::kSize, sliced_string, SlicedString) \
259  V(SLICED_ONE_BYTE_STRING_TYPE, SlicedString::kSize, sliced_one_byte_string, \
260  SlicedOneByteString) \
261  V(EXTERNAL_STRING_TYPE, ExternalTwoByteString::kSize, external_string, \
262  ExternalString) \
263  V(EXTERNAL_ONE_BYTE_STRING_TYPE, ExternalOneByteString::kSize, \
264  external_one_byte_string, ExternalOneByteString) \
265  V(EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE, ExternalTwoByteString::kSize, \
266  external_string_with_one_byte_data, ExternalStringWithOneByteData) \
267  V(UNCACHED_EXTERNAL_STRING_TYPE, ExternalTwoByteString::kUncachedSize, \
268  uncached_external_string, UncachedExternalString) \
269  V(UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE, \
270  ExternalOneByteString::kUncachedSize, uncached_external_one_byte_string, \
271  UncachedExternalOneByteString) \
272  V(UNCACHED_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE, \
273  ExternalTwoByteString::kUncachedSize, \
274  uncached_external_string_with_one_byte_data, \
275  UncachedExternalStringWithOneByteData) \
276  \
277  V(INTERNALIZED_STRING_TYPE, kVariableSizeSentinel, internalized_string, \
278  InternalizedString) \
279  V(ONE_BYTE_INTERNALIZED_STRING_TYPE, kVariableSizeSentinel, \
280  one_byte_internalized_string, OneByteInternalizedString) \
281  V(EXTERNAL_INTERNALIZED_STRING_TYPE, ExternalTwoByteString::kSize, \
282  external_internalized_string, ExternalInternalizedString) \
283  V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE, ExternalOneByteString::kSize, \
284  external_one_byte_internalized_string, ExternalOneByteInternalizedString) \
285  V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE, \
286  ExternalTwoByteString::kSize, \
287  external_internalized_string_with_one_byte_data, \
288  ExternalInternalizedStringWithOneByteData) \
289  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE, \
290  ExternalTwoByteString::kUncachedSize, \
291  uncached_external_internalized_string, UncachedExternalInternalizedString) \
292  V(UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE, \
293  ExternalOneByteString::kUncachedSize, \
294  uncached_external_one_byte_internalized_string, \
295  UncachedExternalOneByteInternalizedString) \
296  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE, \
297  ExternalTwoByteString::kUncachedSize, \
298  uncached_external_internalized_string_with_one_byte_data, \
299  UncachedExternalInternalizedStringWithOneByteData) \
300  V(THIN_STRING_TYPE, ThinString::kSize, thin_string, ThinString) \
301  V(THIN_ONE_BYTE_STRING_TYPE, ThinString::kSize, thin_one_byte_string, \
302  ThinOneByteString)
303 
304 // A struct is a simple object a set of object-valued fields. Including an
305 // object type in this causes the compiler to generate most of the boilerplate
306 // code for the class including allocation and garbage collection routines,
307 // casts and predicates. All you need to define is the class, methods and
308 // object verification routines. Easy, no?
309 //
310 // Note that for subtle reasons related to the ordering or numerical values of
311 // type tags, elements in this list have to be added to the INSTANCE_TYPE_LIST
312 // manually.
313 #define STRUCT_LIST_GENERATOR(V, _) \
314  V(_, ACCESS_CHECK_INFO_TYPE, AccessCheckInfo, access_check_info) \
315  V(_, ACCESSOR_INFO_TYPE, AccessorInfo, accessor_info) \
316  V(_, ACCESSOR_PAIR_TYPE, AccessorPair, accessor_pair) \
317  V(_, ALIASED_ARGUMENTS_ENTRY_TYPE, AliasedArgumentsEntry, \
318  aliased_arguments_entry) \
319  V(_, ALLOCATION_MEMENTO_TYPE, AllocationMemento, allocation_memento) \
320  V(_, ASM_WASM_DATA_TYPE, AsmWasmData, asm_wasm_data) \
321  V(_, ASYNC_GENERATOR_REQUEST_TYPE, AsyncGeneratorRequest, \
322  async_generator_request) \
323  V(_, DEBUG_INFO_TYPE, DebugInfo, debug_info) \
324  V(_, FUNCTION_TEMPLATE_INFO_TYPE, FunctionTemplateInfo, \
325  function_template_info) \
326  V(_, FUNCTION_TEMPLATE_RARE_DATA_TYPE, FunctionTemplateRareData, \
327  function_template_rare_data) \
328  V(_, INTERCEPTOR_INFO_TYPE, InterceptorInfo, interceptor_info) \
329  V(_, INTERPRETER_DATA_TYPE, InterpreterData, interpreter_data) \
330  V(_, MODULE_INFO_ENTRY_TYPE, ModuleInfoEntry, module_info_entry) \
331  V(_, MODULE_TYPE, Module, module) \
332  V(_, OBJECT_TEMPLATE_INFO_TYPE, ObjectTemplateInfo, object_template_info) \
333  V(_, PROMISE_CAPABILITY_TYPE, PromiseCapability, promise_capability) \
334  V(_, PROMISE_REACTION_TYPE, PromiseReaction, promise_reaction) \
335  V(_, PROTOTYPE_INFO_TYPE, PrototypeInfo, prototype_info) \
336  V(_, SCRIPT_TYPE, Script, script) \
337  V(_, STACK_FRAME_INFO_TYPE, StackFrameInfo, stack_frame_info) \
338  V(_, TUPLE2_TYPE, Tuple2, tuple2) \
339  V(_, TUPLE3_TYPE, Tuple3, tuple3) \
340  V(_, ARRAY_BOILERPLATE_DESCRIPTION_TYPE, ArrayBoilerplateDescription, \
341  array_boilerplate_description) \
342  V(_, WASM_DEBUG_INFO_TYPE, WasmDebugInfo, wasm_debug_info) \
343  V(_, WASM_EXPORTED_FUNCTION_DATA_TYPE, WasmExportedFunctionData, \
344  wasm_exported_function_data) \
345  V(_, CALLABLE_TASK_TYPE, CallableTask, callable_task) \
346  V(_, CALLBACK_TASK_TYPE, CallbackTask, callback_task) \
347  V(_, PROMISE_FULFILL_REACTION_JOB_TASK_TYPE, PromiseFulfillReactionJobTask, \
348  promise_fulfill_reaction_job_task) \
349  V(_, PROMISE_REJECT_REACTION_JOB_TASK_TYPE, PromiseRejectReactionJobTask, \
350  promise_reject_reaction_job_task) \
351  V(_, PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE, PromiseResolveThenableJobTask, \
352  promise_resolve_thenable_job_task) \
353  V(_, WEAK_FACTORY_CLEANUP_JOB_TASK_TYPE, WeakFactoryCleanupJobTask, \
354  weak_factory_cleanup_job_task)
355 
356 // Adapts one STRUCT_LIST_GENERATOR entry to the STRUCT_LIST entry
357 #define STRUCT_LIST_ADAPTER(V, NAME, Name, name) V(NAME, Name, name)
358 
359 // Produces (NAME, Name, name) entries.
360 #define STRUCT_LIST(V) STRUCT_LIST_GENERATOR(STRUCT_LIST_ADAPTER, V)
361 
362 // Adapts one STRUCT_LIST_GENERATOR entry to the STRUCT_MAPS_LIST entry
363 #define STRUCT_MAPS_LIST_ADAPTER(V, NAME, Name, name) \
364  V(Map, name##_map, Name##Map)
365 
366 // Produces (Map, struct_name_map, StructNameMap) entries
367 #define STRUCT_MAPS_LIST(V) STRUCT_LIST_GENERATOR(STRUCT_MAPS_LIST_ADAPTER, V)
368 
369 //
370 // The following macros define list of allocation size objects and list of
371 // their maps.
372 //
373 #define ALLOCATION_SITE_LIST(V, _) \
374  V(_, ALLOCATION_SITE_TYPE, AllocationSite, WithWeakNext, allocation_site) \
375  V(_, ALLOCATION_SITE_TYPE, AllocationSite, WithoutWeakNext, \
376  allocation_site_without_weaknext)
377 
378 // Adapts one ALLOCATION_SITE_LIST entry to the ALLOCATION_SITE_MAPS_LIST entry
379 #define ALLOCATION_SITE_MAPS_LIST_ADAPTER(V, TYPE, Name, Size, name_size) \
380  V(Map, name_size##_map, Name##Size##Map)
381 
382 // Produces (Map, allocation_site_name_map, AllocationSiteNameMap) entries
383 #define ALLOCATION_SITE_MAPS_LIST(V) \
384  ALLOCATION_SITE_LIST(ALLOCATION_SITE_MAPS_LIST_ADAPTER, V)
385 
386 //
387 // The following macros define list of data handler objects and list of their
388 // maps.
389 //
390 #define DATA_HANDLER_LIST(V, _) \
391  V(_, LOAD_HANDLER_TYPE, LoadHandler, 1, load_handler1) \
392  V(_, LOAD_HANDLER_TYPE, LoadHandler, 2, load_handler2) \
393  V(_, LOAD_HANDLER_TYPE, LoadHandler, 3, load_handler3) \
394  V(_, STORE_HANDLER_TYPE, StoreHandler, 0, store_handler0) \
395  V(_, STORE_HANDLER_TYPE, StoreHandler, 1, store_handler1) \
396  V(_, STORE_HANDLER_TYPE, StoreHandler, 2, store_handler2) \
397  V(_, STORE_HANDLER_TYPE, StoreHandler, 3, store_handler3)
398 
399 // Adapts one DATA_HANDLER_LIST entry to the DATA_HANDLER_MAPS_LIST entry.
400 #define DATA_HANDLER_MAPS_LIST_ADAPTER(V, TYPE, Name, Size, name_size) \
401  V(Map, name_size##_map, Name##Size##Map)
402 
403 // Produces (Map, handler_name_map, HandlerNameMap) entries
404 #define DATA_HANDLER_MAPS_LIST(V) \
405  DATA_HANDLER_LIST(DATA_HANDLER_MAPS_LIST_ADAPTER, V)
406 
407 } // namespace internal
408 } // namespace v8
409 
410 #endif // V8_OBJECTS_DEFINITIONS_H_
Definition: libplatform.h:13