Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 528842d41c0b7fd9ee65f142fa5ca3be206872ec..be118fd41e3dd8b051cd9c4f17f2d26f99ebce47 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -294,159 +294,161 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1; |
// 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'. |
-#define INSTANCE_TYPE_LIST(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(SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE) \ |
- V(SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \ |
- V(SHORT_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(SHORT_EXTERNAL_STRING_TYPE) \ |
- V(SHORT_EXTERNAL_ONE_BYTE_STRING_TYPE) \ |
- V(SHORT_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \ |
- \ |
- V(SYMBOL_TYPE) \ |
- V(HEAP_NUMBER_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_DOUBLE_ARRAY_TYPE) \ |
- V(FILLER_TYPE) \ |
- \ |
- V(ACCESSOR_INFO_TYPE) \ |
- V(ACCESSOR_PAIR_TYPE) \ |
- V(ACCESS_CHECK_INFO_TYPE) \ |
- V(INTERCEPTOR_INFO_TYPE) \ |
- V(CALL_HANDLER_INFO_TYPE) \ |
- V(FUNCTION_TEMPLATE_INFO_TYPE) \ |
- V(OBJECT_TEMPLATE_INFO_TYPE) \ |
- V(ALLOCATION_SITE_TYPE) \ |
- V(ALLOCATION_MEMENTO_TYPE) \ |
- V(SCRIPT_TYPE) \ |
- V(TYPE_FEEDBACK_INFO_TYPE) \ |
- V(ALIASED_ARGUMENTS_ENTRY_TYPE) \ |
- V(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE) \ |
- V(PROMISE_REACTION_JOB_INFO_TYPE) \ |
- V(DEBUG_INFO_TYPE) \ |
- V(BREAK_POINT_INFO_TYPE) \ |
- V(STACK_FRAME_INFO_TYPE) \ |
- V(PROTOTYPE_INFO_TYPE) \ |
- V(TUPLE2_TYPE) \ |
- V(TUPLE3_TYPE) \ |
- V(CONTEXT_EXTENSION_TYPE) \ |
- V(CONSTANT_ELEMENTS_PAIR_TYPE) \ |
- V(MODULE_TYPE) \ |
- V(MODULE_INFO_ENTRY_TYPE) \ |
- V(ASYNC_GENERATOR_REQUEST_TYPE) \ |
- V(FIXED_ARRAY_TYPE) \ |
- V(TRANSITION_ARRAY_TYPE) \ |
- V(SHARED_FUNCTION_INFO_TYPE) \ |
- V(CELL_TYPE) \ |
- V(WEAK_CELL_TYPE) \ |
- V(PROPERTY_CELL_TYPE) \ |
- \ |
- V(JS_PROXY_TYPE) \ |
- V(JS_GLOBAL_OBJECT_TYPE) \ |
- V(JS_GLOBAL_PROXY_TYPE) \ |
- V(JS_SPECIAL_API_OBJECT_TYPE) \ |
- V(JS_VALUE_TYPE) \ |
- V(JS_MESSAGE_OBJECT_TYPE) \ |
- V(JS_DATE_TYPE) \ |
- V(JS_API_OBJECT_TYPE) \ |
- V(JS_OBJECT_TYPE) \ |
- V(JS_ARGUMENTS_TYPE) \ |
- V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ |
- V(JS_GENERATOR_OBJECT_TYPE) \ |
- V(JS_ASYNC_GENERATOR_OBJECT_TYPE) \ |
- V(JS_MODULE_NAMESPACE_TYPE) \ |
- V(JS_ARRAY_TYPE) \ |
- V(JS_ARRAY_BUFFER_TYPE) \ |
- V(JS_TYPED_ARRAY_TYPE) \ |
- V(JS_DATA_VIEW_TYPE) \ |
- V(JS_SET_TYPE) \ |
- V(JS_MAP_TYPE) \ |
- V(JS_SET_ITERATOR_TYPE) \ |
- V(JS_MAP_ITERATOR_TYPE) \ |
- V(JS_WEAK_MAP_TYPE) \ |
- V(JS_WEAK_SET_TYPE) \ |
- V(JS_PROMISE_CAPABILITY_TYPE) \ |
- V(JS_PROMISE_TYPE) \ |
- V(JS_REGEXP_TYPE) \ |
- V(JS_ERROR_TYPE) \ |
- V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) \ |
- V(JS_STRING_ITERATOR_TYPE) \ |
- \ |
- V(JS_TYPED_ARRAY_KEY_ITERATOR_TYPE) \ |
- V(JS_FAST_ARRAY_KEY_ITERATOR_TYPE) \ |
- V(JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE) \ |
- \ |
- V(JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- \ |
- V(JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- V(JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
- \ |
- V(JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_INT8_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_INT16_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_INT32_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE) \ |
- \ |
- V(JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ |
- V(JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE) \ |
- \ |
- V(JS_BOUND_FUNCTION_TYPE) \ |
+#define INSTANCE_TYPE_LIST(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(SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE) \ |
+ V(SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \ |
+ V(SHORT_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(SHORT_EXTERNAL_STRING_TYPE) \ |
+ V(SHORT_EXTERNAL_ONE_BYTE_STRING_TYPE) \ |
+ V(SHORT_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \ |
+ \ |
+ V(SYMBOL_TYPE) \ |
+ V(HEAP_NUMBER_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_DOUBLE_ARRAY_TYPE) \ |
+ V(FILLER_TYPE) \ |
+ \ |
+ V(ACCESSOR_INFO_TYPE) \ |
+ V(ACCESSOR_PAIR_TYPE) \ |
+ V(ACCESS_CHECK_INFO_TYPE) \ |
+ V(INTERCEPTOR_INFO_TYPE) \ |
+ V(FUNCTION_TEMPLATE_INFO_TYPE) \ |
+ V(OBJECT_TEMPLATE_INFO_TYPE) \ |
+ V(ALLOCATION_SITE_TYPE) \ |
+ V(ALLOCATION_MEMENTO_TYPE) \ |
+ V(SCRIPT_TYPE) \ |
+ V(ALIASED_ARGUMENTS_ENTRY_TYPE) \ |
+ V(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE) \ |
+ V(PROMISE_REACTION_JOB_INFO_TYPE) \ |
+ V(DEBUG_INFO_TYPE) \ |
+ V(STACK_FRAME_INFO_TYPE) \ |
+ V(PROTOTYPE_INFO_TYPE) \ |
+ V(TUPLE2_TYPE) \ |
+ V(TUPLE3_TYPE) \ |
+ V(CONTEXT_EXTENSION_TYPE) \ |
+ V(MODULE_TYPE) \ |
+ V(MODULE_INFO_ENTRY_TYPE) \ |
+ V(ASYNC_GENERATOR_REQUEST_TYPE) \ |
+ V(FIXED_ARRAY_TYPE) \ |
+ V(TRANSITION_ARRAY_TYPE) \ |
+ V(SHARED_FUNCTION_INFO_TYPE) \ |
+ V(CELL_TYPE) \ |
+ V(WEAK_CELL_TYPE) \ |
+ V(PROPERTY_CELL_TYPE) \ |
+ /* TODO(yangguo): these padding types are for ABI stability. Remove after*/ \ |
+ /* version 6.0 branch, or replace them when there is demand for new types.*/ \ |
+ V(PADDING_TYPE_1) \ |
+ V(PADDING_TYPE_2) \ |
+ V(PADDING_TYPE_3) \ |
+ V(PADDING_TYPE_4) \ |
+ \ |
+ V(JS_PROXY_TYPE) \ |
+ V(JS_GLOBAL_OBJECT_TYPE) \ |
+ V(JS_GLOBAL_PROXY_TYPE) \ |
+ V(JS_SPECIAL_API_OBJECT_TYPE) \ |
+ V(JS_VALUE_TYPE) \ |
+ V(JS_MESSAGE_OBJECT_TYPE) \ |
+ V(JS_DATE_TYPE) \ |
+ V(JS_API_OBJECT_TYPE) \ |
+ V(JS_OBJECT_TYPE) \ |
+ V(JS_ARGUMENTS_TYPE) \ |
+ V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ |
+ V(JS_GENERATOR_OBJECT_TYPE) \ |
+ V(JS_ASYNC_GENERATOR_OBJECT_TYPE) \ |
+ V(JS_MODULE_NAMESPACE_TYPE) \ |
+ V(JS_ARRAY_TYPE) \ |
+ V(JS_ARRAY_BUFFER_TYPE) \ |
+ V(JS_TYPED_ARRAY_TYPE) \ |
+ V(JS_DATA_VIEW_TYPE) \ |
+ V(JS_SET_TYPE) \ |
+ V(JS_MAP_TYPE) \ |
+ V(JS_SET_ITERATOR_TYPE) \ |
+ V(JS_MAP_ITERATOR_TYPE) \ |
+ V(JS_WEAK_MAP_TYPE) \ |
+ V(JS_WEAK_SET_TYPE) \ |
+ V(JS_PROMISE_CAPABILITY_TYPE) \ |
+ V(JS_PROMISE_TYPE) \ |
+ V(JS_REGEXP_TYPE) \ |
+ V(JS_ERROR_TYPE) \ |
+ V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) \ |
+ V(JS_STRING_ITERATOR_TYPE) \ |
+ \ |
+ V(JS_TYPED_ARRAY_KEY_ITERATOR_TYPE) \ |
+ V(JS_FAST_ARRAY_KEY_ITERATOR_TYPE) \ |
+ V(JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE) \ |
+ \ |
+ V(JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ \ |
+ V(JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ |
+ \ |
+ V(JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_INT8_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_INT16_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_INT32_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ \ |
+ V(JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ V(JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE) \ |
+ \ |
+ V(JS_BOUND_FUNCTION_TYPE) \ |
V(JS_FUNCTION_TYPE) |
// Since string types are not consecutive, this macro is used to |
@@ -517,26 +519,22 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1; |
V(ACCESSOR_PAIR, AccessorPair, accessor_pair) \ |
V(ACCESS_CHECK_INFO, AccessCheckInfo, access_check_info) \ |
V(INTERCEPTOR_INFO, InterceptorInfo, interceptor_info) \ |
- V(CALL_HANDLER_INFO, CallHandlerInfo, call_handler_info) \ |
V(FUNCTION_TEMPLATE_INFO, FunctionTemplateInfo, function_template_info) \ |
V(OBJECT_TEMPLATE_INFO, ObjectTemplateInfo, object_template_info) \ |
V(ALLOCATION_SITE, AllocationSite, allocation_site) \ |
V(ALLOCATION_MEMENTO, AllocationMemento, allocation_memento) \ |
V(SCRIPT, Script, script) \ |
- V(TYPE_FEEDBACK_INFO, TypeFeedbackInfo, type_feedback_info) \ |
V(ALIASED_ARGUMENTS_ENTRY, AliasedArgumentsEntry, aliased_arguments_entry) \ |
V(PROMISE_RESOLVE_THENABLE_JOB_INFO, PromiseResolveThenableJobInfo, \ |
promise_resolve_thenable_job_info) \ |
V(PROMISE_REACTION_JOB_INFO, PromiseReactionJobInfo, \ |
promise_reaction_job_info) \ |
V(DEBUG_INFO, DebugInfo, debug_info) \ |
- V(BREAK_POINT_INFO, BreakPointInfo, break_point_info) \ |
V(STACK_FRAME_INFO, StackFrameInfo, stack_frame_info) \ |
V(PROTOTYPE_INFO, PrototypeInfo, prototype_info) \ |
V(TUPLE2, Tuple2, tuple2) \ |
V(TUPLE3, Tuple3, tuple3) \ |
V(CONTEXT_EXTENSION, ContextExtension, context_extension) \ |
- V(CONSTANT_ELEMENTS_PAIR, ConstantElementsPair, constant_elements_pair) \ |
V(MODULE, Module, module) \ |
V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry) \ |
V(ASYNC_GENERATOR_REQUEST, AsyncGeneratorRequest, async_generator_request) |
@@ -691,24 +689,20 @@ enum InstanceType { |
ACCESSOR_PAIR_TYPE, |
ACCESS_CHECK_INFO_TYPE, |
INTERCEPTOR_INFO_TYPE, |
- CALL_HANDLER_INFO_TYPE, |
FUNCTION_TEMPLATE_INFO_TYPE, |
OBJECT_TEMPLATE_INFO_TYPE, |
ALLOCATION_SITE_TYPE, |
ALLOCATION_MEMENTO_TYPE, |
SCRIPT_TYPE, |
- TYPE_FEEDBACK_INFO_TYPE, |
ALIASED_ARGUMENTS_ENTRY_TYPE, |
PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE, |
PROMISE_REACTION_JOB_INFO_TYPE, |
DEBUG_INFO_TYPE, |
- BREAK_POINT_INFO_TYPE, |
STACK_FRAME_INFO_TYPE, |
PROTOTYPE_INFO_TYPE, |
TUPLE2_TYPE, |
TUPLE3_TYPE, |
CONTEXT_EXTENSION_TYPE, |
- CONSTANT_ELEMENTS_PAIR_TYPE, |
MODULE_TYPE, |
MODULE_INFO_ENTRY_TYPE, |
ASYNC_GENERATOR_REQUEST_TYPE, |
@@ -719,6 +713,13 @@ enum InstanceType { |
WEAK_CELL_TYPE, |
PROPERTY_CELL_TYPE, |
+ // TODO(yangguo): these padding types are for ABI stability. Remove after |
+ // version 6.0 branch, or replace them when there is demand for new types. |
+ PADDING_TYPE_1, |
+ PADDING_TYPE_2, |
+ PADDING_TYPE_3, |
+ PADDING_TYPE_4, |
+ |
// All the following types are subtypes of JSReceiver, which corresponds to |
// objects in the JS sense. The first and the last type in this range are |
// the two forms of function. This organization enables using the same |
@@ -978,129 +979,132 @@ template <class C> inline bool Is(Object* obj); |
V(Primitive) \ |
V(Number) |
-#define HEAP_OBJECT_TYPE_LIST(V) \ |
- V(HeapNumber) \ |
- V(MutableHeapNumber) \ |
- V(Name) \ |
- V(UniqueName) \ |
- V(String) \ |
- V(SeqString) \ |
- V(ExternalString) \ |
- V(ConsString) \ |
- V(SlicedString) \ |
- V(ExternalTwoByteString) \ |
- V(ExternalOneByteString) \ |
- V(SeqTwoByteString) \ |
- V(SeqOneByteString) \ |
- V(InternalizedString) \ |
- V(ThinString) \ |
- V(Symbol) \ |
- \ |
- V(FixedTypedArrayBase) \ |
- V(FixedUint8Array) \ |
- V(FixedInt8Array) \ |
- V(FixedUint16Array) \ |
- V(FixedInt16Array) \ |
- V(FixedUint32Array) \ |
- V(FixedInt32Array) \ |
- V(FixedFloat32Array) \ |
- V(FixedFloat64Array) \ |
- V(FixedUint8ClampedArray) \ |
- V(ByteArray) \ |
- V(BytecodeArray) \ |
- V(FreeSpace) \ |
- V(JSReceiver) \ |
- V(JSObject) \ |
- V(JSArgumentsObject) \ |
- V(JSContextExtensionObject) \ |
- V(JSGeneratorObject) \ |
- V(JSAsyncGeneratorObject) \ |
- V(JSModuleNamespace) \ |
- V(Map) \ |
- V(DescriptorArray) \ |
- V(FrameArray) \ |
- V(TransitionArray) \ |
- V(FeedbackMetadata) \ |
- V(FeedbackVector) \ |
- V(DeoptimizationInputData) \ |
- V(DeoptimizationOutputData) \ |
- V(DependentCode) \ |
- V(HandlerTable) \ |
- V(FixedArray) \ |
- V(BoilerplateDescription) \ |
- V(FixedDoubleArray) \ |
- V(WeakFixedArray) \ |
- V(ArrayList) \ |
- V(RegExpMatchInfo) \ |
- V(Context) \ |
- V(ScriptContextTable) \ |
- V(NativeContext) \ |
- V(ScopeInfo) \ |
- V(ModuleInfo) \ |
- V(JSBoundFunction) \ |
- V(JSFunction) \ |
- V(Code) \ |
- V(AbstractCode) \ |
- V(Oddball) \ |
- V(SharedFunctionInfo) \ |
- V(JSValue) \ |
- V(JSDate) \ |
- V(JSMessageObject) \ |
- V(StringWrapper) \ |
- V(Foreign) \ |
- V(Boolean) \ |
- V(JSArray) \ |
- V(JSArrayBuffer) \ |
- V(JSArrayBufferView) \ |
- V(JSAsyncFromSyncIterator) \ |
- V(JSCollection) \ |
- V(JSTypedArray) \ |
- V(JSArrayIterator) \ |
- V(JSDataView) \ |
- V(JSProxy) \ |
- V(JSError) \ |
- V(JSPromiseCapability) \ |
- V(JSPromise) \ |
- V(JSStringIterator) \ |
- V(JSSet) \ |
- V(JSMap) \ |
- V(JSSetIterator) \ |
- V(JSMapIterator) \ |
- V(JSWeakCollection) \ |
- V(JSWeakMap) \ |
- V(JSWeakSet) \ |
- V(JSRegExp) \ |
- V(HashTable) \ |
- V(Dictionary) \ |
- V(UnseededNumberDictionary) \ |
- V(StringTable) \ |
- V(StringSet) \ |
- V(NormalizedMapCache) \ |
- V(CompilationCacheTable) \ |
- V(CodeCacheHashTable) \ |
- V(MapCache) \ |
- V(JSGlobalObject) \ |
- V(JSGlobalProxy) \ |
- V(Undetectable) \ |
- V(AccessCheckNeeded) \ |
- V(Callable) \ |
- V(Function) \ |
- V(Constructor) \ |
- V(TemplateInfo) \ |
- V(Filler) \ |
- V(FixedArrayBase) \ |
- V(External) \ |
- V(Struct) \ |
- V(Cell) \ |
- V(TemplateList) \ |
- V(PropertyCell) \ |
- V(WeakCell) \ |
- V(ObjectHashTable) \ |
- V(ObjectHashSet) \ |
- V(WeakHashTable) \ |
- V(OrderedHashTable) \ |
- V(SloppyArgumentsElements) \ |
- V(SourcePositionTableWithFrameCache) |
+#define HEAP_OBJECT_TYPE_LIST(V) \ |
+ V(AbstractCode) \ |
+ V(AccessCheckNeeded) \ |
+ V(ArrayList) \ |
+ V(BoilerplateDescription) \ |
+ V(Boolean) \ |
+ V(BreakPointInfo) \ |
+ V(ByteArray) \ |
+ V(BytecodeArray) \ |
+ V(Callable) \ |
+ V(CallHandlerInfo) \ |
+ V(Cell) \ |
+ V(Code) \ |
+ V(CodeCacheHashTable) \ |
+ V(CompilationCacheTable) \ |
+ V(ConsString) \ |
+ V(ConstantElementsPair) \ |
+ V(Constructor) \ |
+ V(Context) \ |
+ V(DeoptimizationInputData) \ |
+ V(DeoptimizationOutputData) \ |
+ V(DependentCode) \ |
+ V(DescriptorArray) \ |
+ V(Dictionary) \ |
+ V(External) \ |
+ V(ExternalOneByteString) \ |
+ V(ExternalString) \ |
+ V(ExternalTwoByteString) \ |
+ V(FeedbackMetadata) \ |
+ V(FeedbackVector) \ |
+ V(Filler) \ |
+ V(FixedArray) \ |
+ V(FixedArrayBase) \ |
+ V(FixedDoubleArray) \ |
+ V(FixedFloat32Array) \ |
+ V(FixedFloat64Array) \ |
+ V(FixedInt16Array) \ |
+ V(FixedInt32Array) \ |
+ V(FixedInt8Array) \ |
+ V(FixedTypedArrayBase) \ |
+ V(FixedUint16Array) \ |
+ V(FixedUint32Array) \ |
+ V(FixedUint8Array) \ |
+ V(FixedUint8ClampedArray) \ |
+ V(Foreign) \ |
+ V(FrameArray) \ |
+ V(FreeSpace) \ |
+ V(Function) \ |
+ V(HandlerTable) \ |
+ V(HashTable) \ |
+ V(HeapNumber) \ |
+ V(InternalizedString) \ |
+ V(JSArgumentsObject) \ |
+ V(JSArray) \ |
+ V(JSArrayBuffer) \ |
+ V(JSArrayBufferView) \ |
+ V(JSArrayIterator) \ |
+ V(JSAsyncFromSyncIterator) \ |
+ V(JSAsyncGeneratorObject) \ |
+ V(JSBoundFunction) \ |
+ V(JSCollection) \ |
+ V(JSContextExtensionObject) \ |
+ V(JSDataView) \ |
+ V(JSDate) \ |
+ V(JSError) \ |
+ V(JSFunction) \ |
+ V(JSGeneratorObject) \ |
+ V(JSGlobalObject) \ |
+ V(JSGlobalProxy) \ |
+ V(JSMap) \ |
+ V(JSMapIterator) \ |
+ V(JSMessageObject) \ |
+ V(JSModuleNamespace) \ |
+ V(JSObject) \ |
+ V(JSPromise) \ |
+ V(JSPromiseCapability) \ |
+ V(JSProxy) \ |
+ V(JSReceiver) \ |
+ V(JSRegExp) \ |
+ V(JSSet) \ |
+ V(JSSetIterator) \ |
+ V(JSStringIterator) \ |
+ V(JSTypedArray) \ |
+ V(JSValue) \ |
+ V(JSWeakCollection) \ |
+ V(JSWeakMap) \ |
+ V(JSWeakSet) \ |
+ V(Map) \ |
+ V(MapCache) \ |
+ V(ModuleInfo) \ |
+ V(MutableHeapNumber) \ |
+ V(Name) \ |
+ V(NativeContext) \ |
+ V(NormalizedMapCache) \ |
+ V(ObjectHashSet) \ |
+ V(ObjectHashTable) \ |
+ V(Oddball) \ |
+ V(OrderedHashTable) \ |
+ V(PropertyCell) \ |
+ V(RegExpMatchInfo) \ |
+ V(ScopeInfo) \ |
+ V(ScriptContextTable) \ |
+ V(SeqOneByteString) \ |
+ V(SeqString) \ |
+ V(SeqTwoByteString) \ |
+ V(SharedFunctionInfo) \ |
+ V(SlicedString) \ |
+ V(SloppyArgumentsElements) \ |
+ V(SourcePositionTableWithFrameCache) \ |
+ V(String) \ |
+ V(StringSet) \ |
+ V(StringTable) \ |
+ V(StringWrapper) \ |
+ V(Struct) \ |
+ V(Symbol) \ |
+ V(TemplateInfo) \ |
+ V(TemplateList) \ |
+ V(ThinString) \ |
+ V(TransitionArray) \ |
+ V(TypeFeedbackInfo) \ |
+ V(Undetectable) \ |
+ V(UniqueName) \ |
+ V(UnseededNumberDictionary) \ |
+ V(WeakCell) \ |
+ V(WeakFixedArray) \ |
+ V(WeakHashTable) |
#define ODDBALL_LIST(V) \ |
V(Undefined, undefined_value) \ |
@@ -7503,8 +7507,7 @@ class JSRegExp: public JSObject { |
DEFINE_OPERATORS_FOR_FLAGS(JSRegExp::Flags) |
- |
-class TypeFeedbackInfo: public Struct { |
+class TypeFeedbackInfo : public Tuple3 { |
public: |
inline int ic_total_count(); |
inline void set_ic_total_count(int count); |
@@ -7525,14 +7528,9 @@ class TypeFeedbackInfo: public Struct { |
DECLARE_CAST(TypeFeedbackInfo) |
- // Dispatched behavior. |
- DECLARE_PRINTER(TypeFeedbackInfo) |
- DECLARE_VERIFIER(TypeFeedbackInfo) |
- |
- static const int kStorage1Offset = HeapObject::kHeaderSize; |
- static const int kStorage2Offset = kStorage1Offset + kPointerSize; |
- static const int kStorage3Offset = kStorage2Offset + kPointerSize; |
- static const int kSize = kStorage3Offset + kPointerSize; |
+ static const int kStorage1Offset = kValue1Offset; |
+ static const int kStorage2Offset = kValue2Offset; |
+ static const int kStorage3Offset = kValue3Offset; |
private: |
static const int kTypeChangeChecksumBits = 7; |
@@ -9857,21 +9855,15 @@ class InterceptorInfo: public Struct { |
DISALLOW_IMPLICIT_CONSTRUCTORS(InterceptorInfo); |
}; |
- |
-class CallHandlerInfo: public Struct { |
+class CallHandlerInfo : public Tuple2 { |
public: |
DECL_ACCESSORS(callback, Object) |
DECL_ACCESSORS(data, Object) |
DECLARE_CAST(CallHandlerInfo) |
- // Dispatched behavior. |
- DECLARE_PRINTER(CallHandlerInfo) |
- DECLARE_VERIFIER(CallHandlerInfo) |
- |
- static const int kCallbackOffset = HeapObject::kHeaderSize; |
- static const int kDataOffset = kCallbackOffset + kPointerSize; |
- static const int kSize = kDataOffset + kPointerSize; |
+ static const int kCallbackOffset = kValue1Offset; |
+ static const int kDataOffset = kValue2Offset; |
private: |
DISALLOW_IMPLICIT_CONSTRUCTORS(CallHandlerInfo); |
@@ -10092,7 +10084,7 @@ class DebugInfo: public Struct { |
// The BreakPointInfo class holds information for break points set in a |
// function. The DebugInfo object holds a BreakPointInfo object for each code |
// position with one or more break points. |
-class BreakPointInfo: public Struct { |
+class BreakPointInfo : public Tuple2 { |
public: |
// The position in the source for the break position. |
DECL_INT_ACCESSORS(source_position) |
@@ -10115,14 +10107,8 @@ class BreakPointInfo: public Struct { |
DECLARE_CAST(BreakPointInfo) |
- // Dispatched behavior. |
- DECLARE_PRINTER(BreakPointInfo) |
- DECLARE_VERIFIER(BreakPointInfo) |
- |
- static const int kSourcePositionIndex = Struct::kHeaderSize; |
- static const int kBreakPointObjectsIndex = |
- kSourcePositionIndex + kPointerSize; |
- static const int kSize = kBreakPointObjectsIndex + kPointerSize; |
+ static const int kSourcePositionIndex = kValue1Offset; |
+ static const int kBreakPointObjectsIndex = kValue2Offset; |
private: |
DISALLOW_IMPLICIT_CONSTRUCTORS(BreakPointInfo); |