Name Description Size
Allocator.cpp = CanGC 28297
Allocator.h 5602
AllocKind.h GC-internal definition of GC cell kinds. 12208
ArenaList-inl.h 7940
ArenaList.h GC-internal definitions of ArenaList and associated heap data structures. 12802
AtomMarking-inl.h 3043
AtomMarking.cpp 9778
AtomMarking.h 3091
Barrier.cpp static 7706
Barrier.h 39773
Cell.h namespace JS 27531
ClearEdgesTracer.h 770
Compacting.cpp Implementation of compacting GC. 32022
FinalizationObservers.cpp GC support for FinalizationRegistry and WeakRef objects. 16121
FinalizationObservers.h 4481
FindSCCs.h Find the strongly connected components of a graph using Tarjan's algorithm, and return them in topological order. Nodes derive from GraphNodeBase and add target edge pointers to sourceNode.gcGraphEdges to describe the graph: struct MyGraphNode : public GraphNodeBase<MyGraphNode> { ... } MyGraphNode node1, node2, node3; node1.gcGraphEdges.put(node2); // Error checking elided. node2.gcGraphEdges.put(node3); node3.gcGraphEdges.put(node2); ComponentFinder<MyGraphNode> finder; finder.addNode(node1); finder.addNode(node2); finder.addNode(node3); MyGraphNode* result = finder.getResultsList(); 5278
GC-inl.h 11219
GC.cpp 149596
GC.h JS engine garbage collector API. 9636
GCAPI.cpp API functions and methods used by the rest of SpiderMonkey and by embeddings. 21464
GCContext-inl.h 1243
GCContext.h GCContext is by GC operations that can run on or off the main thread. Its main function is to provide methods to free memory and update memory accounting. For convenience, it also has delete_ convenience methods that also call destructors. It is passed to finalizers and other sweep-phase hooks as JSContext is not available off the main thread. 7733
GCEnum.h GC-internal enum definitions. 5435
GCInternals.h GC-internal definitions. 9848
GCLock.h GC-internal classes for acquiring and releasing the GC lock. 2940
GCMarker.h When the mark stack is full, the GC does not call js::TraceChildren to mark the reachable "children" of the thing. Rather the thing is put aside and js::TraceChildren is called later when the mark stack is empty. To implement such delayed marking of the children with minimal overhead for the normal case of sufficient stack, we link arenas into a list using Arena::setNextDelayedMarkingArena(). The head of the list is stored in GCMarker::delayedMarkingList. GCMarker::delayMarkingChildren() adds arenas to the list as necessary while markAllDelayedChildren() pops the arenas from the stack until it is empty. 18264
GCParallelTask.cpp 5749
GCParallelTask.h ArgTs 7290
GCProbes.h This interface can be used to insert probes for GC related events. The code must be built with JS_GC_PROBES for these probes to be called from JIT code. 1380
GCRuntime.h 48918 12841
HashUtil.h Used to add entries to a js::HashMap or HashSet where the key depends on a GC thing that may be moved by generational or compacting GC between the call to lookupForAdd() and relookupOrAdd(). 2529
Heap-inl.h 2046
Heap.cpp Tenured heap management. This file contains method definitions for the following classes for code that is not specific to a particular phase of GC: - Arena - ArenaList - FreeLists - ArenaLists - TenuredChunk - ChunkPool 18005
Heap.h The minimum cell size ends up as twice the cell alignment because the mark bitmap contains one bit per CellBytesPerMarkBit bytes (which is equal to CellAlignBytes) and we need two mark bits per cell. 26066
IteratorUtils.h Create an iterator that yields the values from IteratorB(a) for all a in IteratorA(). Equivalent to nested for loops over IteratorA and IteratorB where IteratorB is constructed with a value from IteratorA. 2577
Marking-inl.h static 5678
Marking.cpp clang-format off 90739
Marking.h Marking and sweeping APIs for use by implementations of different GC cell kinds. 4535
MaybeRooted.h Template types for use in generic code: to use Rooted/Handle/MutableHandle in cases where GC may occur, or to use mock versions of those types that perform no rooting or root list manipulation when GC cannot occur. 3652
Memory.cpp System allocation functions generally require the allocation size to be an integer multiple of the page size of the running process. 34246
Memory.h gc_Memory_h 3314 1451
Nursery-inl.h safe - used for value in comparison above 5627
Nursery.cpp 60589
Nursery.h Key Header text 25524
NurseryAwareHashMap.h 7119
ObjectKind-inl.h GC-internal helper functions for getting the AllocKind used to allocate a JSObject and related information. 5378
ParallelWork.h namespace gc 3972
Policy.h JS Garbage Collector. 3025
Pretenuring.cpp 13433
Pretenuring.h Pretenuring. Some kinds of GC cells can be allocated in either the nursery or the tenured heap. The pretenuring system decides where to allocate such cells based on their expected lifetime with the aim of minimising total collection time. Lifetime is predicted based on data gathered about the cells' allocation site. This data is gathered in the middle JIT tiers, after code has stopped executing in the interpreter and before we generate fully optimized code. 8785
PrivateIterators-inl.h GC-internal iterators for various data structures. 4145
PublicIterators.cpp 8866
PublicIterators.h Iterators for various data structures. 4165
RelocationOverlay.h GC-internal definition of relocation overlay used while moving cells. 1691
RootMarking.cpp 15108
Scheduling.cpp We may start to collect a zone before its trigger threshold is reached if GCRuntime::maybeGC() is called for that zone or we start collecting other zones. These eager threshold factors are not configurable. 34750
Scheduling.h 38128
Statistics.cpp If this fails, then you can either delete this assertion and allow all larger-numbered reasons to pile up in the last telemetry bucket, or switch to GC_REASON_3 and bump the max value. 51165
Statistics.h Number of zones collected in this GC. 18678
StoreBuffer-inl.h static 2403
StoreBuffer.cpp 6909
StoreBuffer.h BufferableRef represents an abstract reference for use in the generational GC's remembered set. Entries in the store buffer that cannot be represented with the simple pointer-to-a-pointer scheme must derive from this class and use the generic store buffer interface. A single BufferableRef entry in the generic buffer can represent many entries in the remembered set. For example js::OrderedHashTableRef represents all the incoming edges corresponding to keys in an ordered hash table. 19481
Sweeping.cpp Implementation of GC sweeping. In the SpiderMonkey GC, 'sweeping' is used to mean two things: - updating data structures to remove pointers to dead GC things and updating pointers to moved GC things - finalizing dead GC things Furthermore, the GC carries out gray and weak marking after the start of the sweep phase. This is also implemented in this file. 73081
Tenuring.cpp Implementation of nursery eviction (tenuring). 34199
Tenuring.h 3810
TraceKind.h namespace gc 1782
TraceMethods-inl.h Trace methods for all GC things, defined in a separate header to allow inlining. This also includes eager inline marking versions. Both paths must end up traversing equivalent subgraphs. 11914
Tracer.cpp Public Tracing API **************************************************** 8111
Tracer.h 15026
Verifier.cpp Write barrier verification The next few functions are for write barrier verification. The VerifyBarriers function is a shorthand. It checks if a verification phase is currently running. If not, it starts one. Otherwise, it ends the current phase and starts a new one. The user can adjust the frequency of verifications, which causes VerifyBarriers to be a no-op all but one out of N calls. However, if the |always| parameter is true, it starts a new phase no matter what. Pre-Barrier Verifier: When StartVerifyBarriers is called, a snapshot is taken of all objects in the GC heap and saved in an explicit graph data structure. Later, EndVerifyBarriers traverses the heap again. Any pointer values that were in the snapshot and are no longer found must be marked; otherwise an assertion triggers. Note that we must not GC in between starting and finishing a verification phase. 31302
WeakMap-inl.h namespace detail 15406
WeakMap.cpp 4730
WeakMap.h 12475
WeakMapPtr.cpp 3177
Zone-inl.h static 3020
Zone.cpp 29541
Zone.h 21781
ZoneAllocator.h Public header for allocating memory associated with GC things. 11412