[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / runtime / profiling / CHANGES-REQD
diff --git a/ghc/runtime/profiling/CHANGES-REQD b/ghc/runtime/profiling/CHANGES-REQD
deleted file mode 100644 (file)
index 4522847..0000000
+++ /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