Changes between Version 23 and Version 24 of Internships/JanStolarek


Ignore:
Timestamp:
Jul 12, 2013 8:29:17 AM (12 months ago)
Author:
jstolarek
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Internships/JanStolarek

    v23 v24  
    3636 
    3737= Various clean-up tasks = 
     38== Cmm clean-up == 
     39  * CmmOpt.hs: remove commented loopification, move comment to CmmLoopify.hs 
     40  * remove unused CmmRewriteAssignments 
     41  * `cmm/CmmLive.hs:106`. This function is not used (unless there is some auto-generated code that uses it, but I doubt it): 
     42 
     43{{{ 
     44removeDeadAssignments :: DynFlags -> CmmGraph 
     45                      -> UniqSM (CmmGraph, BlockEnv CmmLocalLive) 
     46}}} 
     47It is however referenced in some of the comments! Also, I might be able to use it for my dead assignment removal. 
     48  * Cmm dumping could be improved. Right now it dumps all optimisation passes for one fragment of Cmm code, then for next fragment and so on. It would be more convinient to dump whole Cmm code after each pass. I'm not sure if that's possible with the current pipeline design. It seems that Stg->Cmm pass is intentionally design to produce Cmm code incrementally (via Stream) and I suspect that this might be the reason why the code is processed incrementally. 
     49 
     50 improve Cmm dumping. I think that during pretty-printing of Cmm labels of the entry code of a closure are refered to as "info_table", while the label of the whole closure is refered to as "entry". This is confusing. 
     51 
    3852== Cleaning up the STG ->Cmm pass == 
    3953When generating Cmm from STG there is some [wiki:Commentary/Rts/Storage/GC/CAFs SRT information] being generated. It is not used and has to be rebuilt anyway after converting to CPS Cmm. Below are some random notes and pieces of code that might related to this: 
     
    97111}}} 
    98112 
    99   * `cmm/CmmLive.hs:106`. This function is not used (unless there is some auto-generated code that uses it, but I doubt it): 
    100  
    101 {{{ 
    102 removeDeadAssignments :: DynFlags -> CmmGraph 
    103                       -> UniqSM (CmmGraph, BlockEnv CmmLocalLive) 
    104 }}} 
    105 It is however referenced in some of the comments! 
    106  
    107   * `cmm/CmmRewriteAssignments.hs` is not used at all? 
    108113  * `cmm/CmmUtils.hs`, function `toBlockListEntryFirst` - perhaps it would be safer to return a tuple in this case? This would probably make the invariant more explicit. 
    109114  *  
     
    137142 
    138143Other things to do: 
    139   * improve Cmm dumping. I think that during pretty-printing of Cmm labels of the entry code of a closure are refered to as "info_table", while the label of the whole closure is refered to as "entry". This is confusing. 
    140144  * investigate opportunities for improving heap checks. An idea: if a worker knows its heap requirements it could pass them to the caller, thus avoiding the heap check. A question: how much time do we really spend on heap checks? 
    141145