unison-runtime-0.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Unison.Runtime.Machine

Synopsis

Documentation

type ActiveThreads = Maybe (IORef (Set ThreadId)) Source #

A ref storing every currently active thread. This is helpful for cleaning up orphaned threads when the main process completes. We track threads when running in a host process like UCM, otherwise we don't bother since forked threads are cleaned up automatically on termination.

info :: Show a => String -> a -> IO () Source #

apply0 :: Maybe (Stack 'UN -> Stack 'BX -> IO ()) -> CCache -> ActiveThreads -> Word64 -> IO () Source #

apply1 :: (Stack 'UN -> Stack 'BX -> IO ()) -> CCache -> ActiveThreads -> Closure -> IO () Source #

jump0 :: (Stack 'UN -> Stack 'BX -> IO ()) -> CCache -> ActiveThreads -> Closure -> IO () Source #

exec :: CCache -> DEnv -> ActiveThreads -> Stack 'UN -> Stack 'BX -> K -> Reference -> RInstr -> IO (DEnv, Stack 'UN, Stack 'BX, K) Source #

Execute an instruction

eval :: CCache -> DEnv -> ActiveThreads -> Stack 'UN -> Stack 'BX -> K -> Reference -> RSection -> IO () Source #

Evaluate a section

enter :: CCache -> DEnv -> ActiveThreads -> Stack 'UN -> Stack 'BX -> K -> Bool -> Args -> RComb -> IO () Source #

name :: Stack 'UN -> Stack 'BX -> Args -> Closure -> IO (Stack 'BX) Source #

apply :: CCache -> DEnv -> ActiveThreads -> Stack 'UN -> Stack 'BX -> K -> Bool -> Args -> Closure -> IO () Source #

jump :: CCache -> DEnv -> ActiveThreads -> Stack 'UN -> Stack 'BX -> K -> Args -> Closure -> IO () Source #

repush :: CCache -> ActiveThreads -> Stack 'UN -> Stack 'BX -> DEnv -> K -> K -> IO () Source #

closeArgs :: Augment -> Stack 'UN -> Stack 'BX -> Seg 'UN -> Seg 'BX -> Args -> IO (Seg 'UN, Seg 'BX) Source #

uprim2 :: Stack 'UN -> UPrim2 -> Int -> Int -> IO (Stack 'UN) Source #

bprim1 :: Stack 'UN -> Stack 'BX -> BPrim1 -> Int -> IO (Stack 'UN, Stack 'BX) Source #

bprim2 :: Stack 'UN -> Stack 'BX -> BPrim2 -> Int -> Int -> IO (Stack 'UN, Stack 'BX) Source #

yield :: CCache -> DEnv -> ActiveThreads -> Stack 'UN -> Stack 'BX -> K -> IO () Source #

discardCont :: DEnv -> Stack 'UN -> Stack 'BX -> K -> Word64 -> IO (DEnv, Stack 'UN, Stack 'BX, K) Source #

updateMap :: Semigroup s => s -> TVar s -> STM s Source #

modifyMap :: TVar s -> (s -> s) -> STM s Source #