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

SCM Repository

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

Annotation of /sml/trunk/src/compiler/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 16 - (view) (download)

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

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