Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/compiler/TODO
ViewVC logotype

Diff of /sml/trunk/src/compiler/TODO

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 23, Thu Mar 12 00:49:56 1998 UTC revision 24, Thu Mar 12 00:49:58 1998 UTC
# Line 1  Line 1 
1  TODO:  Changes to be done:
    a. lcontract should do the following:  
         o reduce the code to normal form in one pass (no surprising redices)  
         o should contract type applications (i.e., polymorphic functions  
             that only applied once)  
         o how lcontract interacts with specialize ? how many rounds of  
           lcontract should be applied, before or after specialize ?  
           we should borrow the "accounting" heuristics in cpsopt.  
2    
3     b. ppflint --- probably should be less verbose on some canonical case,     a. push FLINT into inl_info (?) (* easy *)
4           e.g., FIX((_,f,_,_), RET[VAR f])     b. push opt into FLINT          (* easy *)
       also if the body is very small, we don't have make a new line.  
       see pplexp.sml  
   
       printing  primops can be made less verbose, instead PRIMOP blah blah  
       just simply "x + 1" would do.  
   
    c. flintutil.sml:  
       how to represent the wrap, unwrap and etag primops ? should they  
       be monomorphic or polymorphic  
   
    d. flintnm.sml: recursions vs. true recursions. I hope that something  
       can be done on splitting pseudo recursions into separate FIX decs.  
   
    e. lcontract + specialize: how to adjust the lty and tyc when we have  
       to inline or specialize functions from one depth to another is a  
       major headache of using the de-Bruijn-index-based representations.  
       I have tried different ways in lcontract and specialize, but it  
       is pretty adhoc, it will be nice if we can show a more general way  
       of how this should be done.  
   
    f. Type specialization will lead to many new redices for the lcontract;  
       I currently will run one round of lcontract after specialize (see the  
       end of lcontract.sml). Is this an overkill ?  
   
 ---------------------------------------------------------------------------  
 TODO:  
   
    a. push lcontract into FLINT    (* easy *)  
    b. push specialize into FLINT   (* some work *)  
5     c. push reps into FLINT         (* rework *)     c. push reps into FLINT         (* rework *)
6     d. push narrow into FLINT       (* easy *)     d. push narrow into FLINT       (* easy *)
7     e. push convert into FLINT      (* register pressure ? *)     e. push convert into FLINT      (* easy *)
   
8     f. turn on the FLINT typechecker           (* CHRIS & VALERY *)     f. turn on the FLINT typechecker           (* CHRIS & VALERY *)
9     g. turn on the FLINT pretty printer        (* CHRIS & VALERY *)     g. turn on the FLINT pretty printer        (* CHRIS & VALERY *)
10    
11  ---------------------------------------------------------------------------  ---------------------------------------------------------------------------
12  OTHER:  OTHER:
13    
14  B  eliminate pointers to the middle of closures ...     h. eliminate pointers to the middle of closures ...
15  C  clean up the copyright/etc in all the source files     i. reppy new array splitting (code splitting)
16  C  parametrize the cross-module linkage conventions     j. get rid of LT_PST through advanced linkage interface
17       1. add code splitting     k. delay inlining of array primops to the backend
18       2. get rid of LT_PST through advanced linkage interface     l. clean up the primitives such as PACK and WRAP ...
      3. new array splitting (code splitting, phase 1)  
      4. all require runtime support in LoadBinFile in new-boot.c  
 C. delay inlining of array primops to the backend  
19    
20  ---------------------------------------------------------------------------  ---------------------------------------------------------------------------
21  DONE:  DONE:
22    
23  X  merge EXNC and EXNF into ETAG;  (fixing exn flag typing)  X  m. merge EXNC and EXNF into ETAG;  (fixing exn flag typing)
24  X  treat non-value carrying datatypes as unit-carrying ...  X  n. treat non-value carrying datatypes as unit-carrying ...
25  X  merge EXNCONS and EXNFUN ?  X  o. merge EXNCONS and EXNFUN ?
26  X  propagating datatypes into the middle-end  X  p. propagating datatypes into the middle-end
 X  clean up the primitives such as PACK and WRAP ...  
 X  move the execution semantics from CM back into compile or evalloop  
 X  change lambda from Lambda.lexp to FLINT.prog  
         1. eliminate the PLambda to Lambda normalize module  
         2. plambda is now part of the "trans-mcomp" phase  
 X  push FLINT into inl_info (?) and cleanup the CM interface  

Legend:
Removed from v.23  
changed lines
  Added in v.24

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0