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 874, Mon Jul 9 20:01:40 2001 UTC revision 977, Wed Nov 14 16:53:16 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/11/14 11:52:00 EST
18    Tag: blume-20011114-srcname
19    Description:
20    
21    1. Routed the name of the current source file to mlriscgen where it
22       should be directly emitted into the code object.  (This last part
23       is yet to be done.)
24    
25    2. Some cleanup of the pgraph code to make it match the proposal that
26       I put out the other day.  (The proposal notwithstanding, things are
27       still in flux here.)
28    
29    ----------------------------------------------------------------------
30    Name: Lal George
31    Date: 2001/11/14 09:44:04 EST
32    Tag:
33    Description:
34    
35      Fix for a backpatching bug reported by Allen.
36    
37      Because the boundary between short and long span-dependent
38      instructions is +/- 128, there are an astounding number of
39      span-dependent instructions whose size is over estimated.
40    
41      Allen came up with the idea of letting the size of span
42      dependent instructions be non-monotonic, for a maxIter
43      number of times, after which the size must be monotonically
44      increasing.
45    
46      This table shows the number of span-dependent instructions
47      whose size was over-estimated as a function of maxIter, for the
48      file Parse/parse/ml.grm.sml:
49    
50         maxIter            # of instructions:
51            10                      687
52            20                      438
53            30                      198
54            40                        0
55    
56      In compiling the compiler, there is no significant difference in
57      compilation speed between maxIter=10 and maxIter=40. Actually,
58      my measurements showed that maxIter=40 was a tad faster than
59      maxIter=10! Also 96% of the  files in the compiler reach a fix
60      point within 13 iterations, so fixing maxIter at 40, while high,
61      is okay.
62    
63    ----------------------------------------------------------------------
64    Name: Matthias Blume
65    Date: 2001/10/31 15:25:00 EST
66    Tag: blume-20011031-pgraph
67    Description:
68    
69    CKIT:
70    * Changed the "Function" constructor of type Ast.ctype to carry optional
71      argument identifiers.
72    * Changed the return type of TypeUtil.getFunction accordingly.
73    * Type equality ignores the argument names.
74    * TypeUtil.composite tries to preserve argument names but gives up quickly
75      if there is a mismatch.
76    
77    installation script:
78    * attempts to use "curl" if available (unless "wget" is available as well)
79    
80    CM:
81    * has an experimental implementation of "portable graphs" which I will
82      soon propose as an implementation-independent library format
83    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
84    
85    NLFFI-LIB:
86    * some cleanup (all cosmetic)
87    
88    NLFFIGEN:
89    * temporarily disabled the mechanism that suppresses ML output for
90      C definitions whose identifiers start with an underscore character
91    * generate val bindings for enum constants
92    * user can request that only one style (light or heavy) is being used;
93      default is to use both (command-line arguments: -heavy and -light)
94    * fixed bug in handling of function types involving incomplete pointers
95    * generate ML entry points that take record arguments (i.e., using
96      named arguments) for C functions that have a prototype with named
97      arguments
98      (see changes to CKIT)
99    
100    ----------------------------------------------------------------------
101    Name: Allen Leung
102    Date: 2001/10/27 20:34:00 EDT
103    Tag: leunga-20011027-x86-fast-fp-call
104    Description:
105    
106       Fixed the bug described in blume-20010920-slowfp.
107    
108       The fix involves
109          1. generating FCOPYs in FSTP in ia32-svid
110          2. marking a CALL with the appropriate annotation
111    
112    ----------------------------------------------------------------------
113    Name: Matthias Blume
114    Date: 2001/10/16 11:32:00 EDT
115    Tag: blume-20011016-netbsd
116    Description:
117    
118    Underscore patch from Chris Richards (fixing problem with compiling
119    runtime system under recent NetBSD).
120    
121    ----------------------------------------------------------------------
122    Name: Allen Leung
123    Date: 2001/10/12 17:18:32 EDT 2001
124    Tag: leung-20011012-x86-printflowgraph
125    Description:
126    
127    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
128    
129    ----------------------------------------------------------------------
130    Name: Lal George
131    Date: 2001/10/11 23:51:34 EDT
132    Tag: george-20011011-too-many-instrs
133    Description:
134    
135    The representation of a program point never expected to see more
136    than 65536 instructions in a basic block!
137    
138    ----------------------------------------------------------------------
139    Name: Lal George
140    Date: 2001/10/09 09:41:37 EDT
141    Tag: george-20011008-mlrisc-labels
142    Description:
143    
144    Changed the machine description files to support printing of
145    local and global labels in assembly code, based on host assembler
146    conventions.
147    
148    ----------------------------------------------------------------------
149    Name: Matthias Blume
150    Date: 2001/09/25 15:25:00 EDT
151    Tag: blume-20010925-exninfo
152    Description:
153    
154    I provided a non-hook implementation of exnName (at the toplevel) and
155    made the "dummy" implementation of exnMessage (at the toplevel) more
156    useful: if nothing gets "hooked in", then at least you are going to
157    see the exception name and a message indicating why you don't see more.
158    
159    [For the time being, programs that need exnMessage and want to use
160    ml-build should either use General.exnMessage (strongly recommended) or
161    refer to structure General at some other point so that CM sees a
162    static dependency.]
163    
164    [Similar remarks go for "print" and "use":  If you want to use their
165    functionality in stand-alone programs generated by ml-build, then use
166    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
167    
168    ----------------------------------------------------------------------
169    Name: Matthias Blume
170    Date: 2001/09/20 17:28:00 EDT
171    Tag: blume-20010920-slowfp
172    Description:
173    
174    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
175    
176    ----------------------------------------------------------------------
177    Name: Matthias Blume
178    Date: 2001/09/20 17:20:00 EDT
179    Tag: blume-20010920-canonicalpaths
180    Description:
181    
182    0. Updated the BOOT file (something that I forgot to do earlier).
183    
184    1. Small internal change to CM so that it avoids "/../" in filenames
185       as much as possible (but only where it is safe).
186    
187    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
188       that arguments that contain delimiters are passed through correctly.
189       This change also means that all "special" arguments of the form
190       @SMLxxx... must come first.
191    
192    3. Changed install script to put relative anchor names for tool commands
193       into pathconfig.
194    
195    ----------------------------------------------------------------------
196    Name: Matthias Blume
197    >>>>>>> 1.169
198    Date: 2001/09/18 15:35:00 EDT
199    Tag: blume-20010918-readme11036
200    Description:
201    
202    Added README files.
203    
204    ----------------------------------------------------------------------
205    Name: Matthias Blume
206    Date: 2001/09/18 11:45:00 EDT
207    Tag: Release_110_36 (retag)
208    Description:
209    
210    Fixed mistake in config/preloads. Retagged as 110.36.
211    
212    ----------------------------------------------------------------------
213    Name: Matthias Blume
214    Date: 2001/09/18 09:40:00 EDT
215    Tag: Release_110_36_orig (tag changed)
216    Description:
217    
218    New version (110.36).  New bootfiles.
219    
220    ----------------------------------------------------------------------
221    Name: Matthias Blume
222    Date: 2001/09/14 16:15:00 EDT
223    Tag: blume-20010914-x86fastfp
224    Description:
225    
226    John committed some changes that Allen made, in particular a (hopefully)
227    correctly working version of the x86-fp module.
228    
229    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
230    flag to "true".  Everything seems to compile to a fixpoint ok, and
231    "mandelbrot" speeds up by about 15%.
232    
233    ----------------------------------------------------------------------
234    Name: Matthias Blume
235    Date: 2001/09/13 11:20:00 EDT
236    Tag: blume-20010913-minimal
237    Description:
238    
239    1. Stefan Monnier's patch to fix a miscompilation problem that
240       was brought to light by John Reppy's work on Moby.
241    
242    2. Implemented a minimal "structure Compiler" that contains just
243       "version" and "architecture".  The minimal version will be
244       available when the full version is not.  This is for backward-
245       compatibility with code that wants to test Compiler.version.
246    
247    ----------------------------------------------------------------------
248    Name: Matthias Blume
249    Date: 2001/08/28 14:03:00 EDT
250    Tag: blume-20010828-ml-lex
251    Description:
252    
253    Fix for bug 1581, received from Neophytos Michael.
254    
255    ----------------------------------------------------------------------
256    Name: Matthias Blume
257    Date: 2001/08/27 11:20:00 EDT
258    Tag: blume-20010827-readme11035
259    Description:
260    
261    Fleshed out the README file for 110.35.
262    
263    ----------------------------------------------------------------------
264    Name: Matthias Blume
265    Date: 2001/08/24 17:10:00 EDT
266    Tag: Release_110_35
267    Description:
268    
269    New version number (110.35).  New bootfiles.
270    
271    ----------------------------------------------------------------------
272    Name: Lal George
273    Date: 2001/08/24 13:47:18 EDT 2001
274    Tag: george-20010824-MLRISC-graphs
275    Description:
276    
277     removed clusters from MLRISC completely and replaced with graphs.
278    
279    ----------------------------------------------------------------------
280    Name: Matthias Blume
281    Date: 2001/08/23 17:50:00 EDT
282    Tag: blume-20010823-toplevel
283    Description:
284    
285    - some reorganization of the code that implements various kinds of
286      environments in the compiler (static, dynamic, symbolic, combined)
287    - re-implemented the EnvRef module so that evalStream works properly
288      (if the stream contains references to "use", "CM.make", etc.)
289    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
290    
291    ----------------------------------------------------------------------
292    Name: Matthias Blume
293    Date: 2001/08/20 15:50 EDT
294    Tag: blume20010820-slipup
295    Description:
296    
297    I forgot to commit a few files.  Here they are...
298    
299    ----------------------------------------------------------------------
300    Name: Matthias Blume
301    Date: 2001/08/20 15:35:00 EDT
302    Tag: blume-20010820-debugprof
303    Description:
304    
305    !!!! NEW BOOTFILES !!!!
306    
307    This is another round of reorganizing the compiler sources.  This
308    time the main goal was to factor out all the "instrumentation"
309    passes (for profiling and backtracing) into their own library.
310    The difficulty was to do it in such a way that it does not depend
311    on elaborate.cm but only on elabdata.cm.
312    
313    Therefore there have been further changes to both elaborate.cm and
314    elabdata.cm -- more "generic" things have been moved from the former
315    to the latter.  As a result, I was forced to split the assignment
316    of numbers indicating "primtyc"s into two portions: SML-generic and
317    SML/NJ-specific.  Since it would have been awkward to maintain,
318    I bit the bullet and actually _changed_ the mapping between these
319    numbers and primtycs.  The bottom line of this is that you need
320    a new set of bin- and bootfiles.
321    
322    I have built new bootfiles for all architectures, so doing a fresh
323    checkout and config/install.sh should be all you need.
324    
325    The newly created library's name is
326    
327        $smlnj/viscomp/debugprof.cm
328    
329    and its sources live under
330    
331        src/compiler/DebugProf
332    
333    ----------------------------------------------------------------------
334    Name: Matthias Blume
335    Date: 2001/08/15 17:15:00 EDT
336    Tag: blume-20010815-compreorg
337    Description:
338    
339    This is a first cut at reorganizing the CM libraries that make up the
340    core of the compiler.  The idea is to separate out pieces that could
341    be used independently by tools, e.g., the parser, the typechecker, etc.
342    
343    The current status is a step in this direction, but it is not quite
344    satisfactory yet.  Expect more changes in the future.
345    
346    Here is the current (new) organization...
347    
348        What used to be $smlnj/viscomp/core.cm is now divided into
349        six CM libraries:
350    
351             $smlnj/viscomp/basics.cm
352                           /parser.cm
353                           /elabdata.cm
354                           /elaborate.cm
355                           /execute.cm
356                           /core.cm
357    
358        The CM files for these libraries live under src/system/smlnj/viscomp.
359        All these libraries are proxy libraries that contain precisely
360        one CM library component.  Here are the locations of the components
361        (all within the src/compiler tree):
362    
363             Basics/basics.cm
364             Parse/parser.cm
365             ElabData/elabdata.cm
366             Elaborator/elaborate.cm
367             Execution/execute.cm
368             core.cm
369    
370         [This organization is the same that has been used already
371         for a while for the architecture-specific parts of the visible
372         compiler and for the old version of core.cm.]
373    
374         As you will notice, many source files have been moved from their
375         respective original locations to a new home in one of the above
376         subtrees.
377    
378         The division of labor between the new libraries is the following:
379    
380             basics.cm:
381                - Simple, basic definitions that pertain to many (or all) of
382                  the other libraries.
383             parser.cm:
384                - The SML parser, producing output of type Ast.dec.
385                - The type family for Ast is also defined and exported here.
386             elabdata.cm:
387                - The datatypes that describe input and output of the elaborator.
388                  This includes types, absyn, and static environments.
389             elaborator.cm:
390                - The SML/NJ type checker and elaborator.
391                  This maps an Ast.dec (with a given static environment) to
392                  an Absyn.dec (with a new static environment).
393                - This libraries implements certain modules that used to be
394                  structures as functors (to remove dependencies on FLINT).
395             execute.cm:
396                - Everything having to do with executing binary code objects.
397                - Dynamic environments.
398             core.cm:
399                - SML/NJ-specific instantiations of the elaborator and MLRISC.
400                - Top-level modules.
401                - FLINT (this should eventually become its own library)
402    
403    Notes:
404    
405    I am not 100% happy with the way I separated the elaborator (and its
406    data structures) from FLINT.  Two instances of the same problem:
407    
408        1. Data structures contain certain fields that carry FLINT-specific
409           information.  I hacked around this using exn and the property list
410           module from smlnj-lib.  But the fact that there are middle-end
411           specific fields around at all is a bit annoying.
412    
413        2. The elaborator calculates certain FLINT-related information.  I tried
414           to make this as abstract as I could using functorization, but, again,
415           the fact that the elaborator has to perform calculations on behalf
416           of the middle-end at all is not nice.
417    
418        3. Having to used exn and property lists is unfortunate because it
419           weakens type checking.  The other alternative (parameterizing
420           nearly *everything*) is not appealing, though.
421    
422    I removed the "rebinding =" warning hack because due to the new organization
423    it was awkward to maintain it.  As a result, the compiler now issues some of
424    these warnings when compiling init.cmi during bootstrap compilation. On
425    the plus side, you also get a warning when you do, for example:
426       val op = = Int32.+
427    which was not the case up to now.
428    
429    I placed "assign" and "deref" into the _Core structure so that the
430    code that deals with the "lazy" keyword can find them there.  This
431    removes the need for having access to the primitive environment
432    during elaboration.
433    
434    ----------------------------------------------------------------------
435    Name: Matthias Blume
436    Date: 2001/08/13
437    Tag: blume-20010813-closures
438    Description:
439    
440    This fix was sent to us by Zhong Shao.  It is supposed to improve the
441    performance of certain loops by avoiding needless closure allocation.
442    
443    ----------------------------------------------------------------------
444    Name: Lal George
445    Date: 2001/07/31 10:03:23 EDT 2001
446    Tag: george-20010731-x86-fmalloc
447    Description: Fixed bug in x86 calls
448    
449        There was a bug where call instructions would mysteriously
450        vanish. The call instruction had to be one that returned
451        a floating point value.
452    
453    ----------------------------------------------------------------------
454    Name: Lal George
455    Date: 2001/07/19 16:36:29 EDT 2001
456    Tag: george-20010719-simple-cells
457    Description:
458    
459    I have dramatically simplified the interface for CELLS in MLRISC.
460    
461    In summary, the cells interface is broken up into three parts:
462    
463      1. CellsBasis : CELLS_BASIS
464    
465            CellsBasis is a top level structure and common for all
466            architectures.  it contains the definitions of basic datatypes
467            and utility  functions over these types.
468    
469      2. functor Cells() : CELLS
470    
471            Cells generates an interface for CELLS that incorporates the
472            specific resources on the target architecture, such as the
473            presence of special register classes, their number and size,
474            and various useful substructures.
475    
476      3. <ARCH>CELLS
477    
478            e.g. SparcCells: SPARCCELLS
479    
480            <ARCH>CELLS usually contains additional bindings for special
481            registers  on the architecture, such as:
482    
483                    val r0 : cell           (* register zero *)
484                    val y : cell            (* Y register *)
485                    val psr : cell          (* processor status register *)
486                    ...
487    
488            The structure returned by applying the Cells functor is opened
489            in this interface.
490    
491    The main implication of all this is that the datatypes for cells is
492    split between CellsBasis and CELLS -- a fairly simple change for user
493    code.
494    
495    In the old scheme the CELLS interface had a definitional binding of
496    the form:
497    
498            signature CELLS = sig
499    
500               structure CellsBasis = CellsBasis
501    
502               ...
503    
504            end
505    
506    With all the sharing constraints that goes on in MLRISC, this old
507    design  quickly leads to errors such as:
508    
509            "structure definition spec inside of sharing ... "
510    
511    
512    and appears to require an unacceptable amount of sharing and where
513    constraint hackery.
514    
515    I think this error message (the interaction of definitional specs and
516    sharing) requires more explanation on our web page.
517    
518    ----------------------------------------------------------------------
519    Name: Matthias Blume
520    Date: 2001/07/19 15:00:00 EDT
521    Tag: blume-20010719-libreorg
522    Description:
523    
524    This update puts together a fairly extensive but straightforward change
525    to the way the libraries that implement the interactive system are
526    organized:
527    
528       The biggest change is the elimination of structure Compiler.  As a
529       replacement for this structure, there is now a CM library
530       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
531       that exports all the substructures of the original structure Compiler
532       directly.  So instead of saying Compiler.Foo.bar one now simply
533       says Foo.bar.  (The CM libraries actually export a collection of
534       structures that is richer than the collection of substructures of
535       structure Compiler.)
536    
537       To make the transition smooth, there is a separate library called
538       $smlnj/compiler/compiler.cm which puts together and exports the
539       original structure Compiler (or at least something very close to it).
540    
541       There are five members of the original structure Compiler
542       that are not exported directly but which instead became members
543       of a new structure Backend (described by signature BACKEND).  These are:
544       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
545       Interact (: INTERACT), structure Machine (: MACHINE), and val
546       architecture (: string).
547    
548       Structure Compiler.Version has become structure CompilerVersion.
549    
550       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
551       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
552       or x86, respectively.
553       Each of these exports the same frontend structures that
554       $smlnj/compiler.cm exports.  But they do not have a structure Backend
555       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
556       Hppa, PPC, Sparc, or X86, respectively.
557    
558       Library $smlnj/compiler/all.cm exports the union of the exports of
559       $smlnj/compiler/<arch>.cm
560    
561       There are no structures <Arch>Compiler anymore, use
562       $smlnj/compiler/<arch>.cm instead.
563    
564       Library host-compiler-0.cm is gone.  Instead, the internal library
565       that instantiates CM is now called cm0.cm.  Selection of the host
566       compiler (backend) is no longer done here but. (Responsibility for it
567       now lies with $smlnj/compiler/current.cm.  This seems to be more
568       logical.)
569    
570       Many individual files have been moved or renamed.  Some files have
571       been split into multiple files, and some "dead" files have been deleted.
572    
573    Aside from these changes to library organization, there are also changes
574    to the way the code itself is organized:
575    
576       Structure Binfile has been re-implemented in such a way that it no
577       longer needs any knowledge of the compiler.  It exclusively deals
578       with the details of binfile layout.  It no longer invokes the
579       compiler (for the purpose of creating new prospective binfile
580       content), and it no longer has any knowledge of how to interpret
581       pickles.
582    
583       Structure Compile (: COMPILE) has been stripped down to the bare
584       essentials of compilation.  It no longer deals with linking/execution.
585       The interface has been cleaned up considerably.
586    
587       Utility routines for dealing with linking and execution have been
588       moved into their own substructures.
589    
590       (The ultimate goal of these changes is to provide a light-weight
591       binfile loader/linker (at least for, e.g., stable libraries) that
592       does not require CM or the compiler to be present.)
593    
594    CM documentation has been updated to reflect the changes to library
595    organization.
596    
597    ----------------------------------------------------------------------
598    Name: Matthias Blume
599    Date: 2001/07/10 17:30:00 EDT
600    Tag: Release_110_34
601    Description:
602    
603    Minor tweak to 110.34 (re-tagged):
604    
605      - README.html file added to CVS repository
606      - runtime compiles properly under FreeBSD 3.X and 4.X
607    
608    ----------------------------------------------------------------------
609    Name: Matthias Blume
610    Date: 2001/07/10 17:30:00 EDT
611    Tag: Release_110_34
612    Description:
613    
614    New version number (110.34). New bootfiles.
615    
616    ----------------------------------------------------------------------
617    Name: Matthias Blume
618  Date: 2001/07/09 16:00:00 EDT  Date: 2001/07/09 16:00:00 EDT
619  Tag: blume-20010709-more-varargs  Tag: blume-20010709-more-varargs
620  Description:  Description:
# Line 2570  Line 3171 
3171       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3172       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3173       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
3174       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3175       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3176       Dave's hands. :)       Dave's hands. :)
3177    

Legend:
Removed from v.874  
changed lines
  Added in v.977

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