X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fruntime%2Fprofiling%2FCHANGES-REQD;fp=ghc%2Fruntime%2Fprofiling%2FCHANGES-REQD;h=0000000000000000000000000000000000000000;hb=438596897ebbe25a07e1c82085cfbc5bdb00f09e;hp=45228475d220a5cd20bbe9265941f188d837cb00;hpb=967cc47f37cb93a5e2b6df7822c9a646f0428247;p=ghc-hetmet.git diff --git a/ghc/runtime/profiling/CHANGES-REQD b/ghc/runtime/profiling/CHANGES-REQD deleted file mode 100644 index 4522847..0000000 --- a/ghc/runtime/profiling/CHANGES-REQD +++ /dev/null @@ -1,201 +0,0 @@ - -Adding @scc@ to the Haskell compiler -- A note of changes required - - -Haskell Compiler: ----------------- - -SCC FRONT END SYNTAX: scc "label" expr - - hslexer.lex scc recognised as SCC - hsparser.y scc expression parsed - tree.ugn new tree construct - printtree.c print scc (k bytecode) - main.c -S flag for scc (else warning) - -SCC THROUGH COMPILER: - reader PrefixSyn new construct (SCC') - ReadPrefix read k bytecode - PrefixToHs -> AbsSyn - - abstractSyn HsExpr new construct (SCC) - BackSubst - rename RenameExpr4 rename body - typecheck TcExpr no unify, use type of body - deSugar DsExpr -> CoreSyn - - Core Syntax & Transformations: - coreSyn CoreSyn new construct (CoSCC) not primop - AnnCoreSyn new construct - FreeVars - CoreFuns - - simplCore0 SubstAnal0 - SimplCore0 - RmTrivLets0 - - simplCore default: not used n - stranal-sem default: not used n - interpreter york: ??? n - - Stg Syntax & Transformations: - stgSyn CoreToStg -> StgSyn - StgSyn new construct (StgSCC) - - StgInfo (new) pass gathering CC codegen info - - LetFloat default: not used n - StgToStg default: not used n - FreeVariables default: not used n - - Abstract C & Code Generation: - main Main -scc flag for update flavour y - codeGen CgMonad -scc new Cg info y - absCSyn AbsCSyn new construct (CCostCentre) y - - codeGen CodeGen declaring cost centers y - codeGen ClosureInfo closure kind y - type y - codeGen CgClosure closure description y - - abstractC PprAbsC info table kind y - description y - type y - - Real Code Generation Changes - Scc Expression: - +RCC update frame -- stack space required - +set new cost centre - - Closure Entry: - !different sizes for STD and CON update frames - +single entry now requires RCC update frame - +resume the CC in closure entered - - Return in Registers: - +register return set RetCC (form closure or CCC) - +register update reset closures CC to RetCC - +attribute register update allocation to RetCC - - CC_ALLOC calls with heap allocation - - Optimisations: - update closure entry with scc -- no RCC frame ToDo - - -RTS stuff: ---------- - -Time interupt y - -Cost centre declaration macros y - -Info table macros with "description" etc? y - -Modify update frames to include cost centres y -Dummy update frame return vector y -Recognition of dummy ret vect UpdatePAP y - -Heap profiling (2s) - Cost Centre y - Description y - -Profile info reported y - -Conditionalise need for timer interupt todo - - - -ADDING GRP_NAME to CC and TYPE to CAT: -------------------------------------- - -driver -- -Ggroup flag y -main/Main.lhs -- -Ggroup flag y - -- pass to codegen y -codeGen -- grp_name passed into CCostCentre y -absCSyn -- add group to CCostCentre y - -- print group with CC decl y - -- print type with INFO_TABLE decl y -uniType -- getUniTyDescription y - -runtime -- Add group to CostCentre y - -- Add group to CC_DECALRE y - -- Add type to ClCategory y - -- Add type to CAT_DECLARE y - -- Add type to INFO_TABLEs y - - -- Report group in profiling report y - - -- Heap profiling with group/module/type - -- selection by mod,grp,typ y - -- profiling by cc,mod,grp,descr,type y - -- always hash on feature y - -- report by cc,mod,grp,descr,type y - - This is different to York as we can have unprofiled - costs/heap inherited from other modules/groups. - - TESTING TESTING TESTING TESTING ToDo - - -AUTO SCCS ... -------------- - -driver -- -prof-auto y -main/Main.lhs -- -scc-auto y - -- doSCCauto pass (desugared) Improve? -profiling/SCCauto.lhs -- sccAutoTop Improve? - - Need to compare to all explicitly annotated. ToDo - - I think this needs to be incorperated into ToDo - the desugarer/typechecker? as the dict stuff - currently distorts this. - OK if we are using lexical scoping !!! - eg: See tautclause in clausify1.hs (cl.*) - - - - -EXTENDING SCC ANNOTATIONS ... ToDo ------------------------------ - -Front End: let scc "label" - where scc "label" - decl scc "label" - - hsparser.y extended scc expressions parsed - tree.ugn new scc language constructs - printtree.c print new scc bytecode forms - -Compiler: - reader PrefixSyn new constructs - ReadPrefix read bytecodes - PrefixToHs -> AbsSyn - - abstractSyn HsExpr new constructs - BackSubst - rename RenameExpr4 rename body - typecheck TcExpr no unify, use type of body - deSugar desugar new scc constructs -> SCC - - -LEXICAL/EVALUATION SCOPING ... - -driver -- -prof-eval -prof-lex (def) y -main/Main.lhs -- -scc-eval -scc-lex y - -- doSCClex pass (stg_binds') ToDo -??? -- lexical scoping transform pass ToDo - - - -OTHER POSSIBLE STUFF: - -codegen/CodeGen.lhs -- code to declare mod and group strings - -- use references in CCostCentre - -profiling cost report -- Reporting group / module costs - with / without components - Eg sort on group time - with module time sub-sort - with label time sub-sort