ghc-lib-9.6.3.20231014: The GHC API, decoupled from GHC versions
Safe HaskellSafe-Inferred
LanguageHaskell2010

GHC.Wasm.ControlFlow

Synopsis

Documentation

data WasmControl :: Type -> Type -> [WasmType] -> [WasmType] -> Type where Source #

Representation of WebAssembly control flow. Normally written as WasmControl s e pre post Type parameter s is the type of (unspecified) statements. It might be instantiated with an open Cmm block or with a sequence of Wasm instructions. Parameter e is the type of expressions. Parameter pre represents the values that are expected on the WebAssembly stack when the code runs, and post represents the state of the stack on completion.

Constructors

WasmPush :: WasmTypeTag t -> e -> WasmControl s e stack (t ': stack) 
WasmBlock :: WasmFunctionType pre post -> WasmControl s e pre post -> WasmControl s e pre post 
WasmLoop :: WasmFunctionType pre post -> WasmControl s e pre post -> WasmControl s e pre post 
WasmIfTop :: WasmFunctionType pre post -> WasmControl s e pre post -> WasmControl s e pre post -> WasmControl s e ('I32 ': pre) post 
WasmBr :: Int -> WasmControl s e dropped destination 
WasmFallthrough :: WasmControl s e dropped destination 
WasmBrTable :: e -> BrTableInterval -> [Int] -> Int -> WasmControl s e dropped destination 
WasmTailCall :: e -> WasmControl s e t1star t2star 
WasmActions :: s -> WasmControl s e stack stack 
WasmSeq :: WasmControl s e pre mid -> WasmControl s e mid post -> WasmControl s e pre post 

(<>) :: forall s e pre mid post. WasmControl s e pre mid -> WasmControl s e mid post -> WasmControl s e pre post Source #

pattern WasmIf :: WasmFunctionType pre post -> e -> WasmControl s e pre post -> WasmControl s e pre post -> WasmControl s e pre post Source #

data BrTableInterval Source #

Constructors

BrTableInterval 

Instances

Instances details
Show BrTableInterval Source # 
Instance details

Defined in GHC.CmmToAsm.Wasm.Types

Outputable BrTableInterval Source # 
Instance details

Defined in GHC.CmmToAsm.Wasm.Types

Methods

ppr :: BrTableInterval -> SDoc #

inclusiveInterval :: Integer -> Integer -> BrTableInterval Source #

Module : GHC.Wasm.ControlFlow Description : Representation of control-flow portion of the WebAssembly instruction set

data WasmType Source #

WebAssembly type of a WebAssembly value that WebAssembly code could either expect on the evaluation stack or leave on the evaluation stack.

Instances

Instances details
TestEquality WasmTypeTag Source # 
Instance details

Defined in GHC.CmmToAsm.Wasm.Types

Methods

testEquality :: forall (a :: k) (b :: k). WasmTypeTag a -> WasmTypeTag b -> Maybe (a :~: b) #

data WasmTypeTag :: WasmType -> Type where Source #

Singleton type useful for programming with WasmType at the type level.

Instances

Instances details
TestEquality WasmTypeTag Source # 
Instance details

Defined in GHC.CmmToAsm.Wasm.Types

Methods

testEquality :: forall (a :: k) (b :: k). WasmTypeTag a -> WasmTypeTag b -> Maybe (a :~: b) #

Show (WasmTypeTag t) Source # 
Instance details

Defined in GHC.CmmToAsm.Wasm.Types

data TypeList :: [WasmType] -> Type where Source #

List of WebAssembly types used to describe the sequence of WebAssembly values that a block of code may expect on the stack or leave on the stack.

Constructors

TypeListNil :: TypeList '[] 
TypeListCons :: WasmTypeTag t -> TypeList ts -> TypeList (t ': ts) 

data WasmFunctionType pre post Source #

The type of a WebAssembly function, loop, block, or conditional. This type says what values the code expects to pop off the stack and what values it promises to push. The WebAssembly standard requires that this type appear explicitly in the code.

Constructors

WasmFunctionType 

Fields