// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef V8_OBJECTS_DEFINITIONS_H_
#define V8_OBJECTS_DEFINITIONS_H_

#include "src/heap-symbols.h"

namespace v8 {

namespace internal {

// All Maps have a field instance_type containing a InstanceType.
// It describes the type of the instances.
//
// As an example, a JavaScript object is a heap object and its map
// instance_type is JS_OBJECT_TYPE.
//
// The names of the string instance types are intended to systematically
// mirror their encoding in the instance_type field of the map.  The default
// encoding is considered TWO_BYTE.  It is not mentioned in the name.  ONE_BYTE
// encoding is mentioned explicitly in the name.  Likewise, the default
// representation is considered sequential.  It is not mentioned in the
// name.  The other representations (e.g. CONS, EXTERNAL) are explicitly
// mentioned.  Finally, the string is either a STRING_TYPE (if it is a normal
// string) or a INTERNALIZED_STRING_TYPE (if it is a internalized string).
//
// NOTE: The following things are some that depend on the string types having
// instance_types that are less than those of all other types:
// HeapObject::Size, HeapObject::IterateBody, the typeof operator, and
// Object::IsString.
//
// NOTE: Everything following JS_VALUE_TYPE is considered a
// JSObject for GC purposes. The first four entries here have typeof
// 'object', whereas JS_FUNCTION_TYPE has typeof 'function'.
//
// NOTE: List had to be split into two, because of conditional item(s) from
// INTL namespace. They can't just be appended to the end, because of the
// checks we do in tests (expecting JS_FUNCTION_TYPE to be last).
#define INSTANCE_TYPE_LIST_BEFORE_INTL(V)                          \
  V(INTERNALIZED_STRING_TYPE)                                      \
  V(EXTERNAL_INTERNALIZED_STRING_TYPE)                             \
  V(ONE_BYTE_INTERNALIZED_STRING_TYPE)                             \
  V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE)                    \
  V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE)          \
  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE)                    \
  V(UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE)           \
  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \
  V(STRING_TYPE)                                                   \
  V(CONS_STRING_TYPE)                                              \
  V(EXTERNAL_STRING_TYPE)                                          \
  V(SLICED_STRING_TYPE)                                            \
  V(THIN_STRING_TYPE)                                              \
  V(ONE_BYTE_STRING_TYPE)                                          \
  V(CONS_ONE_BYTE_STRING_TYPE)                                     \
  V(EXTERNAL_ONE_BYTE_STRING_TYPE)                                 \
  V(SLICED_ONE_BYTE_STRING_TYPE)                                   \
  V(THIN_ONE_BYTE_STRING_TYPE)                                     \
  V(EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE)                       \
  V(UNCACHED_EXTERNAL_STRING_TYPE)                                 \
  V(UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE)                        \
  V(UNCACHED_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE)              \
                                                                   \
  V(SYMBOL_TYPE)                                                   \
  V(HEAP_NUMBER_TYPE)                                              \
  V(BIGINT_TYPE)                                                   \
  V(ODDBALL_TYPE)                                                  \
                                                                   \
  V(MAP_TYPE)                                                      \
  V(CODE_TYPE)                                                     \
  V(MUTABLE_HEAP_NUMBER_TYPE)                                      \
  V(FOREIGN_TYPE)                                                  \
  V(BYTE_ARRAY_TYPE)                                               \
  V(BYTECODE_ARRAY_TYPE)                                           \
  V(FREE_SPACE_TYPE)                                               \
                                                                   \
  V(FIXED_INT8_ARRAY_TYPE)                                         \
  V(FIXED_UINT8_ARRAY_TYPE)                                        \
  V(FIXED_INT16_ARRAY_TYPE)                                        \
  V(FIXED_UINT16_ARRAY_TYPE)                                       \
  V(FIXED_INT32_ARRAY_TYPE)                                        \
  V(FIXED_UINT32_ARRAY_TYPE)                                       \
  V(FIXED_FLOAT32_ARRAY_TYPE)                                      \
  V(FIXED_FLOAT64_ARRAY_TYPE)                                      \
  V(FIXED_UINT8_CLAMPED_ARRAY_TYPE)                                \
  V(FIXED_BIGINT64_ARRAY_TYPE)                                     \
  V(FIXED_BIGUINT64_ARRAY_TYPE)                                    \
                                                                   \
  V(FIXED_DOUBLE_ARRAY_TYPE)                                       \
  V(FEEDBACK_METADATA_TYPE)                                        \
  V(FILLER_TYPE)                                                   \
                                                                   \
  V(ACCESS_CHECK_INFO_TYPE)                                        \
  V(ACCESSOR_INFO_TYPE)                                            \
  V(ACCESSOR_PAIR_TYPE)                                            \
  V(ALIASED_ARGUMENTS_ENTRY_TYPE)                                  \
  V(ALLOCATION_MEMENTO_TYPE)                                       \
  V(ASYNC_GENERATOR_REQUEST_TYPE)                                  \
  V(DEBUG_INFO_TYPE)                                               \
  V(FUNCTION_TEMPLATE_INFO_TYPE)                                   \
  V(INTERCEPTOR_INFO_TYPE)                                         \
  V(INTERPRETER_DATA_TYPE)                                         \
  V(MODULE_INFO_ENTRY_TYPE)                                        \
  V(MODULE_TYPE)                                                   \
  V(OBJECT_TEMPLATE_INFO_TYPE)                                     \
  V(PROMISE_CAPABILITY_TYPE)                                       \
  V(PROMISE_REACTION_TYPE)                                         \
  V(PROTOTYPE_INFO_TYPE)                                           \
  V(SCRIPT_TYPE)                                                   \
  V(STACK_FRAME_INFO_TYPE)                                         \
  V(TUPLE2_TYPE)                                                   \
  V(TUPLE3_TYPE)                                                   \
  V(ARRAY_BOILERPLATE_DESCRIPTION_TYPE)                            \
  V(WASM_DEBUG_INFO_TYPE)                                          \
  V(WASM_EXPORTED_FUNCTION_DATA_TYPE)                              \
                                                                   \
  V(CALLABLE_TASK_TYPE)                                            \
  V(CALLBACK_TASK_TYPE)                                            \
  V(PROMISE_FULFILL_REACTION_JOB_TASK_TYPE)                        \
  V(PROMISE_REJECT_REACTION_JOB_TASK_TYPE)                         \
  V(PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE)                        \
                                                                   \
  V(ALLOCATION_SITE_TYPE)                                          \
                                                                   \
  V(FIXED_ARRAY_TYPE)                                              \
  V(OBJECT_BOILERPLATE_DESCRIPTION_TYPE)                           \
  V(HASH_TABLE_TYPE)                                               \
  V(ORDERED_HASH_MAP_TYPE)                                         \
  V(ORDERED_HASH_SET_TYPE)                                         \
  V(NAME_DICTIONARY_TYPE)                                          \
  V(GLOBAL_DICTIONARY_TYPE)                                        \
  V(NUMBER_DICTIONARY_TYPE)                                        \
  V(SIMPLE_NUMBER_DICTIONARY_TYPE)                                 \
  V(STRING_TABLE_TYPE)                                             \
  V(EPHEMERON_HASH_TABLE_TYPE)                                     \
  V(SCOPE_INFO_TYPE)                                               \
  V(SCRIPT_CONTEXT_TABLE_TYPE)                                     \
                                                                   \
  V(BLOCK_CONTEXT_TYPE)                                            \
  V(CATCH_CONTEXT_TYPE)                                            \
  V(DEBUG_EVALUATE_CONTEXT_TYPE)                                   \
  V(EVAL_CONTEXT_TYPE)                                             \
  V(FUNCTION_CONTEXT_TYPE)                                         \
  V(MODULE_CONTEXT_TYPE)                                           \
  V(NATIVE_CONTEXT_TYPE)                                           \
  V(SCRIPT_CONTEXT_TYPE)                                           \
  V(WITH_CONTEXT_TYPE)                                             \
                                                                   \
  V(WEAK_FIXED_ARRAY_TYPE)                                         \
  V(DESCRIPTOR_ARRAY_TYPE)                                         \
  V(TRANSITION_ARRAY_TYPE)                                         \
                                                                   \
  V(CALL_HANDLER_INFO_TYPE)                                        \
  V(CELL_TYPE)                                                     \
  V(CODE_DATA_CONTAINER_TYPE)                                      \
  V(FEEDBACK_CELL_TYPE)                                            \
  V(FEEDBACK_VECTOR_TYPE)                                          \
  V(LOAD_HANDLER_TYPE)                                             \
  V(PRE_PARSED_SCOPE_DATA_TYPE)                                    \
  V(PROPERTY_ARRAY_TYPE)                                           \
  V(PROPERTY_CELL_TYPE)                                            \
  V(SHARED_FUNCTION_INFO_TYPE)                                     \
  V(SMALL_ORDERED_HASH_MAP_TYPE)                                   \
  V(SMALL_ORDERED_HASH_SET_TYPE)                                   \
  V(STORE_HANDLER_TYPE)                                            \
  V(UNCOMPILED_DATA_WITHOUT_PRE_PARSED_SCOPE_TYPE)                 \
  V(UNCOMPILED_DATA_WITH_PRE_PARSED_SCOPE_TYPE)                    \
  V(WEAK_ARRAY_LIST_TYPE)                                          \
                                                                   \
  V(JS_PROXY_TYPE)                                                 \
  V(JS_GLOBAL_OBJECT_TYPE)                                         \
  V(JS_GLOBAL_PROXY_TYPE)                                          \
  V(JS_MODULE_NAMESPACE_TYPE)                                      \
  V(JS_SPECIAL_API_OBJECT_TYPE)                                    \
  V(JS_VALUE_TYPE)                                                 \
  V(JS_API_OBJECT_TYPE)                                            \
  V(JS_OBJECT_TYPE)                                                \
                                                                   \
  V(JS_ARGUMENTS_TYPE)                                             \
  V(JS_ARRAY_BUFFER_TYPE)                                          \
  V(JS_ARRAY_ITERATOR_TYPE)                                        \
  V(JS_ARRAY_TYPE)                                                 \
  V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE)                              \
  V(JS_ASYNC_GENERATOR_OBJECT_TYPE)                                \
  V(JS_CONTEXT_EXTENSION_OBJECT_TYPE)                              \
  V(JS_DATE_TYPE)                                                  \
  V(JS_ERROR_TYPE)                                                 \
  V(JS_GENERATOR_OBJECT_TYPE)                                      \
  V(JS_MAP_TYPE)                                                   \
  V(JS_MAP_KEY_ITERATOR_TYPE)                                      \
  V(JS_MAP_KEY_VALUE_ITERATOR_TYPE)                                \
  V(JS_MAP_VALUE_ITERATOR_TYPE)                                    \
  V(JS_MESSAGE_OBJECT_TYPE)                                        \
  V(JS_PROMISE_TYPE)                                               \
  V(JS_REGEXP_TYPE)                                                \
  V(JS_REGEXP_STRING_ITERATOR_TYPE)                                \
  V(JS_SET_TYPE)                                                   \
  V(JS_SET_KEY_VALUE_ITERATOR_TYPE)                                \
  V(JS_SET_VALUE_ITERATOR_TYPE)                                    \
  V(JS_STRING_ITERATOR_TYPE)                                       \
  V(JS_WEAK_MAP_TYPE)                                              \
  V(JS_WEAK_SET_TYPE)                                              \
  V(JS_TYPED_ARRAY_TYPE)                                           \
  V(JS_DATA_VIEW_TYPE)

