úÎ}(väZ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone “ Get ids from core bind.#Get all expressions from a binding.4Get both identifiers and expressions from a binding.Get all IDs from CoreExpr'Takes first n characters out of occNameEquality for typesEquality for type binders"Equality for type variable bindersZ function for types  (c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone| All possible errors. &Could not obtain the type from the id. 2The binding is recursive and won't be substituted. DThe compilation-substitution is not supported for the given binding. 9Error during compilation. The CoreBind is to be returned."Ordering failed for core bindings.Ordering failed for typesAny other error.Contains user-specified flags.=Crash when an recoverable error occurs. For testing purposes.#How verbose should the messages be.+Print an error according to verbosity flag.WChange String to SDoc. Each newline is $$ed with nest equal to spaces before. t is 4.     (c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone$7Predicate used to find GStorable instances identifiers.*Predicate used to find gsizeOf identifiers-Predicate used to find galignment identifiers/Predicate used to find gpeekByteOff identifiers/Predicate used to find gpeekByteOff identifiersAPredicate used to find specialized GStorable instance identifiers 6Predicate used to find specialized gsizeOf identifiers!9Predicate used to find specialized galignment identifiers";Predicate used to find specialized gpeekByteOff identifiers#;Predicate used to find specialized gpokeByteOff identifiers$Is offsets id.%Is a GStorable identifier&Is the id an GStorable method.'"Check if binding is non-recursive.(8Lift the identifier predicate to work on a core binding.)EUse both type getters and identifier predicate to create a predicate. !"#$%&'() !"#$%&'()(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone6[*!Check whether the type is integer+#Check whether the type is a Pointer,Check whether the type is a IO.-,Check whether the type constructor is an IO.."Check whether the type is a State#/.Check whether the type constructor is a State#0&Check whether the type is a RealWorld#12Check whether the type constructor is a RealWorld#[-Check whether the type is a State# RealWorld.20Check whether the type constuctor is a GStorable32Check whether the type is of kind * -> Constraint.41Check whether the type has GStorable constraints.5%Get the type from GStorable instance.6,Get the type from GStorable alignment method7)Get the type from GStorable sizeOf method8'Get the type from GStorable peek method\MInsides of getPeekType, which takes into the account the order of arguments.9'Get the type from GStorable poke method:-Get the type of Offsets. Assuming it is [Int];/Combination of type getters for all GStorables.<2Combination of type getters for GStorable methods.\ Is after Ptr Is after Int Returning] Is after Ptr Is after Int Returning*+,-./0123456789:;<*+,-./0123456789:;<(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNoneAÃ^NUsed for type substitution. Whether a TyVar appears, replace it with a Type.=Calculate the order of types. _VThis could be done more efficently if we'd represent the problem as a graph problem.>'Functions doing the type substitutions.?6Get data constructor arguments from an algebraic type.@(Group bindings according to type groups.`Iteration for groupBinds_Type to check Type that are checkedType that are in this layerType that are not.@ Type groups.Should be only NonRecs. `Group of typesUngrouped bindingsGrouped bindings'Grouped bindings, and perhaps an error)=>?@=>?@(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNonedœA(Scoped variables for optimising offsets.DCompile an expression.E6Try to compile an expression. Perhaps return an error.F%Create an expression of form: x -> 16G5For gsizeOf and galignment - calculate the variables.HTry to substitute the offsets.IGet a from AJGet b from AK+Create a list expression from Haskell list.L?Compile expression to list and then write it back to core expr.cCreate a int prim expression.dCCompile expression to int prim and then write it back to core expr.M2Return the expression if it's a literal or global.NHCheck whether the given CoreExpr is an id, and if yes - substitute it.OIs an "$w!!" identifierP\Try to create a compileable version of case expr body. For !! @Int offsets val expressions.QŸSubstitute the offsets in a tree. All top-level local ids should be alread in place. Now try to compile selected expressions (See note [Offset substitution])R3Compile the expression in Core Bind and replace it.e5Put the expression back into the unfolding core expr.SLint a bindingTNSubstitutes the localIds inside the bindings with bodies of provided bindings.fQSubstitutes the localIds inside the expressions with bodies of provided bindings.UCompile ordered binding.g$The insides of compileGroups method.h-Handle errors during the compileGroups stage.S3Core binding to use when returning CompilationErrorCore binding to checkSuccess or failureT%Replace with - for GStorable bindings%Replace with - for other top-bindings%Binding which will have ids replaced.Binding with replaced ids.f$Replace with - for GStorable bindins%Replace with - for other top-bindings(Expression which will have ids replaced.Expression with replaced ids.UError handling.Ordered gstorable bindings./Non-gstorable bindings, used for replacing ids.The compiled (or not) bindings.gFor error handling.Depth, useful for debugging.Ordered GStorable bindings. Other top-level bindingsSuccesfull substitutions.Unsuccesfull substitutions./Both successfull and unsuccesfull subtitutions.hError handlingCurrent iterationList of errorsBindings from errors.ABCDEFGHIJKLMNOPQRSTUDEFGHQABCIJKLMNOPRSTUABC(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNoneoõWXFind GStorable identifiers, obtain their types, and calculate the order of compilation.ioPrint errors related to CoreBind grouping. Return the badly grouped bindings, and perhaps crash the compiler.j5Print the information related to found GStorable ids.X+Do the optimisation for GStorable bindings.iVerbosity and ToCrash options  The errorRecovered bindings.jVerbosity and ToCrash options GStorable ids.XVerbosity and ToCrash options.Reference to grouped types."Information about compiled module.@Information about compiled module, with GStorable optimisations.WXWX(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNonevÖYThe plugin itself.k5Checks whether the core pass is a simplifier phase 0.l(Return the index of simplifier phase 0. m4Checks whether the core pass is a specialising pass.n+Return the index of the specialising pass. o@Set the verbosity and ToCrash flags based on supplied arguments.pParse command line options.q!Inform about installation errors.YYr      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmknopqrstuvwxyz{|}~5derive-storable-plugin-0.2.0.0-5qA46hWkOCn80xd24SIbTc0Foreign.Storable.Generic.Plugin.Internal.Helpers.Foreign.Storable.Generic.Plugin.Internal.Error3Foreign.Storable.Generic.Plugin.Internal.Predicates.Foreign.Storable.Generic.Plugin.Internal.Types3Foreign.Storable.Generic.Plugin.Internal.GroupTypes0Foreign.Storable.Generic.Plugin.Internal.Compile(Foreign.Storable.Generic.Plugin.InternalForeign.Storable.Generic.Plugin getIdsBind getExprsBindgetIdsExprsBind getIdsExpr cutOccNameeqTypeeqTyBind eqTyVarBindelemTypeError TypeNotFound RecBindingCompilationNotSupportedCompilationErrorOrderingFailedBindsOrderingFailedTypes OtherErrorFlagsCrashOnWarning VerbosityNoneSomeAllpprError stringToPprisGStorableInstId isSizeOfId isAlignmentIdisPeekIdisPokeIdisSpecGStorableInstIdisSpecSizeOfIdisSpecAlignmentId isSpecPeekId isSpecPokeId isOffsetsId isGStorableIdisGStorableMethodId isNonRecBindtoIsBind withTypeCheck isIntType isPtrTypeisIOType isIOTyConisStatePrimTypeisStatePrimTyConisRealWorldTypeisRealWorldTyConisGStorableInstTyConhasConstraintKindhasGStorableConstraintsgetGStorableInstTypegetAlignmentType getSizeType getPeekType getPokeTypegetOffsetsTypegetGStorableTypegetGStorableMethodTypecalcGroupOrdersubstituteTyCongetDataConArgs groupBinds OffsetScopeIntList IntPrimVal compileExprtryCompileExpr intToExprintSubstitutionoffsetSubstitution getScopeId getScopeExpr intListExpr exprToIntList isLitOrGlobal inScopeAll isIndexer caseExprIndexoffsetSubstitutionTreecompileGStorableBindlintBindreplaceIdsBind compileGroups$fOutputableOffsetScope groupTypesgstorableSubstitutionpluginbase Data.FoldableelemisStateRealWorld getPeekType' getPokeType' TypeScopecalcGroupOrder_iterationgroupBinds_recghcVarIdCoreSynCoreExprintPrimValExpr exprToIntValreplaceUnfoldingBind replaceIdscompileGroups_reccompileGroups_errorgrouping_errorsfoundBinds_infoisPhase0 afterPhase0 isSpecializeafterSpecializesetOpts parseOpts install_err