Changes between Version 36 and Version 37 of Commentary/Compiler/NewCodeGen

Oct 17, 2008 9:09:20 AM (6 years ago)



  • Commentary/Compiler/NewCodeGen

    v36 v37  
    11= GHC's glorious new code generator = 
     3See also: [wiki:NewCodeGenOverview overview of the module structure in the new code generator]. 
    35This page summarises work that Norman Ramsey, Simon M, Simon PJ, and John Dias are doing on re-architecting GHC's back end.  Our plan is as follows: 
    4749!ToDo: main issues 
    48  * SRTs simply record live global variables.  So we should use the same live-variable framework as for live local variables.  That means we must be able to identify which globals are SRT-able.  What about compression/encoding schemes? Status: live variables are finished, but the actual SRT tables aren't right -- need to write new code that can handle recursive let bindings. 
    5051 * How do we write continuations in the RTS?  E.g. the update-frame continuation?  Michael Adams had a syntax with two sets of parameters, the the ones on the stack and the return values. 
    5455 * Figure out how PAPs work.  This may interact with the GC check and stack check at the start of a function call.  The concern is how to enter the garbage collector with an infotable that properly describes the live variables. Now that we generate info tables on demand at the end of the pipeline, we can enter the gc with a regular procedure call and expect that the proper info table will be generated. 
    56  * How do stack overflow checks work?  A stack check is inserted during the conversion from Stg to Cmm, with a proxy constant standing for the stack high-water mark. It is replaced when the stack pointer is reified. Status: Todo. 
    5857  * Was there something about sinking spills and hoisting reloads? 
    6160!ToDo: small issues 
    6261 * Shall we rename Branch to !GoTo?! 
    63  * Where is the "push new continuation" middle node? It's gone! 
    6462 * Change the C-- parser (which parses RTS .cmm files) to directly construct `CmmGraph`.   
    6563 * (SLPJ) See let-no-escape todos in `StgCmmExpr`.