Changes between Version 1 and Version 2 of Commentary/Compiler/CPS


Ignore:
Timestamp:
May 11, 2007 4:30:27 PM (8 years ago)
Author:
guest
Comment:

Added rough design

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/CPS

    v1 v2  
    1212 * Live Value Analysis
    1313 * Stack Layout
     14
     15== Simple Design ==
     16 * Split blocks into multiple blocks at function calls
     17 * Do liveness analysis
     18 * Split every block into a separate function
     19 * Pass all live values as parameters (probably slow)
     20   * Must arrange for both the caller and callee to know argument order
     21     * Simple design: callee just chooses some order and all callers must comply
     22   * Eventually could be passed implicitly but keeping things explicit makes things easier
     23   * Evantually could use a custom calling convention
     24 * Save live values before a call in the continuation
     25   * Must arrange for bot the caller and callee to know field order
     26     * Simple design: callee just chooses some order and all callers must comply
     27   * Eventually needs to be optimized to reduce continuation shuffling
     28     * Can register allocation algorithms be unified with this into one framework?
     29
     30== Pipeline ==
     31 * CPS
     32   * Make closures and stacks manifest
     33   * Makes all calls are tail calls
     34 * Parameter Elimination
     35   * Makes calling convention explicit
     36   * For externally visible functions calling conventions is machine specific, but not backend specific because functions compiled from different backends must be be able to call eachother
     37   * Lor local functions calling convention can be left up to the backend because, it can take advantage of register allocation.
     38     * However, the first first draft will specify the standard calling convention for all functions even local ones because:
     39       * It's simpler
     40       * The C code generator can't handle function parameters because of the Evil Mangler
     41       * The NCG doesn't yet understand parameters