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.

Quellinformationen

Repository
nodejs/node
Letzte Quellaktivität
4. Oktober 2026 um 21:04
Erkannte Sprache von SKILL.md
Englisch
Sterne
122.328
Forks
38.780

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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/`.
Auf GitHub ansehen