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

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

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

revision 917, Fri Aug 24 21:13:58 2001 UTC revision 918, Mon Aug 27 15:18:01 2001 UTC
# Line 28  Line 28 
28    
29    Updates to closure phase in compiler.    Updates to closure phase in compiler.
30    
31    --------------------------------------------------------------------------
32    
33  Details:  Details:
34    
35  (To be filled in later.  In the meantime, see the HISTORY file.)  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.

Legend:
Removed from v.917  
changed lines
  Added in v.918

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