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/HISTORY
ViewVC logotype

Diff of /sml/trunk/HISTORY

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

revision 879, Thu Jul 19 18:59:38 2001 UTC revision 929, Tue Sep 18 15:48:42 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/09/18 11:45:00 EDT
18    Tag: Release_110_36 (retag)
19    Description:
20    
21    Fixed mistake in config/preloads. Retagged as 110.36.
22    
23    ----------------------------------------------------------------------
24    Name: Matthias Blume
25    Date: 2001/09/18 09:40:00 EDT
26    Tag: Release_110_36_orig (tag changed)
27    Description:
28    
29    New version (110.36).  New bootfiles.
30    
31    ----------------------------------------------------------------------
32    Name: Matthias Blume
33    Date: 2001/09/14 16:15:00 EDT
34    Tag: blume-20010914-x86fastfp
35    Description:
36    
37    John committed some changes that Allen made, in particular a (hopefully)
38    correctly working version of the x86-fp module.
39    
40    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
41    flag to "true".  Everything seems to compile to a fixpoint ok, and
42    "mandelbrot" speeds up by about 15%.
43    
44    ----------------------------------------------------------------------
45    Name: Matthias Blume
46    Date: 2001/09/13 11:20:00 EDT
47    Tag: blume-20010913-minimal
48    Description:
49    
50    1. Stefan Monnier's patch to fix a miscompilation problem that
51       was brought to light by John Reppy's work on Moby.
52    
53    2. Implemented a minimal "structure Compiler" that contains just
54       "version" and "architecture".  The minimal version will be
55       available when the full version is not.  This is for backward-
56       compatibility with code that wants to test Compiler.version.
57    
58    ----------------------------------------------------------------------
59    Name: Matthias Blume
60    Date: 2001/08/28 14:03:00 EDT
61    Tag: blume-20010828-ml-lex
62    Description:
63    
64    Fix for bug 1581, received from Neophytos Michael.
65    
66    ----------------------------------------------------------------------
67    Name: Matthias Blume
68    Date: 2001/08/27 11:20:00 EDT
69    Tag: blume-20010827-readme11035
70    Description:
71    
72    Fleshed out the README file for 110.35.
73    
74    ----------------------------------------------------------------------
75    Name: Matthias Blume
76    Date: 2001/08/24 17:10:00 EDT
77    Tag: Release_110_35
78    Description:
79    
80    New version number (110.35).  New bootfiles.
81    
82    ----------------------------------------------------------------------
83    Name: Lal George
84    Date: 2001/08/24 13:47:18 EDT 2001
85    Tag: george-20010824-MLRISC-graphs
86    Description:
87    
88     removed clusters from MLRISC completely and replaced with graphs.
89    
90    ----------------------------------------------------------------------
91    Name: Matthias Blume
92    Date: 2001/08/23 17:50:00 EDT
93    Tag: blume-20010823-toplevel
94    Description:
95    
96    - some reorganization of the code that implements various kinds of
97      environments in the compiler (static, dynamic, symbolic, combined)
98    - re-implemented the EnvRef module so that evalStream works properly
99      (if the stream contains references to "use", "CM.make", etc.)
100    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
101    
102    ----------------------------------------------------------------------
103    Name: Matthias Blume
104    Date: 2001/08/20 15:50 EDT
105    Tag: blume20010820-slipup
106    Description:
107    
108    I forgot to commit a few files.  Here they are...
109    
110    ----------------------------------------------------------------------
111    Name: Matthias Blume
112    Date: 2001/08/20 15:35:00 EDT
113    Tag: blume-20010820-debugprof
114    Description:
115    
116    !!!! NEW BOOTFILES !!!!
117    
118    This is another round of reorganizing the compiler sources.  This
119    time the main goal was to factor out all the "instrumentation"
120    passes (for profiling and backtracing) into their own library.
121    The difficulty was to do it in such a way that it does not depend
122    on elaborate.cm but only on elabdata.cm.
123    
124    Therefore there have been further changes to both elaborate.cm and
125    elabdata.cm -- more "generic" things have been moved from the former
126    to the latter.  As a result, I was forced to split the assignment
127    of numbers indicating "primtyc"s into two portions: SML-generic and
128    SML/NJ-specific.  Since it would have been awkward to maintain,
129    I bit the bullet and actually _changed_ the mapping between these
130    numbers and primtycs.  The bottom line of this is that you need
131    a new set of bin- and bootfiles.
132    
133    I have built new bootfiles for all architectures, so doing a fresh
134    checkout and config/install.sh should be all you need.
135    
136    The newly created library's name is
137    
138        $smlnj/viscomp/debugprof.cm
139    
140    and its sources live under
141    
142        src/compiler/DebugProf
143    
144    ----------------------------------------------------------------------
145    Name: Matthias Blume
146    Date: 2001/08/15 17:15:00 EDT
147    Tag: blume-20010815-compreorg
148    Description:
149    
150    This is a first cut at reorganizing the CM libraries that make up the
151    core of the compiler.  The idea is to separate out pieces that could
152    be used independently by tools, e.g., the parser, the typechecker, etc.
153    
154    The current status is a step in this direction, but it is not quite
155    satisfactory yet.  Expect more changes in the future.
156    
157    Here is the current (new) organization...
158    
159        What used to be $smlnj/viscomp/core.cm is now divided into
160        six CM libraries:
161    
162             $smlnj/viscomp/basics.cm
163                           /parser.cm
164                           /elabdata.cm
165                           /elaborate.cm
166                           /execute.cm
167                           /core.cm
168    
169        The CM files for these libraries live under src/system/smlnj/viscomp.
170        All these libraries are proxy libraries that contain precisely
171        one CM library component.  Here are the locations of the components
172        (all within the src/compiler tree):
173    
174             Basics/basics.cm
175             Parse/parser.cm
176             ElabData/elabdata.cm
177             Elaborator/elaborate.cm
178             Execution/execute.cm
179             core.cm
180    
181         [This organization is the same that has been used already
182         for a while for the architecture-specific parts of the visible
183         compiler and for the old version of core.cm.]
184    
185         As you will notice, many source files have been moved from their
186         respective original locations to a new home in one of the above
187         subtrees.
188    
189         The division of labor between the new libraries is the following:
190    
191             basics.cm:
192                - Simple, basic definitions that pertain to many (or all) of
193                  the other libraries.
194             parser.cm:
195                - The SML parser, producing output of type Ast.dec.
196                - The type family for Ast is also defined and exported here.
197             elabdata.cm:
198                - The datatypes that describe input and output of the elaborator.
199                  This includes types, absyn, and static environments.
200             elaborator.cm:
201                - The SML/NJ type checker and elaborator.
202                  This maps an Ast.dec (with a given static environment) to
203                  an Absyn.dec (with a new static environment).
204                - This libraries implements certain modules that used to be
205                  structures as functors (to remove dependencies on FLINT).
206             execute.cm:
207                - Everything having to do with executing binary code objects.
208                - Dynamic environments.
209             core.cm:
210                - SML/NJ-specific instantiations of the elaborator and MLRISC.
211                - Top-level modules.
212                - FLINT (this should eventually become its own library)
213    
214    Notes:
215    
216    I am not 100% happy with the way I separated the elaborator (and its
217    data structures) from FLINT.  Two instances of the same problem:
218    
219        1. Data structures contain certain fields that carry FLINT-specific
220           information.  I hacked around this using exn and the property list
221           module from smlnj-lib.  But the fact that there are middle-end
222           specific fields around at all is a bit annoying.
223    
224        2. The elaborator calculates certain FLINT-related information.  I tried
225           to make this as abstract as I could using functorization, but, again,
226           the fact that the elaborator has to perform calculations on behalf
227           of the middle-end at all is not nice.
228    
229        3. Having to used exn and property lists is unfortunate because it
230           weakens type checking.  The other alternative (parameterizing
231           nearly *everything*) is not appealing, though.
232    
233    I removed the "rebinding =" warning hack because due to the new organization
234    it was awkward to maintain it.  As a result, the compiler now issues some of
235    these warnings when compiling init.cmi during bootstrap compilation. On
236    the plus side, you also get a warning when you do, for example:
237       val op = = Int32.+
238    which was not the case up to now.
239    
240    I placed "assign" and "deref" into the _Core structure so that the
241    code that deals with the "lazy" keyword can find them there.  This
242    removes the need for having access to the primitive environment
243    during elaboration.
244    
245    ----------------------------------------------------------------------
246    Name: Matthias Blume
247    Date: 2001/08/13
248    Tag: blume-20010813-closures
249    Description:
250    
251    This fix was sent to us by Zhong Shao.  It is supposed to improve the
252    performance of certain loops by avoiding needless closure allocation.
253    
254    ----------------------------------------------------------------------
255    Name: Lal George
256    Date: 2001/07/31 10:03:23 EDT 2001
257    Tag: george-20010731-x86-fmalloc
258    Description: Fixed bug in x86 calls
259    
260        There was a bug where call instructions would mysteriously
261        vanish. The call instruction had to be one that returned
262        a floating point value.
263    
264    ----------------------------------------------------------------------
265    Name: Lal George
266    Date: 2001/07/19 16:36:29 EDT 2001
267    Tag: george-20010719-simple-cells
268    Description:
269    
270    I have dramatically simplified the interface for CELLS in MLRISC.
271    
272    In summary, the cells interface is broken up into three parts:
273    
274      1. CellsBasis : CELLS_BASIS
275    
276            CellsBasis is a top level structure and common for all
277            architectures.  it contains the definitions of basic datatypes
278            and utility  functions over these types.
279    
280      2. functor Cells() : CELLS
281    
282            Cells generates an interface for CELLS that incorporates the
283            specific resources on the target architecture, such as the
284            presence of special register classes, their number and size,
285            and various useful substructures.
286    
287      3. <ARCH>CELLS
288    
289            e.g. SparcCells: SPARCCELLS
290    
291            <ARCH>CELLS usually contains additional bindings for special
292            registers  on the architecture, such as:
293    
294                    val r0 : cell           (* register zero *)
295                    val y : cell            (* Y register *)
296                    val psr : cell          (* processor status register *)
297                    ...
298    
299            The structure returned by applying the Cells functor is opened
300            in this interface.
301    
302    The main implication of all this is that the datatypes for cells is
303    split between CellsBasis and CELLS -- a fairly simple change for user
304    code.
305    
306    In the old scheme the CELLS interface had a definitional binding of
307    the form:
308    
309            signature CELLS = sig
310    
311               structure CellsBasis = CellsBasis
312    
313               ...
314    
315            end
316    
317    With all the sharing constraints that goes on in MLRISC, this old
318    design  quickly leads to errors such as:
319    
320            "structure definition spec inside of sharing ... "
321    
322    
323    and appears to require an unacceptable amount of sharing and where
324    constraint hackery.
325    
326    I think this error message (the interaction of definitional specs and
327    sharing) requires more explanation on our web page.
328    
329    ----------------------------------------------------------------------
330    Name: Matthias Blume
331  Date: 2001/07/19 15:00:00 EDT  Date: 2001/07/19 15:00:00 EDT
332  Tag: blume-20010719-libreorg  Tag: blume-20010719-libreorg
333  Description:  Description:
# Line 2668  Line 2982 
2982       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
2983       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
2984       Please, don't be too harsh on me for messing with this code a bit more       Please, don't be too harsh on me for messing with this code a bit more
2985       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
2986       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
2987       Dave's hands. :)       Dave's hands. :)
2988    

Legend:
Removed from v.879  
changed lines
  Added in v.929

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