Skip to main content

torque

Provides expert guidance for navigating, implementing, and verifying V8 Torque (.tq) builtins. Use when modifying or debugging Torque files. Do not use for C++ macro builtins.

Informations de source

Dépôt
nodejs/node
Dernière activité de la source
4 octobre 2026 à 21:04
Langue détectée de SKILL.md
anglais
Étoiles
122 576
Forks
39 930

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
torque
description
Provides expert guidance for navigating, implementing, and verifying V8 Torque (.tq) builtins. Use when modifying or debugging Torque files. Do not use for C++ macro builtins.
# V8 Torque Torque is an Ahead-of-Time (AOT) generator that transforms `.tq` DSL into highly-optimized C++ CodeStubAssembler (CSA) code, which is then compiled into the `mksnapshot` binary. ## Execution Pipeline To debug failures, you must understand its multi-stage build: 1. **Generation**: The Torque compiler reads `.tq` files and generates C++ CodeStubAssembler files (`.cc`, `.h`, `.inc`) in `out/<config>/gen/torque-generated/`. 2. **Compilation**: `mksnapshot` (or the `d8` build) compiles the generated C++ files. 3. **Snapshotting**: `mksnapshot` executes the generated C++ code (via TurboFan or Maglev) to emit highly-optimized raw machine code. 4. **Linking**: The machine code is serialized into a snapshot and linked into V8, meaning Torque builtins run with zero translation overhead at runtime. ## Implementation Patterns Common Torque syntax, keywords, and linkage definitions: ```cpp // 1. Type Casting & Checks const array = Cast<JSArray>(object) otherwise GotoLabel; if (Is<JSArray>(object)) { ... } // 2. Control Flow try { const smi = Cast<Smi>(input) otherwise IsNotSmi; } label IsNotSmi deferred { return runtime::DoSomething(context, input); } // 3. Signatures & Keywords // 'macro': Inlined functions for reusable logic. transitioning macro Name(implicit context: Context)(arg: JSAny): JSAny // 'builtin': Non-inlined functions, callable from other builtins or JavaScript. transitioning builtin Name(implicit context: Context)(arg: JSAny): JSAny // 'javascript': Marks a builtin as directly callable from JavaScript, with JS linkage. transitioning javascript builtin Name(js-implicit context: NativeContext, receiver: JSAny)(arg: JSAny): JSAny // 'transitioning': Indicates a function can cause an object's map to change (e.g. adding properties). // 'extern': Used to call C++ defined CSA functions from Torque. extern transitioning macro NameInCpp(Context, JSAny): JSAny; ``` ## Mandatory verification workflow The task is **incomplete** until you successfully execute this sequence: ### 1. Build Run the `gm.py` wrapper to trigger the Torque generator and C++ compilation. ```bash tools/dev/gm.py quiet {arch}.{type} ``` (e.g., `x64.optdebug` or `arm64.release`). Use `optdebug` for logic/debugging, `release` for performance/benchmarking. ### 2. Verify with Tests Run the relevant test suite (usually `mjsunit` for JavaScript-exposed builtins) to ensure correctness. Match the `{arch}.{type}` to your build. ```bash tools/run-tests.py --progress dots --outdir=out/{arch}.{type} mjsunit/<test_name> ``` ### 3. Debug (If Necessary) If the build fails during "Generation", inspect the `.tq` syntax. If it fails during "Compilation", check the generated C++ in `out/<config>/gen/torque-generated/`.
Voir sur GitHub