mirror of
https://github.com/unisonweb/unison.git
synced 2024-10-05 06:07:21 +03:00
Store Char in interchange literals
The serialization is the same, but this is a bit less strange as a representation.
This commit is contained in:
parent
9c9654d0b4
commit
9da57e92e9
@ -1525,7 +1525,7 @@ data BLit
|
|||||||
| BArr PA.ByteArray
|
| BArr PA.ByteArray
|
||||||
| Pos Word64
|
| Pos Word64
|
||||||
| Neg Word64
|
| Neg Word64
|
||||||
| Char Word64
|
| Char Char
|
||||||
| Float Double
|
| Float Double
|
||||||
deriving (Show)
|
deriving (Show)
|
||||||
|
|
||||||
|
@ -657,7 +657,7 @@ putBLit (Code g) = putTag CodeT *> putGroup mempty mempty g
|
|||||||
putBLit (BArr a) = putTag BArrT *> putByteArray a
|
putBLit (BArr a) = putTag BArrT *> putByteArray a
|
||||||
putBLit (Pos n) = putTag PosT *> putPositive n
|
putBLit (Pos n) = putTag PosT *> putPositive n
|
||||||
putBLit (Neg n) = putTag NegT *> putPositive n
|
putBLit (Neg n) = putTag NegT *> putPositive n
|
||||||
putBLit (Char n) = putTag CharT *> putWord64be n
|
putBLit (Char c) = putTag CharT *> putChar c
|
||||||
putBLit (Float d) = putTag FloatT *> putFloat d
|
putBLit (Float d) = putTag FloatT *> putFloat d
|
||||||
|
|
||||||
getBLit :: (MonadGet m) => Version -> m BLit
|
getBLit :: (MonadGet m) => Version -> m BLit
|
||||||
@ -673,7 +673,7 @@ getBLit v =
|
|||||||
BArrT -> BArr <$> getByteArray
|
BArrT -> BArr <$> getByteArray
|
||||||
PosT -> Pos <$> getPositive
|
PosT -> Pos <$> getPositive
|
||||||
NegT -> Neg <$> getPositive
|
NegT -> Neg <$> getPositive
|
||||||
CharT -> Char <$> getWord64be
|
CharT -> Char <$> getChar
|
||||||
FloatT -> Float <$> getFloat
|
FloatT -> Float <$> getFloat
|
||||||
|
|
||||||
putRefs :: (MonadPut m) => [Reference] -> m ()
|
putRefs :: (MonadPut m) => [Reference] -> m ()
|
||||||
|
@ -2125,7 +2125,7 @@ reflectValue rty = goV
|
|||||||
reflectUData :: Word64 -> Int -> IO ANF.BLit
|
reflectUData :: Word64 -> Int -> IO ANF.BLit
|
||||||
reflectUData t v
|
reflectUData t v
|
||||||
| t == natTag = pure $ ANF.Pos (fromIntegral v)
|
| t == natTag = pure $ ANF.Pos (fromIntegral v)
|
||||||
| t == charTag = pure $ ANF.Char (fromIntegral v)
|
| t == charTag = pure $ ANF.Char (toEnum v)
|
||||||
| t == intTag, v >= 0 = pure $ ANF.Pos (fromIntegral v)
|
| t == intTag, v >= 0 = pure $ ANF.Pos (fromIntegral v)
|
||||||
| t == intTag, v < 0 = pure $ ANF.Neg (fromIntegral (- v))
|
| t == intTag, v < 0 = pure $ ANF.Neg (fromIntegral (- v))
|
||||||
| t == floatTag = pure $ ANF.Float (intToDouble v)
|
| t == floatTag = pure $ ANF.Float (intToDouble v)
|
||||||
@ -2204,7 +2204,7 @@ reifyValue0 (rty, rtm) = goV
|
|||||||
goL (ANF.Quote v) = pure . Foreign $ Wrap Rf.valueRef v
|
goL (ANF.Quote v) = pure . Foreign $ Wrap Rf.valueRef v
|
||||||
goL (ANF.Code g) = pure . Foreign $ Wrap Rf.codeRef g
|
goL (ANF.Code g) = pure . Foreign $ Wrap Rf.codeRef g
|
||||||
goL (ANF.BArr a) = pure . Foreign $ Wrap Rf.ibytearrayRef a
|
goL (ANF.BArr a) = pure . Foreign $ Wrap Rf.ibytearrayRef a
|
||||||
goL (ANF.Char w) = pure $ DataU1 Rf.charRef charTag (fromIntegral w)
|
goL (ANF.Char c) = pure $ DataU1 Rf.charRef charTag (fromEnum c)
|
||||||
goL (ANF.Pos w) =
|
goL (ANF.Pos w) =
|
||||||
pure $ DataU1 Rf.natRef natTag (fromIntegral w)
|
pure $ DataU1 Rf.natRef natTag (fromIntegral w)
|
||||||
goL (ANF.Neg w) =
|
goL (ANF.Neg w) =
|
||||||
|
Loading…
Reference in New Issue
Block a user