Index: src/heap/heap.h |
diff --git a/src/heap/heap.h b/src/heap/heap.h |
index ec512f4a5023274c82e9c0d0de1e4ac3450c4cbc..5075f6162be2c5e31322d51fb1609576bb23a8ce 100644 |
--- a/src/heap/heap.h |
+++ b/src/heap/heap.h |
@@ -136,6 +136,17 @@ using v8::MemoryPressureLevel; |
V(Map, fixed_float32_array_map, FixedFloat32ArrayMap) \ |
V(Map, fixed_float64_array_map, FixedFloat64ArrayMap) \ |
V(Map, fixed_uint8_clamped_array_map, FixedUint8ClampedArrayMap) \ |
+ /* Oddball maps */ \ |
+ V(Map, undefined_map, UndefinedMap) \ |
+ V(Map, the_hole_map, TheHoleMap) \ |
+ V(Map, null_map, NullMap) \ |
+ V(Map, boolean_map, BooleanMap) \ |
+ V(Map, uninitialized_map, UninitializedMap) \ |
+ V(Map, arguments_marker_map, ArgumentsMarkerMap) \ |
+ V(Map, exception_map, ExceptionMap) \ |
+ V(Map, termination_exception_map, TerminationExceptionMap) \ |
+ V(Map, optimized_out_map, OptimizedOutMap) \ |
+ V(Map, stale_register_map, StaleRegisterMap) \ |
/* Canonical empty values */ \ |
V(ByteArray, empty_byte_array, EmptyByteArray) \ |
V(FixedTypedArrayBase, empty_fixed_uint8_array, EmptyFixedUint8Array) \ |
@@ -155,6 +166,7 @@ using v8::MemoryPressureLevel; |
EmptySlowElementDictionary) \ |
V(PropertyCell, empty_property_cell, EmptyPropertyCell) \ |
V(WeakCell, empty_weak_cell, EmptyWeakCell) \ |
+ V(InterceptorInfo, noop_interceptor_info, NoOpInterceptorInfo) \ |
/* Protectors */ \ |
V(PropertyCell, array_protector, ArrayProtector) \ |
V(Cell, is_concat_spreadable_protector, IsConcatSpreadableProtector) \ |
@@ -201,25 +213,13 @@ using v8::MemoryPressureLevel; |
V(Object, noscript_shared_function_infos, NoScriptSharedFunctionInfos) \ |
V(FixedArray, serialized_templates, SerializedTemplates) \ |
V(FixedArray, serialized_global_proxy_sizes, SerializedGlobalProxySizes) \ |
- /* Configured values */ \ |
V(TemplateList, message_listeners, MessageListeners) \ |
- V(InterceptorInfo, noop_interceptor_info, NoOpInterceptorInfo) \ |
- V(Code, js_entry_code, JsEntryCode) \ |
- V(Code, js_construct_entry_code, JsConstructEntryCode) \ |
- /* Oddball maps */ \ |
- V(Map, undefined_map, UndefinedMap) \ |
- V(Map, the_hole_map, TheHoleMap) \ |
- V(Map, null_map, NullMap) \ |
- V(Map, boolean_map, BooleanMap) \ |
- V(Map, uninitialized_map, UninitializedMap) \ |
- V(Map, arguments_marker_map, ArgumentsMarkerMap) \ |
- V(Map, exception_map, ExceptionMap) \ |
- V(Map, termination_exception_map, TerminationExceptionMap) \ |
- V(Map, optimized_out_map, OptimizedOutMap) \ |
- V(Map, stale_register_map, StaleRegisterMap) \ |
/* per-Isolate map for JSPromiseCapability. */ \ |
/* TODO(caitp): Make this a Struct */ \ |
- V(Map, js_promise_capability_map, JSPromiseCapabilityMap) |
+ V(Map, js_promise_capability_map, JSPromiseCapabilityMap) \ |
+ /* JS Entries */ \ |
+ V(Code, js_entry_code, JsEntryCode) \ |
+ V(Code, js_construct_entry_code, JsConstructEntryCode) |
// Entries in this list are limited to Smis and are not visited during GC. |
#define SMI_ROOT_LIST(V) \ |
@@ -248,64 +248,93 @@ using v8::MemoryPressureLevel; |
// Heap roots that are known to be immortal immovable, for which we can safely |
// skip write barriers. This list is not complete and has omissions. |
#define IMMORTAL_IMMOVABLE_ROOT_LIST(V) \ |
+ V(ArgumentsMarker) \ |
+ V(ArgumentsMarkerMap) \ |
+ V(ArrayBufferNeuteringProtector) \ |
+ V(ArrayIteratorProtector) \ |
+ V(ArrayProtector) \ |
+ V(BlockContextMap) \ |
+ V(BooleanMap) \ |
V(ByteArrayMap) \ |
V(BytecodeArrayMap) \ |
- V(FreeSpaceMap) \ |
- V(OnePointerFillerMap) \ |
- V(TwoPointerFillerMap) \ |
- V(UndefinedValue) \ |
- V(TheHoleValue) \ |
- V(NullValue) \ |
- V(TrueValue) \ |
- V(FalseValue) \ |
- V(UninitializedValue) \ |
+ V(CatchContextMap) \ |
V(CellMap) \ |
- V(GlobalPropertyCellMap) \ |
- V(SharedFunctionInfoMap) \ |
- V(MetaMap) \ |
- V(HeapNumberMap) \ |
- V(MutableHeapNumberMap) \ |
- V(NativeContextMap) \ |
- V(FixedArrayMap) \ |
V(CodeMap) \ |
- V(ScopeInfoMap) \ |
- V(ModuleInfoMap) \ |
- V(FixedCOWArrayMap) \ |
- V(FixedDoubleArrayMap) \ |
- V(WeakCellMap) \ |
- V(TransitionArrayMap) \ |
- V(HashTableMap) \ |
- V(OrderedHashTableMap) \ |
- V(EmptyFixedArray) \ |
V(EmptyByteArray) \ |
V(EmptyDescriptorArray) \ |
- V(ArgumentsMarker) \ |
- V(SymbolMap) \ |
- V(SloppyArgumentsElementsMap) \ |
+ V(EmptyFixedArray) \ |
+ V(EmptyFixedFloat32Array) \ |
+ V(EmptyFixedFloat64Array) \ |
+ V(EmptyFixedInt16Array) \ |
+ V(EmptyFixedInt32Array) \ |
+ V(EmptyFixedInt8Array) \ |
+ V(EmptyFixedUint16Array) \ |
+ V(EmptyFixedUint32Array) \ |
+ V(EmptyFixedUint8Array) \ |
+ V(EmptyFixedUint8ClampedArray) \ |
+ V(EmptyPropertyCell) \ |
+ V(EmptyScopeInfo) \ |
+ V(EmptyScript) \ |
+ V(EmptySloppyArgumentsElements) \ |
+ V(EmptySlowElementDictionary) \ |
+ V(empty_string) \ |
+ V(EmptyWeakCell) \ |
+ V(EvalContextMap) \ |
+ V(Exception) \ |
+ V(FalseValue) \ |
+ V(FastArrayIterationProtector) \ |
+ V(FixedArrayMap) \ |
+ V(FixedCOWArrayMap) \ |
+ V(FixedDoubleArrayMap) \ |
+ V(ForeignMap) \ |
+ V(FreeSpaceMap) \ |
V(FunctionContextMap) \ |
- V(CatchContextMap) \ |
- V(WithContextMap) \ |
- V(BlockContextMap) \ |
+ V(GlobalPropertyCellMap) \ |
+ V(HashTableMap) \ |
+ V(HeapNumberMap) \ |
+ V(HoleNanValue) \ |
+ V(InfinityValue) \ |
+ V(IsConcatSpreadableProtector) \ |
+ V(JsConstructEntryCode) \ |
+ V(JsEntryCode) \ |
+ V(JSMessageObjectMap) \ |
+ V(ManyClosuresCellMap) \ |
+ V(MetaMap) \ |
+ V(MinusInfinityValue) \ |
+ V(MinusZeroValue) \ |
V(ModuleContextMap) \ |
- V(EvalContextMap) \ |
+ V(ModuleInfoMap) \ |
+ V(MutableHeapNumberMap) \ |
+ V(NanValue) \ |
+ V(NativeContextMap) \ |
+ V(NoClosuresCellMap) \ |
+ V(NullMap) \ |
+ V(NullValue) \ |
+ V(OneClosureCellMap) \ |
+ V(OnePointerFillerMap) \ |
+ V(OptimizedOut) \ |
+ V(OrderedHashTableMap) \ |
+ V(ScopeInfoMap) \ |
V(ScriptContextMap) \ |
- V(UndefinedMap) \ |
+ V(SharedFunctionInfoMap) \ |
+ V(SloppyArgumentsElementsMap) \ |
+ V(SpeciesProtector) \ |
+ V(StaleRegister) \ |
+ V(StringLengthProtector) \ |
+ V(SymbolMap) \ |
+ V(TerminationException) \ |
V(TheHoleMap) \ |
- V(NullMap) \ |
- V(BooleanMap) \ |
+ V(TheHoleValue) \ |
+ V(TransitionArrayMap) \ |
+ V(TrueValue) \ |
+ V(TwoPointerFillerMap) \ |
+ V(UndefinedCell) \ |
+ V(UndefinedMap) \ |
+ V(UndefinedValue) \ |
V(UninitializedMap) \ |
- V(ArgumentsMarkerMap) \ |
- V(JSMessageObjectMap) \ |
- V(ForeignMap) \ |
- V(NoClosuresCellMap) \ |
- V(OneClosureCellMap) \ |
- V(ManyClosuresCellMap) \ |
- V(NanValue) \ |
- V(InfinityValue) \ |
- V(MinusZeroValue) \ |
- V(MinusInfinityValue) \ |
- V(EmptyWeakCell) \ |
- V(empty_string) \ |
+ V(UninitializedValue) \ |
+ V(WeakCellMap) \ |
+ V(WithContextMap) \ |
PRIVATE_SYMBOL_LIST(V) |
// Forward declarations. |
@@ -666,7 +695,7 @@ class Heap { |
static void FatalProcessOutOfMemory(const char* location, |
bool is_heap_oom = false); |
- static bool RootIsImmortalImmovable(int root_index); |
+ V8_EXPORT_PRIVATE static bool RootIsImmortalImmovable(int root_index); |
// Checks whether the space is valid. |
static bool IsValidAllocationSpace(AllocationSpace space); |