úÎ!˜SM      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL(c) Alexey Kuleshevich 2020BSD3%Alexey Kuleshevich <lehins@yandex.ru> experimental non-portableNone  =?FHVX0³ pvar&Mutable variable with primitive value.pvaræCreate a mutable variable in unpinned memory (i.e. GC can move it) with an initial value. This is a prefered way to create a mutable variable, since it will not contribute to memory fragmentation. For pinned memory versions see  and pvar>Create a mutable variable in unpinned and unititialized memorypvarACreate a mutable variable in pinned memory with an initial value.pvarECreate a mutable variable in pinned memory with uninitialized memory.pvar_Create a mutable variable in pinned memory with an initial value and aligned according to its pvar9Create a mutable variable in pinned uninitialized memory.pvar‰Create a mutable variable in pinned uninitialized memory using Storable interface for getting the number of bytes for memory allocation.pvar˜Create a mutable variable in pinned uninitialized memory using Storable interface for getting the number of bytes for memory allocation and alignement.pvarYGet the address to the contents. This is highly unsafe, espcially if memory is not pinnedpvarUse " reading functionality inside the  .pvarUse ! wrting functionality inside the  .pvar$Read a value from a mutable variablepvar%Write a value into a mutable variablepvarDGet the size of the mutable variable in bytes as an unpacked integerpvarIGet the alignment of the mutable variable in bytes as an unpacked integerpvar=Size in bytes of a value stored inside the mutable variable.  + itself is neither accessed nor evaluated.pvarGAlignment in bytes of the value stored inside of the mutable variable.  + itself is neither accessed nor evaluated. pvarUnwrap the primitive M!pvar Check if  " is backed by pinned memory or not"pvarUsing N9 perform atomic modification of an integer element in a O . Implies a full memory barrier.#pvar,Apply a function to an integer element of a  , atomically. Implies a full memory barrier.$pvarUses N< to perform atomic modification of an integer element in a O . Implies a full memory barrier.%pvar,Apply a function to an integer element of a  C atomically. Returns the old value. Implies a full memory barrier.Ppvar Values are already written into  ! in NF, this instance is trivial.Qpvar+ will result in a new copy of a  "pvarArray to be mutatedpvarIndex in number of R elements into the Opvar0Function to be applied atomically to the elementpvarStarting state$pvarArray to be mutatedpvarIndex in number of R elements into the Opvar0Function to be applied atomically to the elementpvarStarting state S !"#$%(c) Alexey Kuleshevich 2020BSD3%Alexey Kuleshevich <lehins@yandex.ru> experimental non-portableNoneFXW &pvarConvert   into a T-, very unsafe if not backed by pinned memory.'pvar®Extract the address to the mutable variable, but only if it is backed by pinned memory. It is unsafe because even for pinned memory memory can be deallocated if associated   goes out of scope. Use  or  instead.(pvar0Fill the contents of mutable variable with byte c)pvar-Reset contents of a mutable variable to zero.*pvarªCopy the value from a mutable variable into a mutable array at the specified index. Index of array is not checked and can result in an unchecked exception when incorrect+pvarCopy the value from a frozen U„ into a mutable variable at specified index. Index of array is not checked and can result in an unchecked exception when incorrect,pvarªCopy the value from MutableByteArray at specified index into the mutable variable. Index of array is not checked and can result in an unchecked exception when incorrectVpvar.Copy the value from a mutable variable into a W‹ at the specified offset in number of bytes. Offset into the array is not checked and can result in an unchecked exception when incorrectXpvarCopy the value from a frozen U£ at the specified offset in number of bytes into a mutable variable. Offset into the array is not checked and can result in an unchecked exception when incorrectYpvarCopy the value from a W at an offset in bytes into the mutable variable. Offset into the array is not checked and can result in an unchecked exception when incorrect-pvarShow the type name.pvarCheck whether or not the U is pinned.Note„ - This function uses GHC built-in functions for GHC 8.2 and newer, but for older versions it fallsback onto custom implementation./pvarCheck whether or not the W is pinned.Note„ - This function uses GHC built-in functions for GHC 8.2 and newer, but for older versions it fallsback onto custom implementation.(pvarByte value to fill the   with*pvar+Offset in number of elements into the array+pvar Source arraypvar+Offset in number of elements into the array,pvar+Offset in number of elements into the arrayVpvarOffset in bytes into the arrayXpvar Source arraypvarOffset in bytes into the arrayYpvarOffset in bytes into the array  "$&'()*+,-./ '&)("$+,*./- (c) Alexey Kuleshevich 2020BSD3%Alexey Kuleshevich <lehins@yandex.ru> experimental non-portableNoneFSX–§0pvarRun an  action on a mutable variable.1pvarApply an action to the Zv that references the mutable variable, but only if it is backed by pinned memory, cause otherwise it would be unsafe.2pvarConvert   into a T,, but only if it is backed by pinned memory.3pvar&Copy contents of one mutable variable   into another4pvar$Copy contents of a mutable variable   into a pointer Z5pvarbApply a pure function to the contents of a mutable variable. Returns the artifact of computation.6pvar<Apply a pure function to the contents of a mutable variable.7pvarSApply a pure function to the contents of a mutable variable. Returns the old value.8pvarSApply a pure function to the contents of a mutable variable. Returns the new value.9pvarcApply a monadic action to the contents of a mutable variable. Returns the artifact of computation.:pvarTApply a monadic action to the contents of a mutable variable. Returns the old value.;pvarTApply a monadic action to the contents of a mutable variable. Returns the new value.<pvar=Apply a monadic action to the contents of a mutable variable.=pvarASwap contents of two mutable variables. Returns their old values.>pvar'Swap contents of two mutable variables.?pvar'Apply an action to the newly allocated   and to the ZI that references it. Memory allocated with number of bytes specified by [ aÆ is allocated and pinned, therefore it is safe to operate directly with the pointer as well as over FFI. Returning the pointer from the supplied action would be very unsafe, therefore return the  i if you still need it afterwards, garbage collector will cleanup the memory when it is no longer needed.@pvarSame ?(, except memory is aligned according to \.Apvar Create a new  I in pinned memory with an initial value in it aligned on the size of an M . Implies a full memory barrier.BpvarWrite a value into an  + atomically. Implies a full memory barrier.Cpvar,Apply a function to an integer element of a  C atomically. Implies a full memory barrier. Returns the new value.Dpvar,Apply a function to an integer element of a  C atomically. Implies a full memory barrier. Returns the new value.EpvarECompare and swap. This is also a function that is used to implement # . Implies a full memory barrier.Fpvar Add two numbers, corresponds to (])e done atomically. Returns the previous value of the mutable variable. Implies a full memory barrier.Gpvar%Subtract two numbers, corresponds to (^)e done atomically. Returns the previous value of the mutable variable. Implies a full memory barrier.Hpvar(Binary conjuction (AND), corresponds to ()e done atomically. Returns the previous value of the mutable variable. Implies a full memory barrier.Ipvar5Binary negation of conjuction (NAND), corresponds to \x y ->  (x  y)e done atomically. Returns the previous value of the mutable variable. Implies a full memory barrier.Jpvar(Binary disjunction (OR), corresponds to ( )e done atomically. Returns the previous value of the mutable variable. Implies a full memory barrier.Kpvar3Binary exclusive disjunction (XOR), corresponds to  e done atomically. Returns the previous value of the mutable variable. Implies a full memory barrier.Lpvar,Binary negation (NOT), corresponds to ones' e done atomically. Returns the previous value of the mutable variable. Implies a full memory barrier.0pvar.Initial value assigned to the mutable variablepvar Action to runpvarResult produced by the  action3pvarSource variablepvarDestination variable?pvar Initial valuepvar Action to run@pvar Initial valuepvar Action to runEpvarVariable to mutatepvarOld expected valuepvar New valuepvarOld actual value5 !#%0123456789:;<=>?@ABCDEFGHIJKL5 056789<:;>=31?@42!#%CDABEFGHIJKL _     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^_ ` abc defghijhklmnopqprs#pvar-0.2.0.0-1GFH2o5nmq43tCj4dcxyBHData.Primitive.PVarData.Primitive.PVar.UnsafeData.Primitive.PVar.Internal withPtrPVar toForeignPtr Data.Bits.&. complement.|.xorghc-primGHC.Prim RealWorldisMutableByteArrayPinned#isByteArrayPinned#baseGHC.STSTForeign.StorablepokepeekStorablerunST'primitive-0.7.0.1-4OYEE8uw8FE1Ko7THF1ebData.Primitive.Types alignmentsizeOfPrimControl.Monad.Primitive PrimState PrimMonadPVarnewPVarrawPVar newPinnedPVar rawPinnedPVarnewAlignedPinnedPVarrawAlignedPinnedPVarrawStorablePVarrawAlignedStorablePVarunsafeToPtrPVarpeekPrimpokePrimreadPVar writePVar sizeOfPVar#alignmentPVar# sizeOfPVar alignmentPVarunI# isPinnedPVaratomicModifyIntArray#atomicModifyIntPVaratomicModifyIntArray_#atomicModifyIntPVar_unsafeToForeignPtrPVar toPtrPVarsetPVar#zeroPVarcopyPVarToMutableByteArraycopyFromByteArrayPVarcopyFromMutableByteArrayPVar showsTypeisByteArrayPinnedisMutableByteArrayPinned withPVarSTtoForeignPtrPVarcopyPVar copyPVarToPtr modifyPVar modifyPVar_fetchModifyPVarmodifyFetchPVar modifyPVarMfetchModifyPVarMmodifyFetchPVarM modifyPVarM_ swapPVars swapPVars_withStorablePVarwithAlignedStorablePVaratomicReadIntPVaratomicWriteIntPVaratomicFetchModifyIntPVaratomicModifyFetchIntPVar casIntPVaratomicAddIntPVaratomicSubIntPVaratomicAndIntPVaratomicNandIntPVaratomicOrIntPVaratomicXorIntPVaratomicNotIntPVar GHC.TypesInt casIntArray#MutableByteArray# $fNFDataPVar$fStorablePVarInt#runWithPokedPtrGHC.ForeignPtr ForeignPtrData.Primitive.ByteArray ByteArraycopyBytesPVarToMutableByteArrayMutableByteArraycopyBytesFromByteArrayPVar!copyBytesFromMutableByteArrayPVarGHC.PtrPtrGHC.Num+-