Name Description Size
AllocKind.h GC-internal definition of GC cell kinds. 10093
Allocator.cpp = CanGC 28791
Allocator.h This flag allows an allocation site to request a specific heap based upon the estimated lifetime or lifetime requirements of objects allocated from that site. 3027
ArenaList-inl.h 8462
ArenaList.h GC-internal definitions of ArenaList and associated heap data structures. 13432
AtomMarking-inl.h 3114
AtomMarking.cpp 10249
AtomMarking.h 3194
Barrier.cpp 11096
Barrier.h 38493
Cell.h namespace JS 25543
ClearEdgesTracer.h 1350
FinalizationRegistry.cpp Finalization registry GC implementation. 4944
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(); 5276
FreeOp-inl.h 1634
FreeOp.h A JSFreeOp can do one thing: free memory. For convenience, it has delete_ convenience methods that also call destructors. JSFreeOp is passed to finalizers and other sweep-phase hooks so that we do not need to pass a JSContext to those hooks. 6214
GC-inl.h 11183
GC.cpp 282706
GC.h JS engine garbage collector API. 6710
GCEnum.h GC-internal enum definitions. 5421
GCInternals.h GC-internal definitions. 10044
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. 17422
GCParallelTask.cpp static 4383
GCParallelTask.h ArgTs 5593
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. 1349
GCRuntime.h 44929
GenerateStatsPhases.py 13612
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 1835
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. 31946
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 4388
Marking.cpp clang-format off 137645
Marking.h Marking and sweeping APIs for use by implementations of different GC cell kinds. 4992
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. 3888
Memory.cpp System allocation functions generally require the allocation size to be an integer multiple of the page size of the running process. 33080
Memory.h gc_Memory_h 3189
Nursery-inl.h safe - used for value in comparison above 6419
Nursery.cpp 57014
Nursery.h Key Header text 27978
NurseryAwareHashMap.h 7406
ObjectKind-inl.h GC-internal helper functions for getting the AllocKind used to allocate a JSObject and related information. 5685
ParallelWork.h namespace gc 3994
Policy.h JS Garbage Collector. 3029
PrivateIterators-inl.h GC-internal iterators for various data structures. 4159
PublicIterators.cpp 8526
PublicIterators.h Iterators for various data structures. 5172
RelocationOverlay.h GC-internal definition of relocation overlay used while moving cells. 1683
RootMarking.cpp 21015
Rooting.h namespace js 4144
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. 27688
Scheduling.h 35928
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. 51192
Statistics.h Number of zones collected in this GC. 16449
StoreBuffer-inl.h static 2403
StoreBuffer.cpp 6210
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. 20826
Tracer.cpp Callback Tracer Dispatch ********************************************** 12589
Tracer.h 11750
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. 30440
WeakMap-inl.h namespace detail 15304
WeakMap.cpp 5049
WeakMap.h 14550
WeakMapPtr.cpp 3177
Zone-inl.h static 3442
Zone.cpp 29085
Zone.h 24561
ZoneAllocator.h Public header for allocating memory associated with GC things. 10435
moz.build 1333