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/READMES/110.35-README
ViewVC logotype

Annotation of /sml/trunk/READMES/110.35-README

Parent Directory Parent Directory | Revision Log Revision Log


Revision 918 - (view) (download)

1 : blume 916 S M L / N J
2 :    
3 :     1 1 0 . 3 5 N E W S
4 :    
5 :     August 24, 2001
6 :    
7 :     WARNING
8 :    
9 :     This version is intended for compiler hackers. The
10 :     version ought to be stable, however we have not run
11 :     our full regression testing.
12 :    
13 :     http://cm.bell-labs.com/cm/cs/what/smlnj/index.html
14 :    
15 :    
16 :     Summary:
17 :    
18 :     Compiler sources have been reorganized into serveral CM libraries.
19 :     There have been various changes to the exported interfaces themselves
20 :     as well.
21 :    
22 :     Reorganization (and simplification) of the "Cells" interface in MLRISC.
23 :    
24 :     "Cluster" data structure removed from MLRISC, now using "graph"s
25 :     throughout.
26 :    
27 :     Bug fixes to MLRISC.
28 :    
29 :     Updates to closure phase in compiler.
30 :    
31 : blume 918 --------------------------------------------------------------------------
32 : blume 916
33 :     Details:
34 :    
35 : blume 918 Compiler library reorganization:
36 :    
37 :     We are currently making an effort of modularizing the compiler's sources
38 :     so that well-defined parts can be easily reused by other projects. For
39 :     example, we now provide an ML parser library that is independent of
40 :     the rest of the compiler. An ML parser might be of interest to program
41 :     analysis folks. Similarly, there is an ML elaborator library, although
42 :     its interface is not yet as clean as we would like it to make.
43 :     Another important library that can be used independently by other
44 :     projects (and has been for some time already, e.g., C-- and Moby), is
45 :     MLRISC. In the future we expect the FLINT optimizer to become its
46 :     own library as well. With this design, SML/NJ will consist of several
47 :     large but generic and independently useful libraries together with SML/NJ-
48 :     specific "glue" code.
49 :    
50 :     Here is the new library organization as implemented in 110.35:
51 :    
52 :     "Visible compiler"...
53 :    
54 :     $smlnj/viscomp/basics.cm
55 :     - common definitions used by many or all of the libraries below
56 :     $smlnj/viscomp/parser.cm
57 :     - a Standard ML parser and data structures (ast)
58 :     $smlnj/viscomp/elabdata.cm
59 :     - data structures and utility functions for elaboration
60 :     (absyn, types, static environments, ...)
61 :     $smlnj/viscomp/elaborate.cm
62 :     - a Standard ML type checker and elaborator
63 :     $smlnj/viscomp/core.cm
64 :     - FLINT optimizer and SML/NJ-specific glue code
65 :     $smlnj/viscomp/execute.cm
66 :     - SML/NJ object file ("binfile") handling, linking, execution
67 :     $smlnj/viscomp/debugprof.cm
68 :     - instrumentation phases (operating on data structures exported
69 :     by elabdata.cm) for debugging (e.g., backtracing) and profiling
70 :     $smlnj/compiler.cm
71 :     - collection of structures (no longer nested within a single
72 :     structure Compiler) that make up the "visible compiler"
73 :    
74 :     $smlnj/compiler/compiler.cm
75 :     - legacy "structure Compiler"
76 :    
77 :     Architecture specific backends, part of the "visible compiler"...
78 :     $smlnj/viscomp/alpha32.cm
79 :     $smlnj/viscomp/hppa.cm
80 :     $smlnj/viscomp/ppc.cm
81 :     $smlnj/viscomp/sparc.cm
82 :     $smlnj/viscomp/x86.cm
83 :    
84 :     Visible cross-compilers (collection of structures analogous to
85 :     $smlnj/compiler.cm)...
86 :     $smlnj/compiler/current.cm
87 :     $smlnj/compiler/alpha32.cm
88 :     $smlnj/compiler/hppa.cm
89 :     $smlnj/compiler/ppc.cm
90 :     $smlnj/compiler/sparc.cm
91 :     $smlnj/compiler/x86.cm
92 :    
93 :     MLRISC:
94 :     $smlnj/MLRISC/Control.cm
95 :     $smlnj/MLRISC/Lib.cm
96 :     $smlnj/MLRISC/Graphs.cm
97 :     $smlnj/MLRISC/MLTREE.cm
98 :     $smlnj/MLRISC/MLRISC.cm
99 :     $smlnj/MLRISC/ALPHA.cm
100 :     $smlnj/MLRISC/HPPA.cm
101 :     $smlnj/MLRISC/PPC.cm
102 :     $smlnj/MLRISC/SPARC.cm
103 :     $smlnj/MLRISC/IA32.cm
104 :    
105 :     Compilation manager:
106 :    
107 :     $smlnj/cm.cm
108 :     $smlnj/cm/cm.cm
109 :     $smlnj/cm/tools.cm
110 :    
111 :     Bootstrap compiler(s), including cross-compilers:
112 :     $smlnj/cmb.cm
113 :     $smlnj/cmb/current.cm
114 :     $smlnj/cmb/alpha32-unix.cm
115 :     $smlnj/cmb/hppa-unix.cm
116 :     $smlnj/cmb/ppc-unix.cm
117 :     $smlnj/cmb/sparc-unix.cm
118 :     $smlnj/cmb/x86-unix.cm
119 :     $smlnj/cmb/x86-win32.cm
120 :    
121 :     MLRISC changes:
122 :    
123 :     * Lal has dramatically simplified the interface for CELLS in MLRISC.
124 :    
125 :     In summary, the cells interface is broken up into three parts:
126 :    
127 :     1. CellsBasis : CELLS_BASIS
128 :    
129 :     CellsBasis is a top level structure and common for all
130 :     architectures. it contains the definitions of basic datatypes
131 :     and utility functions over these types.
132 :    
133 :     2. functor Cells() : CELLS
134 :    
135 :     Cells generates an interface for CELLS that incorporates the
136 :     specific resources on the target architecture, such as the
137 :     presence of special register classes, their number and size,
138 :     and various useful substructures.
139 :    
140 :     3. <ARCH>CELLS
141 :    
142 :     e.g. SparcCells: SPARCCELLS
143 :    
144 :     <ARCH>CELLS usually contains additional bindings for special
145 :     registers on the architecture, such as:
146 :    
147 :     val r0 : cell (* register zero *)
148 :     val y : cell (* Y register *)
149 :     val psr : cell (* processor status register *)
150 :     ...
151 :    
152 :     The structure returned by applying the Cells functor is opened
153 :     in this interface.
154 :    
155 :     The main implication of all this is that the datatypes for cells is
156 :     split between CellsBasis and CELLS -- a fairly simple change for user
157 :     code.
158 :    
159 :     * Removed "clusters" from MLRISC completely and replaced with "graphs".
160 :     This will make it possible to integrate into SML/NJ various optimizations
161 :     that had already been implemented for "graphs" (but for the benefit of
162 :     other projects).
163 :    
164 :     Bug fixes:
165 :    
166 :     * Improved "closure" phase in FLINT.
167 :     * Bug fixes in MLRISC.

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