1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
{-# LANGUAGE OverloadedStrings #-}
module GHC.StgToJS.StaticPtr
( initStaticPtrs
)
where
import GHC.Prelude
import GHC.Linker.Types (SptEntry(..))
import GHC.Fingerprint.Type
import GHC.Types.Literal
import GHC.JS.JStg.Syntax
import GHC.JS.Make
import GHC.StgToJS.Types
import GHC.StgToJS.Literal
import GHC.StgToJS.Ids
initStaticPtrs :: [SptEntry] -> G JStgStat
initStaticPtrs ptrs = mconcat <$> mapM initStatic ptrs
where
initStatic (SptEntry sp_id (Fingerprint w1 w2)) = do
i <- varForId sp_id
fpa <- concat <$> mapM (genLit . mkLitWord64 . fromIntegral) [w1,w2]
let sptInsert = ApplStat (var "h$hs_spt_insert") (fpa ++ [i])
return $ (var "h$initStatic" .^ "push") `ApplStat` [Func [] sptInsert]
|