#define INSTANCE_TYPE_LIST_AFTER_INTL(V) \
  V(WASM_GLOBAL_TYPE)                    \
  V(WASM_INSTANCE_TYPE)                  \
  V(WASM_MEMORY_TYPE)                    \
  V(WASM_MODULE_TYPE)                    \
  V(WASM_TABLE_TYPE)                     \
  V(JS_BOUND_FUNCTION_TYPE)              \
  V(JS_FUNCTION_TYPE)

#ifdef V8_INTL_SUPPORT
#define INSTANCE_TYPE_LIST(V)          \
  INSTANCE_TYPE_LIST_BEFORE_INTL(V)    \
  V(JS_INTL_COLLATOR_TYPE)             \
  V(JS_INTL_LIST_FORMAT_TYPE)          \
  V(JS_INTL_LOCALE_TYPE)               \
  V(JS_INTL_PLURAL_RULES_TYPE)         \
  V(JS_INTL_RELATIVE_TIME_FORMAT_TYPE) \
  INSTANCE_TYPE_LIST_AFTER_INTL(V)
#else
#define INSTANCE_TYPE_LIST(V)       \
  INSTANCE_TYPE_LIST_BEFORE_INTL(V) \
  INSTANCE_TYPE_LIST_AFTER_INTL(V)
