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.

Datos de origen

Repositorio
nodejs/node
Última actividad en el origen
4 de octubre de 2026 a las 21:04
Idioma detectado de SKILL.md
inglés
Estrellas
122.301
Forks
39.450

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
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/`.
Ver en GitHub