GHC.StgToJS.Rts.Rts

ghc-9.14.0.20251028: The GHC API

Copyright | (c) The University of Glasgow 2001
License | BSD-style (see the file LICENSE)
Maintainer | Jeffrey Young <jeffrey.young@iohk.io> Luite Stegeman <luite.stegeman@iohk.io> Sylvain Henry <sylvain.henry@iohk.io> Josh Meredith <josh.meredith@iohk.io>
Stability | experimental
Safe Haskell | None
Language | GHC2021

GHC.StgToJS.Rts.Rts

Description

Top level driver of the JavaScript Backend RTS. This file is an implementation of the JS RTS for the JS backend written as an EDSL in Haskell. It assumes the existence of pre-generated JS functions, included as js-sources in base. These functions are similarly assumed for non-inline Primops, See `Prim`. Most of the elements in this module are constants in Haskell Land which define pieces of the JS RTS.

Synopsis

- rts :: StgToJSConfig -> JSM JStgStat
- assignRegs :: StgToJSConfig -> [JStgExpr] -> JStgStat

# Documentation

rts :: StgToJSConfig -> JSM JStgStat Source #

Generated RTS code

assignRegs :: StgToJSConfig -> [JStgExpr] -> JStgStat Source #

Assign registers R1 ... Rn in descending order, that is assign Rn first. This function uses the `hdLoads` array to construct functions which set the registers.

JS payload which defines an array of function symbols that set N registers from M parameters. For example, h$l4 compiles to: `function h$l4(x1, x2, x3, x4) { h$r4 = x1; h$r3 = x2; h$r2 = x3; h$r1 = x4; };`