#endif  // V8_INTL_SUPPORT

// Since string types are not consecutive, this macro is used to
// iterate over them.
#define STRING_TYPE_LIST(V)                                                    \
  V(STRING_TYPE, kVariableSizeSentinel, string, String)                        \
  V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string,              \
    OneByteString)                                                             \
  V(CONS_STRING_TYPE, ConsString::kSize, cons_string, ConsString)              \
  V(CONS_ONE_BYTE_STRING_TYPE, ConsString::kSize, cons_one_byte_string,        \
    ConsOneByteString)                                                         \
  V(SLICED_STRING_TYPE, SlicedString::kSize, sliced_string, SlicedString)      \
  V(SLICED_ONE_BYTE_STRING_TYPE, SlicedString::kSize, sliced_one_byte_string,  \
    SlicedOneByteString)                                                       \
  V(EXTERNAL_STRING_TYPE, ExternalTwoByteString::kSize, external_string,       \
    ExternalString)                                                            \
  V(EXTERNAL_ONE_BYTE_STRING_TYPE, ExternalOneByteString::kSize,               \
    external_one_byte_string, ExternalOneByteString)                           \
  V(EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE, ExternalTwoByteString::kSize,     \
    external_string_with_one_byte_data, ExternalStringWithOneByteData)         \
  V(UNCACHED_EXTERNAL_STRING_TYPE, ExternalTwoByteString::kUncachedSize,       \
    uncached_external_string, UncachedExternalString)                          \
  V(UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE,                                    \
    ExternalOneByteString::kUncachedSize, uncached_external_one_byte_string,   \
    UncachedExternalOneByteString)                                             \
  V(UNCACHED_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE,                          \
    ExternalTwoByteString::kUncachedSize,                                      \
    uncached_external_string_with_one_byte_data,                               \
    UncachedExternalStringWithOneByteData)                                     \
                                                                               \
  V(INTERNALIZED_STRING_TYPE, kVariableSizeSentinel, internalized_string,      \
    InternalizedString)                                                        \
  V(ONE_BYTE_INTERNALIZED_STRING_TYPE, kVariableSizeSentinel,                  \
    one_byte_internalized_string, OneByteInternalizedString)                   \
  V(EXTERNAL_INTERNALIZED_STRING_TYPE, ExternalTwoByteString::kSize,           \
    external_internalized_string, ExternalInternalizedString)                  \
  V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE, ExternalOneByteString::kSize,  \
    external_one_byte_internalized_string, ExternalOneByteInternalizedString)  \
  V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE,                      \
    ExternalTwoByteString::kSize,                                              \
    external_internalized_string_with_one_byte_data,                           \
    ExternalInternalizedStringWithOneByteData)                                 \
  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE,                                \
    ExternalTwoByteString::kUncachedSize,                                      \
    uncached_external_internalized_string, UncachedExternalInternalizedString) \
  V(UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE,                       \
    ExternalOneByteString::kUncachedSize,                                      \
    uncached_external_one_byte_internalized_string,                            \
    UncachedExternalOneByteInternalizedString)                                 \
  V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE,             \
    ExternalTwoByteString::kUncachedSize,                                      \
    uncached_external_internalized_string_with_one_byte_data,                  \
    UncachedExternalInternalizedStringWithOneByteData)                         \
  V(THIN_STRING_TYPE, ThinString::kSize, thin_string, ThinString)              \
  V(THIN_ONE_BYTE_STRING_TYPE, ThinString::kSize, thin_one_byte_string,        \
    ThinOneByteString)

