Name Description Size Coverage
Activation-inl.h static 4065 -
Activation.cpp 1023 -
Activation.h 22474 -
ArgumentsObject-inl.h namespace js 1673 -
ArgumentsObject.cpp static 37867 -
ArgumentsObject.h This array holds either the current argument value or the magic forwarding value. The latter means that the function has both a CallObject and an ArgumentsObject AND the particular formal variable is aliased by the CallObject. In such cases, the CallObject holds the canonical value so any element access to the arguments object should load the value out of the CallObject (which is pointed to by MAYBE_CALL_SLOT). 21147 -
ArrayBufferObject-inl.h 2342 -
ArrayBufferObject.cpp 139482 -
ArrayBufferObject.h 41132 -
ArrayBufferObjectMaybeShared.cpp 3270 -
ArrayBufferViewObject.cpp static 22487 -
ArrayBufferViewObject.h ArrayBufferViewObject Common base class for all array buffer views (DataViewObject and TypedArrayObject). 9976 -
ArrayObject-inl.h static 2854 -
ArrayObject.h 3195 -
AsyncFunction.cpp ES2022 draft rev d03c1ec6e235a5180fa772b6178727c17974cb14 Await in async function https://tc39.es/ecma262/#await Unified implementation of Step 3. fulfilledClosure Abstract Closure. Step 5. rejectedClosure Abstract Closure. 13061 -
AsyncFunction.h 12493 -
AsyncIteration.cpp static 64551 -
AsyncIteration.h 21005 -
AtomsTable.h Implementation details of the atoms table. 5887 -
BigIntType.cpp 125746 -
BigIntType.h 22068 -
BindingKind.h 3014 -
BooleanObject-inl.h = nullptr 785 -
BooleanObject.h Stores this Boolean object's [[PrimitiveValue]]. 1304 -
BoundFunctionObject.cpp 17108 -
BoundFunctionObject.h 6108 -
BuildId.cpp SpiderMonkey buildId-related functionality. 1006 -
BuiltinObjectKind.cpp 4080 -
BuiltinObjectKind.h Built-in objects used by the GetBuiltinConstructor and GetBuiltinPrototype self-hosted intrinsics. 1873 -
BytecodeFormatFlags.h [SMDOC] Bytecode Format flags (JOF_*) 2919 -
BytecodeIterator-inl.h 1070 -
BytecodeIterator.h 2305 -
BytecodeLocation-inl.h 3820 -
BytecodeLocation.cpp 925 -
BytecodeLocation.h 10772 -
BytecodeUtil-inl.h Add an extra pushed value for Or/And opcodes, so that they are included in the pushed array of stack values for type inference. 7987 -
BytecodeUtil.cpp JS bytecode descriptors, disassemblers, and (expression) decompilers. 85120 -
BytecodeUtil.h JS bytecode definitions. 19774 -
Caches.h 20937 -
CallAndConstruct.cpp 5855 -
CallNonGenericMethod.cpp 1146 -
CharacterEncoding.cpp nbytes sets 1 length since this is surrogate pair. 29728 -
CheckIsObjectKind.h vm_CheckIsObjectKind_h 735 -
CodeCoverage.cpp 19143 -
CodeCoverage.h 5274 -
CommonPropertyNames.h A higher-order macro for enumerating all cached property names. 46180 -
Compartment-inl.h Only GC things have to be wrapped or copied. 12099 -
Compartment.cpp Directly allocate the copy in the destination compartment, rather than first flattening it (and possibly allocating in source compartment), because we don't know whether the flattening will pay off later. 19393 -
Compartment.h 17456 -
CompilationAndEvaluation.cpp Same-thread compilation and evaluation APIs. 22798 -
CompletionKind.h 817 -
Compression.cpp 8561 -
Compression.h Compress some of the input. Return true if it should be called again. 4482 -
ConcurrentDelazification.cpp 9840 -
ConcurrentDelazification.h 6267 -
ConstantCompareOperand.h Simple struct for encoding comparison operations with parse-time constant values, presently used with the |StrictConstantEq| and |StrictConstantNe| opcodes. The operand encodes the type of the constant and its payload. The type is encoded in the high-byte and the payload in the low-byte of a 16-bit word. TODO (Bug 1958722): Investigate if larger payloads can be supported in the empty bits of the type. 2846 -
DateObject.h Cached slots holding local properties of the date. These are undefined until the first actual lookup occurs and are reset to undefined whenever the date's time is modified. - LOCAL_TIME_SLOT is either a Double or Undefined. - The remaining slots store either Int32, NaN, or Undefined values. 5295 -
DateTime.cpp !defined(XP_WIN) 28280 -
DateTime.h 21.4.1.2 Time-related Constants ES2025 draft rev 76814cbd5d7842c2a99d28e6e8c7833f1de5bee0 17222 -
DisposableRecord-inl.h static 1205 -
DisposableRecord.cpp static 1347 -
DisposableRecord.h Explicit Resource Management Proposal DisposableResource Records https://arai-a.github.io/ecma262-compare/?pr=3000&id=sec-disposableresource-records 1576 -
DOMEventDispatch.cpp 2028 -
EnvironmentObject-inl.h namespace js 2858 -
EnvironmentObject.cpp / /* Return a shape representing the static scope containing the variable accessed by the ALIASEDVAR op at 'pc'. 156369 -
EnvironmentObject.h Environment objects *************************************************** 66870 -
EqualityOperations.cpp 10358 -
EqualityOperations.h The equality comparisons of js/Equality.h, but with extra efficiency for SpiderMonkey-internal callers. These functions, assuming they're passed C++-valid arguments, are identical to the same-named JS::-namespaced functions -- just with hidden linkage (so they're more efficient to call), and without various external-caller-focused JSAPI-usage assertions performed that SpiderMonkey users never come close to failing. 2409 -
ErrorMessages.cpp SpiderMonkey-internal error-reporting formatting functionality. 1003 -
ErrorObject-inl.h vm_ErrorObject_inl_h 1812 -
ErrorObject.cpp 63669 -
ErrorObject.h Assign the initial error shape to the empty object. (This shape does *not* include .message, which must be added separately if needed; see ErrorObject::init.) 10984 -
ErrorReporting.cpp 21327 -
ErrorReporting.h Use this type instead of JSContext when the object is only used for its ability to allocate memory (via its MallocProvider methods). 8435 -
Exception.cpp 1879 -
Float16.h 11440 -
ForOfIterator.cpp 4648 -
FrameIter-inl.h 1934 -
FrameIter.cpp 28478 -
FrameIter.h 17594 -
FunctionFlags.cpp 688 -
FunctionFlags.h 16262 -
FunctionPrefixKind.h vm_FunctionPrefixKind_h 553 -
GeckoProfiler-inl.h This class is used to suppress profiler sampling during critical sections where stack state is not valid. 4273 -
GeckoProfiler.cpp Ensure all future generated code will be instrumented, or that all currently instrumented code is discarded 25716 -
GeckoProfiler.h 12413 -
GeneratorAndAsyncKind.h namespace js 601 -
GeneratorObject.cpp 17983 -
GeneratorObject.h 8995 -
GeneratorResumeKind.h vm_GeneratorResumeKind_h 562 -
GetterSetter.cpp 1239 -
GetterSetter.h 4226 -
GlobalObject-inl.h static 1011 -
GlobalObject.cpp static 37138 -
GlobalObject.h 43514 -
GuardFuse.h 3931 -
HelperThreads.cpp 67990 -
HelperThreads.h API for managing off-thread work. 10782 -
HelperThreadState.h Definitions for managing off-thread work using a process wide list of worklist items and pool of threads. Worklist items are engine internal, and are distinct from e.g. web workers. 26558 -
HelperThreadTask.h vm_HelperThreadTask_h 2604 -
Id.cpp static 3250 -
Initialization.cpp SpiderMonkey initialization and shutdown code. 9737 -
Int128.cpp 6923 -
Int128.h Unsigned 128-bit integer, implemented as a pair of unsigned 64-bit integers. Supports all basic arithmetic operators. 21577 -
InternalThreadPool.cpp The profiling thread for this helper thread, which can be used to push and pop label frames. This field being non-null indicates that this thread has been registered and needs to be unregistered at shutdown. 9905 -
InternalThreadPool.h An internal thread pool, used for the shell and when JS::SetHelperThreadTaskCallback not called. 2218 -
Interpreter-inl.h Per ES6, lexical declarations may not be accessed in any fashion until they are initialized (i.e., until the actual declaring statement is executed). The various LEXICAL opcodes need to check if the slot is an uninitialized let declaration, represented by the magic value JS_UNINITIALIZED_LEXICAL. 30387 -
Interpreter.cpp JavaScript bytecode interpreter. 169048 -
Interpreter.h JS interpreter interface. 28330 -
InvalidatingFuse.cpp 4602 -
InvalidatingFuse.h 2967 -
IsGivenTypeObject-inl.h 949 -
Iteration.cpp JavaScript iterators. 78585 -
Iteration.h JavaScript iterators. 28851 -
Iterator.cpp 3396 -
JitActivation.cpp 9922 -
JitActivation.h 10804 -
JSAtomState.h Various built-in or commonly-used names pinned on first context. 2139 -
JSAtomUtils-inl.h vm_JSAtomUtils_inl_h 3829 -
JSAtomUtils.cpp JS atom table. 33341 -
JSAtomUtils.h Return a printable, lossless char[] representation of a string-type atom. The returned string is guaranteed to contain only ASCII characters. 3529 -
JSContext-inl.h Set a breakpoint here (break js::ContextChecks::fail) to debug realm/compartment/zone mismatches. 10672 -
JSContext.cpp JS execution context. 49912 -
JSContext.h JS execution context. 44466 -
JSFunction-inl.h namespace js 4785 -
JSFunction.cpp JS function support. 65521 -
JSFunction.h JS function definitions. 35913 -
JSObject-inl.h static 21654 -
JSObject.cpp JS object implementation. 110385 -
JSObject.h / class GlobalObject; class NativeObject; class WithEnvironmentObject; enum class IntegrityLevel { Sealed, Frozen }; /* The NewObjectKind allows an allocation site to specify the lifetime requirements that must be fixed at allocation time. 40286 -
JSONParser.cpp 47095 -
JSONParser.h 22570 -
JSONPrinter.cpp 6126 -
JSONPrinter.h vm_JSONPrinter_h 2795 -
jsopcode.py 10593 -
JSScript-inl.h A JSScript always marks its realm's global so we can assert it's non-null here. We don't need a read barrier here for the same reason JSObject::nonCCWGlobal doesn't need one. 7917 -
JSScript.cpp JS script operations. 126194 -
JSScript.h JS script descriptor. 86079 -
List-inl.h static 1597 -
List.cpp 426 -
List.h The List specification type, ECMA-262 6.2.1. <https://tc39.github.io/ecma262/#sec-list-and-record-specification-type> Lists are simple mutable sequences of values. Many standards use them. Abstractly, they're not objects; they don't have properties or prototypes; they're for internal specification use only. ListObject is our most direct implementation of a List: store the values in the slots of a JSObject. We often implement Lists in other ways. For example, builtin/Utilities.js contains a completely unrelated List constructor that's used in self-hosted code. And AsyncGeneratorObject optimizes away the ListObject in the common case where its internal queue never holds more than one element. ListObjects must not be exposed to content scripts. 2276 -
Logging.cpp static 648 -
Logging.h A predefined log module for casual debugging 5068 -
make_opcode_doc.py Usage: python make_opcode_doc.py This script generates SpiderMonkey bytecode documentation from js/src/vm/Opcodes.h. Output is written to stdout and should be pasted into the following MDN page: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Internals/Bytecode 5288 -
MallocProvider.h Hierarchy of SpiderMonkey system memory allocators: - System {m,c,re}alloc/new/free: Overridden by jemalloc in most environments. Do not use these functions directly. - js_{m,c,re}alloc/new/free: Wraps the system allocators and adds a failure injection framework for use by the fuzzers as well as templated, typesafe variants. See js/public/Utility.h. - AllocPolicy: An interface for the js allocators, for use with templates. These allocators are for system memory whose lifetime is not associated with a GC thing. See js/public/AllocPolicy.h. - SystemAllocPolicy: No extra functionality over bare allocators. - TempAllocPolicy: Adds automatic error reporting to the provided JSContext when allocations fail. - ZoneAllocPolicy: Forwards to the Zone MallocProvider. - MallocProvider. A mixin base class that handles automatically updating the GC's state in response to allocations that are tied to a GC lifetime or are for a particular GC purpose. These allocators must only be used for memory that will be freed when a GC thing is swept. - gc::Zone: Automatically triggers zone GC. - JSRuntime: Automatically triggers full GC. - JSContext: Dispatches directly to the runtime. 8098 -
MatchPairs.h RegExp match results are succinctly represented by pairs of integer indices delimiting (start, limit] segments of the input string. The pair count for a given RegExp match is the capturing parentheses count plus one for the "0 capturing paren" whole text match. 3789 -
MemoryMetrics.cpp static 29064 -
ModuleBuilder.h 4793 -
Modules.cpp JavaScript modules (as in, the syntactic construct) implementation. 111961 -
Modules.h 2717 -
Monitor.h vm_Monitor_h 1556 -
moz.build 4484 -
MutexIDs.h 3084 -
NativeObject-inl.h 28485 -
NativeObject.cpp Objects with no elements share one empty set of elements. 103327 -
NativeObject.h To really poison a set of values, using 'magic' or 'undefined' isn't good enough since often these will just be ignored by buggy code (see bug 629974) in debug builds and crash in release builds. Instead, we use a safe-for-crash pointer. 75199 -
NumberObject-inl.h = nullptr 816 -
NumberObject.h Stores this Number object's [[PrimitiveValue]]. 1283 -
ObjectFlags-inl.h vm_ObjectFlags_inl_h 3321 -
ObjectFlags.h vm_ObjectFlags_h 4598 -
ObjectFuse.cpp 7564 -
ObjectFuse.h 10888 -
ObjectOperations-inl.h Fundamental operations on objects. 13568 -
ObjectOperations.h Fundamental operations on objects. 13185 -
ObjectWithStashedPointer.cpp 2418 -
OffThreadPromiseRuntimeState.cpp 21118 -
OffThreadPromiseRuntimeState.h 17706 -
Opcodes.h 145962 -
PlainObject-inl.h static 3379 -
PlainObject.cpp JS object implementation. 10708 -
PlainObject.h Return the allocKind we would use if we were to tenure this object. 4358 -
PortableBaselineInterpret.cpp JavaScript "portable baseline interpreter": an interpreter that is capable of running ICs, but without any native code. See the [SMDOC] in vm/PortableBaselineInterpret.h for a high-level overview. 329921 -
PortableBaselineInterpret.h 16973 -
Prefs.cpp 823 -
Printer.cpp 19957 -
Probes-inl.h Many probe handlers are implemented inline for minimal performance impact, especially important when no backends are enabled. 1275 -
Probes.cpp 407 -
Probes.h Static probes The probe points defined in this file are scattered around the SpiderMonkey source tree. The presence of probes::SomeEvent() means that someEvent is about to happen or has happened. To the extent possible, probes should be inserted in all paths associated with a given event, regardless of the active runmode (interpreter/traceJIT/methodJIT/ionJIT). When a probe fires, it is handled by any probe handling backends that have been compiled in. By default, most probes do nothing or at least do nothing expensive, so the presence of the probe should have negligible effect on running time. (Probes in slow paths may do something by default, as long as there is no noticeable slowdown.) For some probes, the mere existence of the probe is too expensive even if it does nothing when called. For example, just having consistent information available for a function call entry/exit probe causes the JITs to de-optimize function calls. In those cases, the JITs may query at compile time whether a probe is desired, and omit the probe invocation if not. If a probe is runtime-disabled at compilation time, it is not guaranteed to fire within a compiled function if it is later enabled. Not all backends handle all of the probes listed here. 2626 -
ProfilingStack.cpp 1613 -
PromiseObject.h 9878 -
PropertyAndElement.cpp 38888 -
PropertyDescriptor.cpp 3352 -
PropertyInfo.h Limit on the number of slotful properties in an object. 7272 -
PropertyKey.h vm_PropertyKey_h 2069 -
PropertyResult.h vm_PropertyResult_h 3198 -
PropMap-inl.h 7507 -
PropMap.cpp prev = 43239 -
PropMap.h 43145 -
ProxyObject.cpp static 6908 -
ProxyObject.h This is the base class for the various kinds of proxy objects. It's never instantiated. Proxy objects use their shape primarily to record flags. Property information, &c. is all dynamically computed. There is no class_ member to force specialization of JSObject::is<T>(). The implementation in JSObject is incorrect for proxies since it doesn't take account of the handler type. 5764 -
Realm-inl.h static 3373 -
Realm.cpp As a hack, we clear our timezone cache every time we create a new realm. This ensures that the cache is always relatively fresh, but shouldn't interfere with benchmarks that create tons of date objects (unless they also create tons of iframes, which seems unlikely). 27711 -
Realm.h A single-entry cache for some base-10 double-to-string conversions. This helps date-format-xparb.js. It also avoids skewing the results for v8-splay.js when measured by the SunSpider harness, where the splay tree initialization (which includes many repeated double-to-string conversions) is erroneously included in the measurement; see bug 562553. 34809 -
RealmFuses.cpp 22052 -
RealmFuses.h 15853 -
RecordTupleShared.h 1102 -
RegExpObject.cpp RegExpAlloc ( newTarget ) https://github.com/tc39/proposal-regexp-legacy-features?tab=readme-ov-file 41662 -
RegExpObject.h JavaScript RegExp objects. 9409 -
RegExpShared.h The compiled representation of a RegExp, potentially shared among RegExp instances created during separate evaluations of a single RegExp literal in source code. 15789 -
RegExpStatics.cpp Retrieve or create the RegExpShared in this zone. 1746 -
RegExpStatics.h The latest RegExp output, set after execution. 9794 -
Runtime.cpp static 27413 -
Runtime.h namespace js 40923 -
RuntimeFuses.cpp 2518 -
RuntimeFuses.h 3356 -
SavedFrame.h 10681 -
SavedStacks-inl.h 1271 -
SavedStacks.cpp Maximum number of saved frames returned for an async stack. 74434 -
SavedStacks.h 15192 -
Scope.cpp 60478 -
Scope.h 60558 -
ScopeKind.h 889 -
SelfHosting.cpp 86171 -
SelfHosting.h 10964 -
Shape-inl.h static 3337 -
Shape.cpp static 57338 -
Shape.h 32734 -
ShapeZone.cpp JS symbol tables. 4739 -
ShapeZone.h 8993 -
SharedArrayObject.cpp 37385 -
SharedArrayObject.h SharedArrayRawBuffer A bookkeeping object always stored before the raw buffer. The buffer itself is refcounted. SharedArrayBufferObjects and structured clone objects may hold references. WasmSharedArrayRawBuffer is a derived class that's used for Wasm buffers. - Non-Wasm buffers are allocated with a single calloc allocation, like this: |<------ sizeof ------>|<- length ->| | SharedArrayRawBuffer | data array | - Wasm buffers are allocated with MapBufferMemory (mmap), like this: |<-------- sizeof -------->|<- length ->| | waste | WasmSharedArrayRawBuffer | data array | waste | Observe that if we want to map the data array on a specific address, such as absolute zero (bug 1056027), then the {Wasm}SharedArrayRawBuffer cannot be prefixed to the data array, it has to be a separate object, also in shared memory. (That would get rid of ~4KB of waste, as well.) Very little else would have to change throughout the engine, the SARB would point to the data array using a constant pointer, instead of computing its address. For Wasm buffers, length_ can change following initialization; it may grow toward sourceMaxPages_. See extensive comments above WasmArrayRawBuffer in ArrayBufferObject.cpp. length_ only grows when the lock is held. 17074 -
SharedImmutableStringsCache-inl.h 2667 -
SharedImmutableStringsCache.cpp static 4119 -
SharedImmutableStringsCache.h The `SharedImmutableStringsCache` allows safely sharing and deduplicating immutable strings (either `const char*` [any encoding, not restricted to only Latin-1 or only UTF-8] or `const char16_t*`) between threads. The locking mechanism is dead-simple and coarse grained: a single lock guards all of the internal table itself, the table's entries, and the entries' reference counts. It is only safe to perform any mutation on the cache or any data stored within the cache when this lock is acquired. 13750 -
SharedMem.h 5122 -
SharedScriptDataTableHolder.cpp 751 -
SharedScriptDataTableHolder.h namespace js 2753 -
SharedStencil.h Exception handling record. 34717 -
SourceHook.cpp 903 -
Stack-inl.h Initialize stack frame members. 25124 -
Stack.cpp 25351 -
Stack.h / namespace js { namespace jit { class BaselineFrame; class RematerializedFrame; } // namespace jit /** Pointer to a live JS or WASM stack frame. 33654 -
StaticStrings.cpp 2803 -
StaticStrings.h We keep these public for the JITs. 8733 -
StencilEnums.h 13149 -
StencilObject.cpp static 4950 -
StencilObject.h namespace js 2013 -
StringObject-inl.h static 1629 -
StringObject.h Creates a new String object boxing the given string. The object's [[Prototype]] is determined from context. 2231 -
StringType-inl.h Don't bother trying to find a static atom; measurement shows that not many get here (for one, Atomize is catching them). 29179 -
StringType.cpp 108893 -
StringType.h The buffer length required to contain any unsigned 32-bit integer. 94564 -
StructuredClone.cpp This file implements the structured data algorithms of https://html.spec.whatwg.org/multipage/structured-data.html The spec is in two parts: - StructuredSerialize examines a JS value and produces a graph of Records. - StructuredDeserialize walks the Records and produces a new JS value. The differences between our implementation and the spec are minor: - We call the two phases "write" and "read". - Our algorithms use an explicit work stack, rather than recursion. - Serialized data is a flat array of bytes, not a (possibly cyclic) graph of "Records". - As a consequence, we handle non-treelike object graphs differently. We serialize objects that appear in multiple places in the input as backreferences, using sequential integer indexes. See `JSStructuredCloneReader::allObjs`, our take on the "memory" map in the spec's StructuredDeserialize. 140179 -
SymbolType.cpp 5793 -
SymbolType.h namespace js 5579 -
TaggedProto.cpp static 1235 -
TaggedProto.h Skip nullptr and LazyProto. 5214 -
ThrowMsgKind.cpp 1471 -
ThrowMsgKind.h vm_ThrowMsgKind_h 1035 -
Time.cpp PR time code. 6656 -
Time.h Broken down form of 64 bit time value. 5043 -
ToSource.cpp Convert a JSString to its source expression; returns null after reporting an error, otherwise returns a new string reference. No Handle needed since the input is dead after the GC. 6960 -
ToSource.h 817 -
TypedArrayObject-inl.h Utilities and common inline code for TypedArray 24485 -
TypedArrayObject.cpp TypedArrayObject The non-templated base class for the specific typed implementations. This class holds all the member variables that are used by the subclasses. 247470 -
TypedArrayObject.h TypedArrayObject The non-templated base class for the specific typed implementations. This class holds all the member variables that are used by the subclasses. 16697 -
TypeofEqOperand.h 1422 -
UbiNode.cpp 16030 -
UbiNodeCensus.cpp Count Types *********************************************************** 41234 -
UbiNodeShortestPaths.cpp = 10 2538 -
Uint8Clamped.h std::log10(2) 4974 -
UsageStatistics.cpp 798 -
UsingHint.h vm_UsingHint_h 731 -
Value.cpp 7484 -
Warnings.cpp 3187 -
Warnings.h vm_Warnings_h 839 -
Watchtower.cpp 27327 -
Watchtower.h 7264 -
WellKnownAtom.cpp 1015 -
WellKnownAtom.h namespace js 1579 -
WindowProxy.cpp WindowProxy and Window implementation, for the web browser embedding. 2266 -
WrapperObject.h vm_WrapperObject_h 1075 -
Xdr.cpp 5353 -
Xdr.h 12252 -