Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unison.Runtime.ANF.Serialize
Synopsis
- data Version
- index :: Eq v => [v] -> v -> Maybe Word64
- deindex :: HasCallStack => [v] -> Word64 -> v
- pushCtx :: [v] -> [v] -> [v]
- putIndex :: MonadPut m => Word64 -> m ()
- getIndex :: MonadGet m => m Word64
- putVar :: MonadPut m => Eq v => [v] -> v -> m ()
- getVar :: MonadGet m => [v] -> m v
- putArgs :: MonadPut m => Eq v => [v] -> [v] -> m ()
- getArgs :: MonadGet m => [v] -> m [v]
- putCCs :: MonadPut m => [Mem] -> m ()
- getCCs :: MonadGet m => m [Mem]
- putGroup :: MonadPut m => Var v => Map Reference Word64 -> Bool -> SuperGroup v -> m ()
- getGroup :: MonadGet m => SerialConfig m => Var v => m (SuperGroup v)
- putCode :: MonadPut m => Bool -> Code -> m ()
- getCode :: (MonadGet m, SerialConfig m) => m Code
- putInlineInfo :: (MonadPut m, Var v) => [v] -> InlineInfo v -> m ()
- getInlineInfo :: (MonadGet m, SerialConfig m, Var v) => [v] -> Word64 -> m (InlineInfo v)
- putInlineExpr :: (MonadPut m, Var v) => [v] -> ANormal v -> m ()
- getInlineExpr :: (MonadGet m, SerialConfig m, Var v) => [v] -> Word64 -> m (ANormal v)
- putOptInfos :: (MonadPut m, Var v) => OptInfos v -> m ()
- getOptInfos :: (MonadGet m, Var v) => m (OptInfos v)
- putInlineClass :: MonadPut m => InlineClass -> m ()
- getInlineClass :: MonadGet m => m InlineClass
- putCacheability :: MonadPut m => Cacheability -> m ()
- getCacheability :: (MonadGet m, SerialConfig m) => m Cacheability
- putComb :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> SuperNormal v -> m ()
- getFresh :: Var v => Word64 -> v
- getComb :: MonadGet m => SerialConfig m => Var v => [v] -> Word64 -> m (SuperNormal v)
- putNormal :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> ANormal v -> m ()
- getNormal :: MonadGet m => SerialConfig m => Var v => [v] -> Word64 -> m (ANormal v)
- putFunc :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> Func v -> m ()
- getFunc :: (MonadGet m, SerialConfig m, Var v) => [v] -> m (Func v)
- putFOp :: MonadPut m => ForeignFunc -> m ()
- getFOp :: MonadGet m => m ForeignFunc
- putPOp :: MonadPut m => POp -> m ()
- getPOp :: MonadGet m => m POp
- pOpCode :: POp -> Word16
- pOpAssoc :: [(POp, Word16)]
- pop2word :: Map POp Word16
- word2pop :: Map Word16 POp
- putLit :: MonadPut m => Lit -> m ()
- getLit :: MonadGet m => m Lit
- putBLit :: MonadPut m => Version -> BLit -> m ()
- putAsMap :: MonadPut m => Version -> [(Value, Value)] -> m ()
- getBLit :: (MonadGet m, SerialConfig m) => m BLit
- putRefs :: MonadPut m => [Reference] -> m ()
- getRefs :: MonadGet m => m [Reference]
- putBranches :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> Branched (ANormal v) -> m ()
- getBranches :: MonadGet m => SerialConfig m => Var v => [v] -> Word64 -> m (Branched (ANormal v))
- putCase :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> ([Mem], ANormal v) -> m ()
- getCase :: MonadGet m => SerialConfig m => Var v => [v] -> Word64 -> m ([Mem], ANormal v)
- putCTag :: MonadPut m => CTag -> m ()
- getCTag :: MonadGet m => m CTag
- putGroupRef :: MonadPut m => GroupRef -> m ()
- getGroupRef :: MonadGet m => m GroupRef
- putValue :: MonadPut m => Version -> Value -> m ()
- getValue :: (MonadGet m, SerialConfig m) => m Value
- putCont :: MonadPut m => Version -> Cont -> m ()
- getCont :: (MonadGet m, SerialConfig m) => m Cont
- deserializeCode :: ByteString -> Either String (Referenced Code)
- serializeCode :: Bool -> Referenced Code -> ByteString
- serializeCodeWithVersion :: Word64 -> Bool -> Referenced Code -> IO (Either String ByteString)
- serializeGroupForRehash :: Var v => Reference -> SuperGroup v -> ByteString
- getVersionedValue :: MonadGet m => m (Referenced Value)
- deserializeValue :: ByteString -> Either String (Referenced Value)
- serializeValue :: Referenced Value -> ByteString
- serializeValueWithVersion :: Word64 -> Referenced Value -> IO ByteString
- serializeValueForHash :: Value -> ByteString
- getGroupCurrent :: (MonadGet m, Var v) => m (SuperGroup v)
- askVersion :: SerialConfig m => m Version
- askFOp :: SerialConfig m => m Bool
- type SerialConfig m = MonadReader (Version, Bool) m
- type BDeserial = ReaderT (Version, Bool) Get
- type SDeserial = ReaderT (Version, Bool) Get
- valueToCode :: Version -> Version
- withCodeVersion :: SerialConfig m => m r -> m r
- valueVersion :: Word32
- codeVersion :: Word32
Documentation
deindex :: HasCallStack => [v] -> Word64 -> v Source #
getGroup :: MonadGet m => SerialConfig m => Var v => m (SuperGroup v) Source #
putInlineInfo :: (MonadPut m, Var v) => [v] -> InlineInfo v -> m () Source #
getInlineInfo :: (MonadGet m, SerialConfig m, Var v) => [v] -> Word64 -> m (InlineInfo v) Source #
getInlineExpr :: (MonadGet m, SerialConfig m, Var v) => [v] -> Word64 -> m (ANormal v) Source #
putInlineClass :: MonadPut m => InlineClass -> m () Source #
getInlineClass :: MonadGet m => m InlineClass Source #
putCacheability :: MonadPut m => Cacheability -> m () Source #
getCacheability :: (MonadGet m, SerialConfig m) => m Cacheability Source #
putComb :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> SuperNormal v -> m () Source #
getComb :: MonadGet m => SerialConfig m => Var v => [v] -> Word64 -> m (SuperNormal v) Source #
putNormal :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> ANormal v -> m () Source #
putFOp :: MonadPut m => ForeignFunc -> m () Source #
getFOp :: MonadGet m => m ForeignFunc Source #
putBranches :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> Branched (ANormal v) -> m () Source #
getBranches :: MonadGet m => SerialConfig m => Var v => [v] -> Word64 -> m (Branched (ANormal v)) Source #
putCase :: MonadPut m => Var v => Map Reference Word64 -> Bool -> [v] -> ([Mem], ANormal v) -> m () Source #
putGroupRef :: MonadPut m => GroupRef -> m () Source #
getGroupRef :: MonadGet m => m GroupRef Source #
deserializeCode :: ByteString -> Either String (Referenced Code) Source #
serializeCode :: Bool -> Referenced Code -> ByteString Source #
serializeCodeWithVersion :: Word64 -> Bool -> Referenced Code -> IO (Either String ByteString) Source #
serializeGroupForRehash :: Var v => Reference -> SuperGroup v -> ByteString Source #
Serializes a SuperGroup
for rehashing.
Expected as arguments are some code, and the Reference
that
refers to it. In particular, if the code refers to itself by
reference, or if the code is part of a mututally-recursive set of
definitions (which have a common hash), the reference used as part
of that (mutual) recursion must be supplied.
Using that reference, we find all references in the code to that
connected component. In the resulting byte string, those references
are instead replaced by positions in a listing of the connected
component. This means that the byte string is independent of the
hash used for the self reference. Only the order matters (which is
determined by the Reference
). Then the bytes can be re-hashed to
establish a new hash for the connected component. This operation
should be idempotent as long as the indexing is preserved.
Supplying a Builtin
reference is not supported. Such code
shouldn't be subject to rehashing.
getVersionedValue :: MonadGet m => m (Referenced Value) Source #
deserializeValue :: ByteString -> Either String (Referenced Value) Source #
getGroupCurrent :: (MonadGet m, Var v) => m (SuperGroup v) Source #
askVersion :: SerialConfig m => m Version Source #
askFOp :: SerialConfig m => m Bool Source #
type SerialConfig m = MonadReader (Version, Bool) m Source #
valueToCode :: Version -> Version Source #
withCodeVersion :: SerialConfig m => m r -> m r Source #
codeVersion :: Word32 Source #