- name
- v8-structure
- description
- Maps the V8 dir/folder structure, component locations, and local documentation. Use when locating specific subsystems, mapping src/ code to docs/ design files, or understanding repository architecture.
# V8 Folder Structure
Use this skill to understand the layout of the V8 repository and locate specific
components.
## Main Directories
- `src/`: The main source folder providing the implementation of the virtual
machine. Key subdirectories include:
- `src/api/`: Implements the V8 public C++ API, as declared in `include/`.
- `src/ast/`: Defines the Abstract Syntax Tree (AST) used to represent parsed
JavaScript, including nodes, scopes, and variables.
- `src/base/`: Provides fundamental, low-level utilities, data structures, and
a platform abstraction layer for the entire V8 project.
- `src/baseline/`: Implements the Sparkplug baseline compiler, which generates
machine code directly from bytecode for a fast performance boost.
- `src/bigint/`: The implementation of BigInt operations.
- `src/builtins/`: Implementation of JavaScript built-in functions (e.g.,
`Array.prototype.map`).
- `src/codegen/`: Code generation, including direct machine code generation
via macro assemblers, higher level codegen via CodeStubAssembler,
definitions of machine code metadata like safepoint tables and source
position tables, and `compiler.cc` which defines entry points into the
compilers. This contains subdirectories for architecture specific
implementations, which should be kept in sync with each other as much as
possible.
- `src/common/`: Common definitions and utilities.
- `src/compiler/`: The TurboFan optimizing compiler, including the Turboshaft
CFG compiler.
- `src/d8/`: The `d8` shell implementation, for running V8 in a CLI.
- `src/debug/`: The debugger and debug protocol implementation.
- `src/deoptimizer/`: The deoptimizer implementation, which translates
optimized frames into unoptimized ones.
- `src/execution/`: The definitions of the execution environment, including
the Isolate, frame definitions, microtasks, stack guards, tiering, and
on-stack argument handling.
- `src/handles/`: The handle implementation for GC-safe object references.
- `src/heap/`: The garbage collector and memory management code.
- `src/ic/`: The Inline Caching implementation.
- `src/init/`: The V8 initialization code.
- `src/inspector/`: The inspector protocol implementation.
- `src/interpreter/`: The Ignition bytecode compiler and interpreter.
- `src/json/`: The JSON parser and serializer.
- `src/libplatform/`: The platform abstraction layer, for task runners and
worker threads.
- `src/logging/`: The logging implementation.
- `src/maglev/`: The Maglev mid-tier optimizing compiler.
- `src/numbers/`: Implementations of various numeric operations.
- `src/objects/`: The representation and behaviour of V8 internal and
JavaScript objects.
- `src/parsing/`: The parser and scanner implementation.
- `src/profiler/`: The in-process profiler implementations, for heap
snapshots, allocation tracking, and a sampling CPU profiler.
- `src/regexp/`: The regular expression implementation. This contains
subdirectories for architecture specific implementations, which should be
kept in sync with each other as much as possible.
- `src/runtime/`: C++ functions that can be called from JavaScript at runtime.
- `src/sandbox/`: The implementation of the sandbox, which is a security
feature that attempts to limit V8 memory operations to be within a single
guarded virtual memory allocation, such that corruptions of objects within
the sandbox cannot lead to corruption of objects outside of it.
- `src/snapshot/`: The snapshot implementation, for both the startup snapshot
(read-only, startup heap, and startup context), as well as the
code-serializer, which generates code caches for caching of user script
code.
- `src/strings/`: Implementations of string helpers, such as predicates for
characters, unicode processing, hashing and string building.
- `src/torque/`: The Torque language implementation.
- `src/tracing/`: The tracing implementation.
- `src/trap-handler/`: Implementations of trap handlers.
- `src/wasm/`: The WebAssembly implementation.
- `src/zone/`: The implementation of a simple bump-pointer region-based zone
allocator.
- `test/`: Folder containing most of the tests and testing code.
- `include/`: Folder containing all of V8's publicAPI that is used when V8 is
embedded in other projects such as e.g. the Blink rendering engine.
- `out/`: Folder containing the results of a build. Usually organized in sub
folders for the respective configurations.
- `docs/`: Contains V8 documentation, including high-level, cross-cutting
concept guides at the root, and subsystem-specific directories.
- **Root Documentation**: Documents cross-cutting concerns such as embedding
(`docs/embed.md`), debugging (`docs/gdb.md`), profiling (`docs/profile.md`),
security mitigations (`docs/untrusted-code-mitigations.md`), and building V8
(`docs/build.md`).
- **Subsystem Directories** (often containing deep design docs):
- `docs/builtins/`: V8 built-ins and CodeStubAssembler.
- `docs/codegen/`: Code generation.
- `docs/compiler/`: Compilers (Sparkplug, Maglev, TurboFan, Turboshaft).
- `docs/heap/`: Memory management and Garbage Collector.
- `docs/interpreter/`: Ignition interpreter.
- `docs/objects/`: Object layout and Map representations.
- `docs/parsing/`: JavaScript parsing and AST.
- `docs/regexp/`: Regular expression engine.
- `docs/runtime/`: Runtime functions and execution model.
- `docs/sandbox/`: V8 Security Sandbox.
- `docs/security/`: Security triaging and design principles.
- `docs/snapshot/`: Snapshot and serialization.
- `docs/torque/`: Torque language and builtins.
- `docs/wasm/`: WebAssembly implementation.
Auf GitHub ansehen