// A struct is a simple object a set of object-valued fields.  Including an
// object type in this causes the compiler to generate most of the boilerplate
// code for the class including allocation and garbage collection routines,
// casts and predicates.  All you need to define is the class, methods and
// object verification routines.  Easy, no?
//
// Note that for subtle reasons related to the ordering or numerical values of
// type tags, elements in this list have to be added to the INSTANCE_TYPE_LIST
// manually.
#define STRUCT_LIST(V)                                                       \
  V(ACCESS_CHECK_INFO, AccessCheckInfo, access_check_info)                   \
  V(ACCESSOR_INFO, AccessorInfo, accessor_info)                              \
  V(ACCESSOR_PAIR, AccessorPair, accessor_pair)                              \
  V(ALIASED_ARGUMENTS_ENTRY, AliasedArgumentsEntry, aliased_arguments_entry) \
  V(ALLOCATION_MEMENTO, AllocationMemento, allocation_memento)               \
  V(ASYNC_GENERATOR_REQUEST, AsyncGeneratorRequest, async_generator_request) \
  V(DEBUG_INFO, DebugInfo, debug_info)                                       \
  V(FUNCTION_TEMPLATE_INFO, FunctionTemplateInfo, function_template_info)    \
  V(INTERCEPTOR_INFO, InterceptorInfo, interceptor_info)                     \
  V(INTERPRETER_DATA, InterpreterData, interpreter_data)                     \
  V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry)                   \
  V(MODULE, Module, module)                                                  \
  V(OBJECT_TEMPLATE_INFO, ObjectTemplateInfo, object_template_info)          \
  V(PROMISE_CAPABILITY, PromiseCapability, promise_capability)               \
  V(PROMISE_REACTION, PromiseReaction, promise_reaction)                     \
  V(PROTOTYPE_INFO, PrototypeInfo, prototype_info)                           \
  V(SCRIPT, Script, script)                                                  \
  V(STACK_FRAME_INFO, StackFrameInfo, stack_frame_info)                      \
  V(TUPLE2, Tuple2, tuple2)                                                  \
  V(TUPLE3, Tuple3, tuple3)                                                  \
  V(ARRAY_BOILERPLATE_DESCRIPTION, ArrayBoilerplateDescription,              \
    array_boilerplate_description)                                           \
  V(WASM_DEBUG_INFO, WasmDebugInfo, wasm_debug_info)                         \
  V(WASM_EXPORTED_FUNCTION_DATA, WasmExportedFunctionData,                   \
    wasm_exported_function_data)                                             \
  V(CALLABLE_TASK, CallableTask, callable_task)                              \
  V(CALLBACK_TASK, CallbackTask, callback_task)                              \
  V(PROMISE_FULFILL_REACTION_JOB_TASK, PromiseFulfillReactionJobTask,        \
    promise_fulfill_reaction_job_task)                                       \
  V(PROMISE_REJECT_REACTION_JOB_TASK, PromiseRejectReactionJobTask,          \
    promise_reject_reaction_job_task)                                        \
  V(PROMISE_RESOLVE_THENABLE_JOB_TASK, PromiseResolveThenableJobTask,        \
    promise_resolve_thenable_job_task)

#define ALLOCATION_SITE_LIST(V)                                     \
  V(ALLOCATION_SITE, AllocationSite, WithWeakNext, allocation_site) \
  V(ALLOCATION_SITE, AllocationSite, WithoutWeakNext,               \
    allocation_site_without_weaknext)

#define DATA_HANDLER_LIST(V)                        \
  V(LOAD_HANDLER, LoadHandler, 1, load_handler1)    \
  V(LOAD_HANDLER, LoadHandler, 2, load_handler2)    \
  V(LOAD_HANDLER, LoadHandler, 3, load_handler3)    \
  V(STORE_HANDLER, StoreHandler, 0, store_handler0) \
  V(STORE_HANDLER, StoreHandler, 1, store_handler1) \
  V(STORE_HANDLER, StoreHandler, 2, store_handler2) \
  V(STORE_HANDLER, StoreHandler, 3, store_handler3)

}  // namespace internal
}  // namespace v8

#endif  // V8_OBJECTS_DEFINITIONS_H_
