| Index: src/heap.h
|
| diff --git a/src/heap.h b/src/heap.h
|
| index 1ac4dfaa0808848947834983bd862aa0fc9f44d2..266cdb9684babcb887958522b7a5596aa181ff82 100644
|
| --- a/src/heap.h
|
| +++ b/src/heap.h
|
| @@ -78,6 +78,7 @@ namespace internal {
|
| V(ByteArray, empty_byte_array, EmptyByteArray) \
|
| V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \
|
| V(ConstantPoolArray, empty_constant_pool_array, EmptyConstantPoolArray) \
|
| + V(Smi, stack_limit, StackLimit) \
|
| V(Oddball, arguments_marker, ArgumentsMarker) \
|
| /* The roots above this line should be boring from a GC point of view. */ \
|
| /* This means they are never in new space and never on a page that is */ \
|
| @@ -185,8 +186,14 @@ namespace internal {
|
| V(Code, js_entry_code, JsEntryCode) \
|
| V(Code, js_construct_entry_code, JsConstructEntryCode) \
|
| V(FixedArray, natives_source_cache, NativesSourceCache) \
|
| + V(Smi, last_script_id, LastScriptId) \
|
| V(Script, empty_script, EmptyScript) \
|
| + V(Smi, real_stack_limit, RealStackLimit) \
|
| V(NameDictionary, intrinsic_function_names, IntrinsicFunctionNames) \
|
| + V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \
|
| + V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset) \
|
| + V(Smi, getter_stub_deopt_pc_offset, GetterStubDeoptPCOffset) \
|
| + V(Smi, setter_stub_deopt_pc_offset, SetterStubDeoptPCOffset) \
|
| V(Cell, undefined_cell, UndefineCell) \
|
| V(JSObject, observation_state, ObservationState) \
|
| V(Map, external_map, ExternalMap) \
|
| @@ -196,22 +203,10 @@ namespace internal {
|
| EmptySlowElementDictionary) \
|
| V(Symbol, observed_symbol, ObservedSymbol) \
|
| V(FixedArray, materialized_objects, MaterializedObjects) \
|
| - V(FixedArray, allocation_sites_scratchpad, AllocationSitesScratchpad) \
|
| - V(JSObject, microtask_state, MicrotaskState)
|
| -
|
| -// Entries in this list are limited to Smis and are not visited during GC.
|
| -#define SMI_ROOT_LIST(V) \
|
| - V(Smi, stack_limit, StackLimit) \
|
| - V(Smi, real_stack_limit, RealStackLimit) \
|
| - V(Smi, last_script_id, LastScriptId) \
|
| - V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \
|
| - V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset) \
|
| - V(Smi, getter_stub_deopt_pc_offset, GetterStubDeoptPCOffset) \
|
| - V(Smi, setter_stub_deopt_pc_offset, SetterStubDeoptPCOffset)
|
| + V(FixedArray, allocation_sites_scratchpad, AllocationSitesScratchpad)
|
|
|
| #define ROOT_LIST(V) \
|
| STRONG_ROOT_LIST(V) \
|
| - SMI_ROOT_LIST(V) \
|
| V(StringTable, string_table, StringTable)
|
|
|
| // Heap roots that are known to be immortal immovable, for which we can safely
|
| @@ -1139,6 +1134,7 @@ class Heap {
|
| int start_position,
|
| int end_position,
|
| Object* script,
|
| + Object* stack_trace,
|
| Object* stack_frames);
|
|
|
| // Allocate a new external string object, which is backed by a string
|
| @@ -1259,6 +1255,10 @@ class Heap {
|
| // Notify the heap that a context has been disposed.
|
| int NotifyContextDisposed();
|
|
|
| + // Utility to invoke the scavenger. This is needed in test code to
|
| + // ensure correct callback for weak global handles.
|
| + void PerformScavenge();
|
| +
|
| inline void increment_scan_on_scavenge_pages() {
|
| scan_on_scavenge_pages_++;
|
| if (FLAG_gc_verbose) {
|
| @@ -1347,9 +1347,6 @@ class Heap {
|
| void IterateRoots(ObjectVisitor* v, VisitMode mode);
|
| // Iterates over all strong roots in the heap.
|
| void IterateStrongRoots(ObjectVisitor* v, VisitMode mode);
|
| - // Iterates over entries in the smi roots list. Only interesting to the
|
| - // serializer/deserializer, since GC does not care about smis.
|
| - void IterateSmiRoots(ObjectVisitor* v);
|
| // Iterates over all the other roots in the heap.
|
| void IterateWeakRoots(ObjectVisitor* v, VisitMode mode);
|
|
|
| @@ -1585,7 +1582,7 @@ class Heap {
|
| // Implements the corresponding V8 API function.
|
| bool IdleNotification(int hint);
|
|
|
| - // Declare all the root indices. This defines the root list order.
|
| + // Declare all the root indices.
|
| enum RootListIndex {
|
| #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
|
| STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION)
|
| @@ -1601,14 +1598,8 @@ class Heap {
|
| #undef DECLARE_STRUCT_MAP
|
|
|
| kStringTableRootIndex,
|
| -
|
| -#define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
|
| - SMI_ROOT_LIST(ROOT_INDEX_DECLARATION)
|
| -#undef ROOT_INDEX_DECLARATION
|
| -
|
| - kRootListLength,
|
| kStrongRootListLength = kStringTableRootIndex,
|
| - kSmiRootsStart = kStringTableRootIndex + 1
|
| + kRootListLength
|
| };
|
|
|
| STATIC_CHECK(kUndefinedValueRootIndex == Internals::kUndefinedValueRootIndex);
|
| @@ -1843,8 +1834,6 @@ class Heap {
|
| return amount_of_external_allocated_memory_;
|
| }
|
|
|
| - void DeoptMarkedAllocationSites();
|
| -
|
| // ObjectStats are kept in two arrays, counts and sizes. Related stats are
|
| // stored in a contiguous linear buffer. Stats groups are stored one after
|
| // another.
|
| @@ -2131,11 +2120,6 @@ class Heap {
|
| GarbageCollector SelectGarbageCollector(AllocationSpace space,
|
| const char** reason);
|
|
|
| - // Make sure there is a filler value behind the top of the new space
|
| - // so that the GC does not confuse some unintialized/stale memory
|
| - // with the allocation memento of the object at the top
|
| - void EnsureFillerObjectAtTop();
|
| -
|
| // Performs garbage collection operation.
|
| // Returns whether there is a chance that another major GC could
|
| // collect more garbage.
|
| @@ -2605,13 +2589,6 @@ class VerifyPointersVisitor: public ObjectVisitor {
|
| };
|
|
|
|
|
| -// Verify that all objects are Smis.
|
| -class VerifySmisVisitor: public ObjectVisitor {
|
| - public:
|
| - inline void VisitPointers(Object** start, Object** end);
|
| -};
|
| -
|
| -
|
| // Space iterator for iterating over all spaces of the heap. Returns each space
|
| // in turn, and null when it is done.
|
| class AllSpaces BASE_EMBEDDED {
|
|
|