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 677, Mon Jun 26 00:56:56 2000 UTC revision 902, Wed Aug 15 21:17:05 2001 UTC
# Line 11  Line 11 
11  Date:  Date:
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15    ----------------------------------------------------------------------
16    Name: Matthias Blume
17    Date: 2001/08/15 17:15:00 EDT
18    Tag: blume-20010815-compreorg
19    Description:
20    
21    This is a first cut at reorganizing the CM libraries that make up the
22    core of the compiler.  The idea is to separate out pieces that could
23    be used independently by tools, e.g., the parser, the typechecker, etc.
24    
25    The current status is a step in this direction, but it is not quite
26    satisfactory yet.  Expect more changes in the future.
27    
28    Here is the current (new) organization...
29    
30        What used to be $smlnj/viscomp/core.cm is now divided into
31        six CM libraries:
32    
33             $smlnj/viscomp/basics.cm
34                           /parser.cm
35                           /elabdata.cm
36                           /elaborate.cm
37                           /execute.cm
38                           /core.cm
39    
40        The CM files for these libraries live under src/system/smlnj/viscomp.
41        All these libraries are proxy libraries that contain precisely
42        one CM library component.  Here are the locations of the components
43        (all within the src/compiler tree):
44    
45             Basics/basics.cm
46             Parse/parser.cm
47             ElabData/elabdata.cm
48             Elaborator/elaborate.cm
49             Execution/execute.cm
50             core.cm
51    
52         [This organization is the same that has been used already
53         for a while for the architecture-specific parts of the visible
54         compiler and for the old version of core.cm.]
55    
56         As you will notice, many source files have been moved from their
57         respective original locations to a new home in one of the above
58         subtrees.
59    
60         The division of labor between the new libraries is the following:
61    
62             basics.cm:
63                - Simple, basic definitions that pertain to many (or all) of
64                  the other libraries.
65             parser.cm:
66                - The SML parser, producing output of type Ast.dec.
67                - The type family for Ast is also defined and exported here.
68             elabdata.cm:
69                - The datatypes that describe input and output of the elaborator.
70                  This includes types, absyn, and static environments.
71             elaborator.cm:
72                - The SML/NJ type checker and elaborator.
73                  This maps an Ast.dec (with a given static environment) to
74                  an Absyn.dec (with a new static environment).
75                - This libraries implements certain modules that used to be
76                  structures as functors (to remove dependencies on FLINT).
77             execute.cm:
78                - Everything having to do with executing binary code objects.
79                - Dynamic environments.
80             core.cm:
81                - SML/NJ-specific instantiations of the elaborator and MLRISC.
82                - Top-level modules.
83                - FLINT (this should eventually become its own library)
84    
85    Notes:
86    
87    I am not 100% happy with the way I separated the elaborator (and its
88    data structures) from FLINT.  Two instances of the same problem:
89    
90        1. Data structures contain certain fields that carry FLINT-specific
91           information.  I hacked around this using exn and the property list
92           module from smlnj-lib.  But the fact that there are middle-end
93           specific fields around at all is a bit annoying.
94    
95        2. The elaborator calculates certain FLINT-related information.  I tried
96           to make this as abstract as I could using functorization, but, again,
97           the fact that the elaborator has to perform calculations on behalf
98           of the middle-end at all is not nice.
99    
100        3. Having to used exn and property lists is unfortunate because it
101           weakens type checking.  The other alternative (parameterizing
102           nearly *everything*) is not appealing, though.
103    
104    I removed the "rebinding =" warning hack because due to the new organization
105    it was awkward to maintain it.  As a result, the compiler now issues some of
106    these warnings when compiling init.cmi during bootstrap compilation. On
107    the plus side, you also get a warning when you do, for example:
108       val op = = Int32.+
109    which was not the case up to now.
110    
111    I placed "assign" and "deref" into the _Core structure so that the
112    code that deals with the "lazy" keyword can find them there.  This
113    removes the need for having access to the primitive environment
114    during elaboration.
115    
116    ----------------------------------------------------------------------
117    Name: Matthias Blume
118    Date: 2001/08/13
119    Tag: blume-20010813-closures
120    Description:
121    
122    This fix was sent to us by Zhong Shao.  It is supposed to improve the
123    performance of certain loops by avoiding needless closure allocation.
124    
125    ----------------------------------------------------------------------
126    Name: Lal George
127    Date: 2001/07/31 10:03:23 EDT 2001
128    Tag: george-20010731-x86-fmalloc
129    Description: Fixed bug in x86 calls
130    
131        There was a bug where call instructions would mysteriously
132        vanish. The call instruction had to be one that returned
133        a floating point value.
134    
135    ----------------------------------------------------------------------
136    Name: Lal George
137    Date: 2001/07/19 16:36:29 EDT 2001
138    Tag: george-20010719-simple-cells
139    Description:
140    
141    I have dramatically simplified the interface for CELLS in MLRISC.
142    
143    In summary, the cells interface is broken up into three parts:
144    
145      1. CellsBasis : CELLS_BASIS
146    
147            CellsBasis is a top level structure and common for all
148            architectures.  it contains the definitions of basic datatypes
149            and utility  functions over these types.
150    
151      2. functor Cells() : CELLS
152    
153            Cells generates an interface for CELLS that incorporates the
154            specific resources on the target architecture, such as the
155            presence of special register classes, their number and size,
156            and various useful substructures.
157    
158      3. <ARCH>CELLS
159    
160            e.g. SparcCells: SPARCCELLS
161    
162            <ARCH>CELLS usually contains additional bindings for special
163            registers  on the architecture, such as:
164    
165                    val r0 : cell           (* register zero *)
166                    val y : cell            (* Y register *)
167                    val psr : cell          (* processor status register *)
168                    ...
169    
170            The structure returned by applying the Cells functor is opened
171            in this interface.
172    
173    The main implication of all this is that the datatypes for cells is
174    split between CellsBasis and CELLS -- a fairly simple change for user
175    code.
176    
177    In the old scheme the CELLS interface had a definitional binding of
178    the form:
179    
180            signature CELLS = sig
181    
182               structure CellsBasis = CellsBasis
183    
184               ...
185    
186            end
187    
188    With all the sharing constraints that goes on in MLRISC, this old
189    design  quickly leads to errors such as:
190    
191            "structure definition spec inside of sharing ... "
192    
193    
194    and appears to require an unacceptable amount of sharing and where
195    constraint hackery.
196    
197    I think this error message (the interaction of definitional specs and
198    sharing) requires more explanation on our web page.
199    
200    ----------------------------------------------------------------------
201    Name: Matthias Blume
202    Date: 2001/07/19 15:00:00 EDT
203    Tag: blume-20010719-libreorg
204    Description:
205    
206    This update puts together a fairly extensive but straightforward change
207    to the way the libraries that implement the interactive system are
208    organized:
209    
210       The biggest change is the elimination of structure Compiler.  As a
211       replacement for this structure, there is now a CM library
212       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
213       that exports all the substructures of the original structure Compiler
214       directly.  So instead of saying Compiler.Foo.bar one now simply
215       says Foo.bar.  (The CM libraries actually export a collection of
216       structures that is richer than the collection of substructures of
217       structure Compiler.)
218    
219       To make the transition smooth, there is a separate library called
220       $smlnj/compiler/compiler.cm which puts together and exports the
221       original structure Compiler (or at least something very close to it).
222    
223       There are five members of the original structure Compiler
224       that are not exported directly but which instead became members
225       of a new structure Backend (described by signature BACKEND).  These are:
226       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
227       Interact (: INTERACT), structure Machine (: MACHINE), and val
228       architecture (: string).
229    
230       Structure Compiler.Version has become structure CompilerVersion.
231    
232       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
233       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
234       or x86, respectively.
235       Each of these exports the same frontend structures that
236       $smlnj/compiler.cm exports.  But they do not have a structure Backend
237       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
238       Hppa, PPC, Sparc, or X86, respectively.
239    
240       Library $smlnj/compiler/all.cm exports the union of the exports of
241       $smlnj/compiler/<arch>.cm
242    
243       There are no structures <Arch>Compiler anymore, use
244       $smlnj/compiler/<arch>.cm instead.
245    
246       Library host-compiler-0.cm is gone.  Instead, the internal library
247       that instantiates CM is now called cm0.cm.  Selection of the host
248       compiler (backend) is no longer done here but. (Responsibility for it
249       now lies with $smlnj/compiler/current.cm.  This seems to be more
250       logical.)
251    
252       Many individual files have been moved or renamed.  Some files have
253       been split into multiple files, and some "dead" files have been deleted.
254    
255    Aside from these changes to library organization, there are also changes
256    to the way the code itself is organized:
257    
258       Structure Binfile has been re-implemented in such a way that it no
259       longer needs any knowledge of the compiler.  It exclusively deals
260       with the details of binfile layout.  It no longer invokes the
261       compiler (for the purpose of creating new prospective binfile
262       content), and it no longer has any knowledge of how to interpret
263       pickles.
264    
265       Structure Compile (: COMPILE) has been stripped down to the bare
266       essentials of compilation.  It no longer deals with linking/execution.
267       The interface has been cleaned up considerably.
268    
269       Utility routines for dealing with linking and execution have been
270       moved into their own substructures.
271    
272       (The ultimate goal of these changes is to provide a light-weight
273       binfile loader/linker (at least for, e.g., stable libraries) that
274       does not require CM or the compiler to be present.)
275    
276    CM documentation has been updated to reflect the changes to library
277    organization.
278    
279    ----------------------------------------------------------------------
280    Name: Matthias Blume
281    Date: 2001/07/10 17:30:00 EDT
282    Tag: Release_110_34
283    Description:
284    
285    Minor tweak to 110.34 (re-tagged):
286    
287      - README.html file added to CVS repository
288      - runtime compiles properly under FreeBSD 3.X and 4.X
289    
290    ----------------------------------------------------------------------
291    Name: Matthias Blume
292    Date: 2001/07/10 17:30:00 EDT
293    Tag: Release_110_34
294    Description:
295    
296    New version number (110.34). New bootfiles.
297    
298    ----------------------------------------------------------------------
299    Name: Matthias Blume
300    Date: 2001/07/09 16:00:00 EDT
301    Tag: blume-20010709-more-varargs
302    Description:
303    
304    I changed the handling of varargs in ml-nlffigen again:
305    The ellipsis ... will now simply be ignored (with an accompanying warning).
306    
307    The immediate effect is that you can actually call a varargs function
308    from ML -- but you can't actually supply any arguments beyond the ones
309    specified explicitly.  (For example, you can call printf with its format
310    string, but you cannot pass additional arguments.)
311    
312    This behavior is only marginally more useful than the one before, but
313    it has the advantage that a function or, more importantly, a function
314    type never gets dropped on the floor, thus avoiding follow-up problems with
315    other types that refer to the offending one.
316    
317    ----------------------------------------------------------------------
318    Name: Matthias Blume
319    Date: 2001/07/09 11:25:00 EDT
320    Tag: blume-20010709-varargs
321    Description:
322    
323    1. ckit-lib.cm now exports structure Error
324    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
325       with a warning accompanied by a source location.  Moreover, it
326       merely skips the offending function or type and proceeds with the
327       rest of its work.u  As a result, one can safely feed C code containing
328       "..." to ml-nlffigen.
329    3. There are some internal improvements to CM, providing slightly
330       more general string substitutions in the tools subsystem.
331    
332    ----------------------------------------------------------------------
333    Name: Matthias Blume
334    Date: 2001/06/27 15:10:00 EDT
335    Tag: blume-20010627-concur
336    Description:
337    
338    Fixed a small bug in CM's handling of parallel compilation.
339    (You could observe the bug by Control-C-interrupting an ordinary
340    CMB.make or CM.stabilize and then attaching some compile servers.
341    The result was that all of a sudden the previously interrupted
342    compilation would continue on its own.  This was because of
343    an over-optimization: CM did not bother to clean out certain queues
344    when no servers were attached "anyway", resulting in the contents
345    of these queues to grab control when new servers did get attached.)
346    
347    There is also another minor update to the CM manual.
348    
349    ----------------------------------------------------------------------
350    Name: Matthias Blume
351    Date: 2001/06/26 16:15:00 EDT
352    Tag: blume-20010626-cmdoc
353    Description:
354    
355    Minor typo fixed in CM manual (syntax diagram for libraries).
356    
357    ----------------------------------------------------------------------
358    Name: Matthias Blume
359    Date: 2001/06/25 22:55:00 EDT
360    Tag: blume-20010625-x86pc
361    Description:
362    
363    Fixed a nasty bug in the X86 assembly code that caused signal
364    handlers to fail (crash) randomly.
365    
366    ----------------------------------------------------------------------
367    Name: Matthias Blume
368    Date: 2001/06/25 12:05:00 EDT
369    Tag: blume-20010625-nlffigen
370    Description:
371    
372    This update fixes a number of minor bugs in ml-nlffigen as reported by
373    Nick Carter <nbc@andrew.cmu.edu>.
374    
375      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
376      2. Default names for generated files are now derived from the name of
377         the C file *without its directory*.  In particular, this causes generated
378         files to be placed locally even if the C file is in some system directory.
379      3. Default names for generated signatures and structures are also derived
380         from the C file name without its directory.  This avoids silly things
381         like "structure GL/GL".
382         (Other silly names are still possible because ml-nlffigen does not do
383          a thorough check of whether generated names are legal ML identifiers.
384          When in doubt, use command line arguments to force particular names.)
385    
386    ----------------------------------------------------------------------
387    Name: Matthias Blume
388    Date: 2001/06/21 12:25:00 EDT
389    Tag: blume-20010621-eXene
390    Description:
391    
392    eXene now compiles and (sort of) works again.
393    
394    The library name (for version > 110.33) is $/eXene.cm.
395    
396    I also added an new example in src/eXene/examples/nbody.  See the
397    README file there for details.
398    
399    ----------------------------------------------------------------------
400    Name: Matthias Blume
401    Date: 2001/06/20 16:40:00 EDT
402    Tag: blume-20010620-cml
403    Description:
404    
405    CML now compiles and works again.
406    
407    Libraries (for version > 110.33):
408    
409      $cml/cml.cm            Main CML library.
410      $cml/basis.cm          CML's version of $/basis.cm.
411      $cml/cml-internal.cm   Internal helper library.
412      $cml/core-cml.cm       Internal helper library.
413      $cml-lib/trace-cml.cm  Tracing facility.
414      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
415    
416    The installer (config/install.sh) has been taught how to properly
417    install this stuff.
418    
419    ----------------------------------------------------------------------
420    Name: Matthias Blume
421    Date: 2001/06/19 17:55:00 EDT
422    Tag: blume-20010619-instantiate
423    Description:
424    
425    This un-breaks the fix for bug 1432.
426    (The bug was originally fixed in 110.9 but I broke it again some
427    time after that.)
428    
429    ----------------------------------------------------------------------
430    Name: Matthias Blume
431    Date: 2001/06/19 17:25:00 EDT
432    Tag: blume-20010619-signals
433    Description:
434    
435    This should (hopefully) fix the long-standing signal handling bug.
436    (The runtime system was constructing a continuation record with an
437    incorrect descriptor which would cause the GC to drop data on the floor...)
438    
439    ----------------------------------------------------------------------
440    Name: Matthias Blume
441    Date: 2001/06/15 15:05:00 EDT
442    Tag: blume-20010615-moresparc
443    Description:
444    
445    Here is a short late-hour update related to Sparc c-calls:
446    
447     -- made handling of double-word arguments a bit smarter
448    
449     -- instruction selection phase tries to collapse certain clumsily
450        constructed ML-Trees; typical example:
451    
452            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
453    
454        This currently has no further impact on SML/NJ since mlriscGen does
455        not seem to generate such patterns in the first place, and c-calls
456        (which did generate them in the beginning) has meanwhile been fixed
457        so as to avoid them as well.
458    
459    ----------------------------------------------------------------------
460    Name: Matthias Blume
461    Date: 2001/06/15 15:05:00 EDT
462    Tag: blume-20010615-sparc
463    Description:
464    
465    The purpose of this update is to provide an implementation of NLFFI
466    on Sparc machines.
467    
468    Here are the changes in detail:
469    
470       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
471       the Sparc implementation of the c-calls API.
472       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
473       for accessing the ML frame.  Thus, we have a real frame pointer and
474       can freely modify %sp without need for an omit-frame-ptr phase.
475       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
476       this case.
477       * ml-nlffigen has been taught to produce code for different architectures
478       and calling conventions.
479       * In a way similar to what was done in the x86 case, the Sparc
480       backend uses its own specific extension to mltree.  (For example,
481       it needs to be able to generate UNIMP instructions which are part
482       of the calling convention.)
483       * ml-nlffi-lib was reorganized to make it more modular (in particular,
484       to make it easier to plug in new machine- and os-dependent parts).
485    
486    There are some other fairly unrelated bug fixes and cleanups as well:
487    
488       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
489       that they properly share their libraries with existing SML/NJ libraries.
490       * I fixed a minor cosmetic bug in CM, supressing certain spurious
491       follow-up error messages.
492       * Updates to CM/CMB documentation.
493    
494    TODO items:
495    
496       * MLRISC should use a different register as its asmTemp on the Sparc.
497         (The current %o2 is a really bad choice because it is part of the
498         calling conventions, so things might interfere in unexpected ways.)
499    
500    ----------------------------------------------------------------------
501    Name: Matthias Blume
502    Date: 2001/06/07
503    Tag: blume-20010607-calls
504    Description:
505    
506    A number of internal changes related to C calls and calling conventions:
507    
508    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
509       number of bytes popped implicitly (by the callee).  In most cases
510       this field is 0 but on x86/win32 it is some non-zero value.  This
511       is information provided for the benefit of the "omit-frameptr" pass.
512    2. The CALL instruction on the x86 carries a similar "pops" field.
513       The instruction selection phase copies its value from the ML-Tree
514       CALL statement.
515    3. On all other architectures, the instruction selection phase checks
516       whether "pops=0" and complains if not.
517    4. The c-calls implementation for x86 now accepts two calling conventions:
518       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
519       up after the call and pops is set to 0.  For "stdcall", the caller
520       does nothing, leaving the cleanup to the callee; pops is set to
521       the number of bytes that were pushed onto the stack.
522    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
523       distinguish between "ccall" and "stdcall".
524    6. The UNIMP instruction has been added to the supported Sparc instruction
525       set. (This is needed for implementing the official C calling convention
526       on this architecture.)
527    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
528       work with the latest CM.
529    
530    ----------------------------------------------------------------------
531    Name: Matthias Blume
532    Date: 2001/06/05 15:10:00 EDT
533    Tag: blume-20010605-cm-index
534    Description:
535    
536    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
537    
538    1. CM can now generate "index files".  These are human-readable files
539       that list on a per-.cm-file basis each toplevel symbol defined or
540       imported.  The location of the index file for
541       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
542       To enable index-file generation, set CM.Control.generate_index to true
543       or export an environment-symbol: export CM_GENERATE_INDEX=true.
544    
545       The CM manual has been updated accordingly.
546    
547    2. I made some slight modifications to the c-calls API in MLRISC.
548    
549         a) There is now a callback to support saving/restoring of
550            dedicated but caller-save registers around the actual call
551            instruction.
552         b) One can optionally specify a comment-annotation for the
553            call instruction.
554    
555    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
556       (For example, the comment annotation shows the C prototype of
557        the function being called.)
558    
559    ----------------------------------------------------------------------
560    Name: Matthias Blume
561    Date: 2001/06/01 13:30:00 EDT
562    Tag: blume-20010601-nlffi-cleanup
563    Description:
564    
565    This is mostly a cleanup of MLFFI stuff:
566    
567       - some signature files have been put into a more exposed place
568       - the ugly 'f type parameter is gone (simplifies types tremendously!)
569       - ml-nlffigen changed accordingly
570       - tutorial updated
571    
572    Other changes:
573    
574       - author's affiliation in CM manual(s) updated
575       - some more recognized keywords added to Allen's sml.sty
576    
577    ----------------------------------------------------------------------
578    Name: Matthias Blume
579    Date: 2001/05/25 15:30:00 EDT
580    Tag: blume-20010525-iptr
581    Description:
582    
583      - put the official 110.33-README (as it appears on the ftp server) under
584        CVS
585      - fixed a small bug related to incomplete pointer types in
586        ml-nlffigen
587      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
588        (it does not need the 'f type parameter)
589    
590    ----------------------------------------------------------------------
591    Name: Matthias Blume
592    Date: 2001/05/23 14:30:00 EDT
593    Tag: Release_110_33
594    Description:
595    
596    New version number (110.33).  New bootfiles.
597    
598    ----------------------------------------------------------------------
599    Name: Matthias Blume
600    Date: 2001/05/22 18:06:00 EDT
601    Tag: blume-20010522-targets
602    Description:
603    
604    Made install.sh use file config/targets.customized if it exists, falling
605    back to config/targets if it doesn't.  This way one can have a customized
606    version of the targets file without touching the "real thing", thus
607    eliminating the constant fear of accidentally checking something bogus
608    back into the CVS repository...  (File config/targets.customized must
609    not be added to the repository!)
610    
611    ----------------------------------------------------------------------
612    Name: Matthias Blume
613    Date: 2001/05/22 16:30:00 EDT
614    Tag: blume-20010522-minitut
615    Description:
616    
617    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
618       struct returns.
619    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
620       incomplete, preliminary documentation for NLFFI.
621    
622    ----------------------------------------------------------------------
623    Name: Matthias Blume
624    Date: 2001/05/14 11:30:00 EDT
625    Tag: blume-20010514-script
626    Description:
627    
628    Some bugs in install script fixed.
629    
630    In addition to that I also made a slight change to the NLFFI API:
631    Functors generated by ml-nlffigen now take the dynamic library as a
632    straight functor argument, not as a suspended one.  (The original
633    functor code used to force the suspension right away anyway, so there
634    was nothing gained by this complication of the interface.)
635    
636    ----------------------------------------------------------------------
637    Name: Matthias Blume
638    Date: 2001/05/11 14:35:00 EDT
639    Tag: blume-20010511-ml-nlffi
640    Description:
641    
642    I finally took the plunge and added my new FFI code to the main
643    repository.  For x86-linux it is now ready for prime-time.
644    
645    There are two new subdirectories of "src":
646    
647      - ml-nlffi-lib:
648           The utility library for programs using the FFI interface.
649           Here is the implementation of $/c.cm and its associated low-level
650           partners $/c-int.cm and $/memory.cm.
651      - ml-nlffigen:
652           A stand-alone program for generating ML glue code from C source
653           code.
654    
655    Building ml-nlffigen requires $/ckit-lib.cm.
656    
657    The config/install.sh script has been updates to do the Right Thing
658    (hopefully).
659    
660    Notice that the source tree for the C-Kit will not be put under "src"
661    but directly under the installation root directory.  (This is the
662    structure that currently exists on the CVS server when you check out
663    module "sml".)  Fortunately, config/install.sh knows about this oddity.
664    
665    Bugs: No documentation yet.
666    
667    ----------------------------------------------------------------------
668    Name: Matthias Blume
669    Date: 2001/05/09 16:35:00 EDT
670    Tag: blume-20010509-cpscontract
671    Description:
672    
673    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
674    wrapper/unwrapper elimination did not decrement usage counts and some
675    dead variables got overlooked by the dead-up logic.)
676    
677    ----------------------------------------------------------------------
678    Name: Lal George
679    Date: 2001/05/08  17:26:09 EDT
680    Tag: george-20010508-omit-frameptr
681    Description:
682    
683    Changes to implement the omit-frame-pointer optimization to support
684    raw C calls. For now, there is only support on the Intel x86, but
685    other architectures will follow as more experience is gained with this.
686    
687    
688    ----------------------------------------------------------------------
689    Name: Matthias Blume
690    Date: 2001/05/07 14:40:00 EDT
691    Tag: blume-20010507-proxies
692    Description:
693    
694    I made into "proxy libraries" all libraries that qualify for such a
695    change.  (A qualifying library is a library that has another library or
696    groups as its sole member and repeats that member's export list
697    verbatim.  A proxy library avoids this repetition by omitting its export
698    list, effectively inheriting the list that its (only) member exports.
699    See the CM manual for more explanation.)
700    The main effect is that explicit export lists for these libraries
701    do not have to be kepts in sync, making maintenance a bit easier.
702    
703    I also added copyright notices to many .cm-files.
704    
705    Last but not least, I made a new set of bootfiles.
706    
707    ----------------------------------------------------------------------
708    Name: Matthias Blume
709    Date: 2001/05/04 17:00:00 EDT
710    Tag: blume-20010504-cm-lsplit
711    Description:
712    
713    0. John merged pending changes to $/smlnj-lib.cm
714    
715    1. Allen's previous change accidentally backed out of one of Lal's
716       earlier changes.  I undid this mistake (re-introducing Lal's change).
717    
718    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
719       within the compiler where applicable.  There is some code simplification
720       because of that.
721    
722    3. The "split" phase (in FLINT) is now part of the default list of phases.
723       Compiler.Control.LambdaSplitting.* can be used to globally control the
724       lambda-splitting (cross-module-inlining) engine.  In addition to that,
725       it can now also be controlled on a per-source basis: CM has been taught
726       a new tool parameter applicable to ML source files.
727    
728       - To turn lambda-splitting off completely:
729            local open Compiler.Control.LambdaSplitting in
730                val _ = set Off
731            end
732       - To make "no lambda-splitting" the global default (but allow per-source
733         overriding); this is the initial setting:
734            local open Compiler.Control.LambdaSplitting in
735                val _ = set (Default NONE)
736            end
737       - To make "lambda-splitting with aggressiveness a" the global default
738         (and allow per-source overriding):
739            local open Compiler.Control.LambdaSplitting in
740                val _ = set (Default (SOME a))
741            end
742    
743       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
744         write (in the respective .cm-file):
745            a.sml (lambdasplitting:off)
746       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
747            a.sml (lambdasplitting:on)
748       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
749         <a> is a decimal non-negative integer):
750            a.sml (lambdasplitting:<a>)
751       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
752            a.sml (lambdasplitting:infinity)
753       - To use the global default for a.sml:
754            a.sml (lambdasplitting:default)
755         or simply
756            a.sml
757    
758    ----------------------------------------------------------------------
759    Name: Allen Leung
760    Date: 2001/05/04 01:57:00 EDT
761    Tag: leunga-20010504-sync
762    Description:
763    
764      MLRISC features.
765    
766      1. Fix to CMPXCHG instructions.
767      2. Changed RA interface to allow annotations in callbacks.
768      3. Added a new method to the stream interface to allow annotations updates.
769    
770    ----------------------------------------------------------------------
771    Name: Matthias Blume
772    Date: 2001/05/01 11:45:00 EDT
773    Tag: blume-20010501-pcedittmp
774    Description:
775    
776    Changed install.sh to use the current working directory instead of
777    /usr/tmp for a temporary file (pcedittmp).  The previous choice
778    of /usr/tmp caused trouble with MacOS X because of file premission
779    problems.
780    
781    ----------------------------------------------------------------------
782    Name: Matthias Blume
783    Date: 2001/04/20 11:10:00 EDT
784    Tag: blume-20010420-inMLflag
785    Description:
786    
787     - added vp_limitPtrMask to vproc-state.h
788       (for use by the raw-C-calls mechanism to implement proper interrupt
789        handling)
790     - made the ML compiler aware of various data-structure offsets so it
791       can generate code for accessing the vp_inML flag and vp_limitPtrMask
792     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
793       raw C-calls
794    
795    ----------------------------------------------------------------------
796    Name: Lal George
797    Date: 2001/04/20 09:15:28 EDT
798    Tag: george-20010420-macosX
799    Description:
800    
801     - Changes to port to Mac OS X; Darwin.
802    
803     - In the process I found that sqrt was broken on the PPC, because the
804       fsqrt instruction is not implemented.
805    
806    ----------------------------------------------------------------------
807    Name: Matthias Blume
808    Date: 2001/04/18 12:45:00 EDT
809    Tag: blume-20010418-ccalls
810    Description:
811    
812     - fixed two off-by-4 errors in the x86-specific c-calls implementation
813       (this bug prevented structure arguments containing pointers from being
814        passed correctly)
815     - changed the raw-C-call code in mlriscGen.sml in such a way that
816       structure arguments are represented as a pointer to the beginning
817       of the structure (instead of having a series of synthesized arguments,
818       one for each structure member)
819    
820     - made makeml script's verbosity level configurable via environment
821       variable (MAKEML_VERBOSITY)
822    
823     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
824       in rawmem-x86.sml; we are now using the real thing
825    
826    ----------------------------------------------------------------------
827    Name: Matthias Blume
828    Date: 2001/03/22 16:25:00 EST
829    Tag: blume-20010322-bootfiles
830    Description:
831    
832    Created a new set of bootfiles (for your automatic installation convenience).
833    
834    ----------------------------------------------------------------------
835    Name: Matthias Blume
836    Date: 2001/03/22 15:10:00 EST
837    Tag: blume-20010322-rawmem-parcm
838    Description:
839    
840    1. All "raw memory access" primitives for the new FFI are implemented now
841       (at least on the x86).
842    2. Some further cleanup of CM's parallel make mechanism.
843    
844    ----------------------------------------------------------------------
845    Name: Matthias Blume
846    Date: 2001/03/19 17:53:00 EST
847    Tag: blume-20010319-parallel
848    Description:
849    
850    Parallel make (using compile servers) now works again.
851    
852    To this end, CM.stabilize and CMB.make have been modified to work in
853    two passes when compile servers are attached:
854       1. Compile everything, do not perform stabilization; this pass
855          uses compile servers
856       2. Stabilize everything; this pass does not use compile servers
857    If there are no compile servers, the two passes are combined into one
858    (as before).  Splitting the passes increases the inherent parallelism
859    in the dependency graph because the entire graph including all
860    libraries is available at the same time.  This, in turn, improves
861    server utilization.  The downside is that the master process will
862    have to do some extra work after compilation is done (because for
863    technical reasons it must re-read all the binfiles during stabilization).
864    
865    ----------------------------------------------------------------------
866    Name: Matthias Blume
867    Date: 2001/03/16 12:22:00 EST
868    Tag: blume-20010316-bootfiles
869    Description:
870    
871    Created a new set of bootfiles (for your automatic installation convenience).
872    
873    ----------------------------------------------------------------------
874    Name: Matthias Blume
875    Date: 2001/03/16 11:00:00 EST
876    Tag: blume-20010316-MLTREE-fixup
877    Description:
878    
879    This is a minor fixup for an (untagged) earlier commit by Allen.
880    (A file was missing).
881    
882    ----------------------------------------------------------------------
883    Name: Allen Leung
884    Date: Mon Mar  5 18:54:57 EST 2001
885    Tag: leunga-20010305-cut-support
886    
887    1. New support for alternative control-flow in MLTREE.
888       Currently we support
889    
890          FLOW_TO(CALL ...., [k1,...,kn])
891    
892       This is needed for 'cuts to' in C-- and try/handle-like constructs
893       in Moby
894    
895       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
896    
897    2. Register Allocator
898    
899       Changes in interface [from Fermin, John]
900    
901    3. Alpha 8-bit SLL support [Fermin]
902    
903    4. All architectures
904    
905       A new module (ClusterExpandCopies) for expanding parallel copies.
906    
907    ----------------------------------------------------------------------
908    Name: Allen Leung
909    Date: 2001/02/27 23:07:00 EST
910    Tag: leunga-20010227-minor-stuff
911    
912    1. Alpha bug fix for CMOVNE
913    2. Handle mltree COND(..,FCMP ...,...)
914    3. Bug fix in simplifier
915    
916    ----------------------------------------------------------------------
917    Name: Matthias Blume
918    Date: 2001/01/30 17:50:00 EST
919    Tag: blume-20010130-sync
920    Description:
921    
922    This is just a minor update to sync my devel branch with the main brach.
923    The only visible change is the addition of some README files.
924    
925    ----------------------------------------------------------------------
926    Name: Matthias Blume
927    Date: 2001/01/12 23:30:00 JST
928    Tag: blume-20010112-bootfiles
929    Description:
930    
931    Made a new set of bootfiles that goes with the current state of the
932    repository.
933    
934    ----------------------------------------------------------------------
935    Name: Matthias Blume
936    Date: 2001/01/12 21:20:00 JST
937    Tag: blume-20010112-sync
938    Description:
939    
940    I am just flushing out some minor changes that had accumulated in
941    my private branch in order to sync with the main tree.  (This is
942    mainly because I had CVS trouble when trying to merge _into_ my
943    private branch.)
944    
945    Most people should be completely unaffected by this.
946    
947    ----------------------------------------------------------------------
948    Name: Allen Leung
949    Date: Thu Jan 11 21:03:00 EST 2001
950    Tag: leunga-20010111-labexp=mltree
951    Description:
952    
953    1.  Removed the type LabelExp and replace it by MLTree.
954    2.  Rewritten mltree-simplify with the pattern matcher tool.
955    3.  There were some bugs in alpha code generator which would break
956        64-bit code generation.
957    4.  Redo the tools to generate code with the
958    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
959        are now generated by perl scripts.
960    
961    ----------------------------------------------------------------------
962    Name: Matthias Blume
963    Date: 2001/01/10 21:55:00 JST
964    Tag: blume-20010110-rcc
965    Description:
966    
967    The RCC stuff now seems to work (but only on the x86).
968    This required hacking of the c-calls interface (and -implementation) in
969    MLRISC.
970    
971    Normal compiler users should be unaffected.
972    
973    ----------------------------------------------------------------------
974    Name: Matthias Blume
975    Date: 2001/01/09 01:20:00 JST
976    Tag: blume-20010109-rcc
977    Description:
978    
979    This is a fairly big patch, flushing out a large number of pending
980    changes that I made to my development copy over the last couple of days.
981    
982    Of practical relevance at this moment is a workaround for a pickling
983    bug that Allen ran into the other day.  The cause of the bug itself is
984    still unknown and it might be hard to fix it properly, but the
985    workaround has some merits of its own (namely somewhat reducing pickling
986    overhead for certain libraries).  Therefore, I think this solution should
987    be satisfactory at this time.
988    
989    The rest of the changes (i.e., the vast majority) has to do with my
990    ongoing efforts of providing direct support for C function calls from
991    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
992    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
993    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
994    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
995    handle RCC.
996    
997    The last part (the changes to mlriscGen.sml) are still known to be
998    wrong on the x86 and not implemented on all other architectures.  But
999    the infrastructure is in place. I had to change a few functor
1000    signatures in the backend to be able to route the CCalls interface
1001    from MLRISC there, and I had to specialize the mltree type (on the
1002    x86) to include the necessary extensions. (The extensions themselves
1003    were already there and redy to go in MLRISC/x86).
1004    
1005    Everything should be very happy as soon as someone helps me with
1006    mlriscGen.sml...
1007    
1008    In any case, nothing of this should matter to anyone as long as the
1009    new primop is not being used (which is going to be the case unless you
1010    find it where I hid it :). The rest of the compiler is completely
1011    unaffected.
1012    
1013    ----------------------------------------------------------------------
1014    Name: Matthias Blume
1015    Date: 2001/01/05 00:30:00 JST
1016    Tag: blume-20010105-primops
1017    Description:
1018    
1019    Added some experimental support for work that I am doing right now.
1020    These changes mostly concern added primops, but there is also a new
1021    experimental C library in the runtime system (but currently not enabled
1022    anywhere except on Linux/X86).
1023    
1024    In the course of adding primops (and playing with them), I discovered that
1025    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
1026    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
1027    To recover, I made type information in INL_PRIM mandatory and changed
1028    prim.sml as well as built-in.sml accordingly.  The InLine structure now
1029    has complete, correct type information (i.e., no bottom types).
1030    
1031    Since all these changes mean that we need new binfiles, I also bumped the
1032    version number to 110.32.1.
1033    
1034    ----------------------------------------------------------------------
1035    Name: Matthias Blume
1036    Date: 2000/12/30 22:10:00 JST
1037    Tag: blume-20001230-various
1038    Description:
1039    
1040    Added proxy libraries for MLRISC and let MLRISC libraries refer
1041    to each other using path anchors.  (See CM manual for explanation.)
1042    
1043    Updated CM documentation.
1044    
1045    Fixed some bugs in CM.
1046    
1047    Implemented "proxy" libraries (= syntactic sugar for CM).
1048    
1049    Added "-quiet" option to makeml and changed runtime system accordingly.
1050    
1051    Added cleanup handler for exportML to reset timers and compiler stats.
1052    
1053    ----------------------------------------------------------------------
1054    Name: Lal George
1055    Date: 2000/12/22 22:22:58 EST 2000
1056    Tag: Release_110_32
1057    Description:
1058    
1059            Infinite precision used throughout MLRISC.
1060            see MLRISC/mltree/machine-int.sig
1061    
1062    ----------------------------------------------------------------------
1063    Name: Matthias Blume
1064    Date: 2000/12/22 23:16:00 JST
1065    Tag: blume-20001222-warn
1066    Description:
1067    
1068    Corrected wording and formatting of some CM warning message which I
1069    broke in my previous patch.
1070    
1071    ----------------------------------------------------------------------
1072    Name: Matthias Blume
1073    Date: 2000/12/22 21:20:00 JST
1074    Tag: blume-20001222-anchorenv
1075    Description:
1076    
1077    Fixed CM's handling of anchor environments in connection with CMB.make.
1078    
1079    ----------------------------------------------------------------------
1080    Name: Matthias Blume
1081    Date: 2000/12/22 13:15:00 JST
1082    Tag: blume-20001222-cleanup
1083    Description:
1084    
1085    Removed src/cm/ffi which does not (and did not) belong here.
1086    
1087    ----------------------------------------------------------------------
1088    Name: Matthias Blume
1089    Date: 2000/12/21 23:55:00 JST
1090    Tag: blume-20001221-exn
1091    Description:
1092    
1093    Probably most important: CM no longer silently swallows all exceptions
1094    in the compiler.
1095    Plus: some other minor CM changes.  For example, CM now reports some
1096    sizes for generated binfiles (code, data, envpickle, lambdapickle).
1097    
1098    ----------------------------------------------------------------------
1099    Name: Matthias Blume
1100    Date: 2000/12/15 00:01:05 JST
1101    Tag: blume-20001215-dirtool
1102    Description:
1103    
1104    - "dir" tool added.
1105    - improvements and cleanup to Tools structure
1106    - documentation updates
1107    
1108    ----------------------------------------------------------------------
1109    Name: Allen Leung
1110    Date: Thu Dec 14 03:45:24 EST 2000
1111    Description:
1112    Tag:  leunga-20001214-int-inf
1113    Description:
1114    
1115       In IntInf, added these standard functions, which are missing from our
1116    implementation:
1117    
1118        andb : int * int -> int
1119        xorb : int * int -> int
1120        orb  : int * int -> int
1121        notb : int -> int
1122         <<   : int * word -> int
1123        ~>>  : int * word -> int
1124    
1125       Not tested, I hope they are correct.
1126    
1127    ----------------------------------------------------------------------
1128    Name: Allen Leung
1129    Date: Fri Dec  8 19:23:26 EST 2000
1130    Description:
1131    Tag:  leunga-20001208-nowhere
1132    Description:
1133    
1134      Slight improvements to the 'nowhere' tool to handle OR-patterns,
1135    to generate better error messages etc.  Plus a brief manual.
1136    
1137    ----------------------------------------------------------------------
1138    Name: Lal George
1139    Date: 2000/12/08 09:54:02 EST 2000
1140    Tag: Release_110_31
1141    Description:
1142    
1143    - Version 110.31
1144    ----------------------------------------------------------------------
1145    Name: Allen Leung
1146    Date: Thu Dec  7 22:01:04 EST 2000
1147    Tag:  leunga-20001207-cell-monster-hack
1148    Description:
1149    
1150    Major MLRISC internal changes.  Affect all clients.
1151    Summary:
1152    
1153    1.  Type CELLS.cell = int is now replaced by a datatype.
1154        As a result, the old regmap is now gone.  Almost all interfaces
1155        in MLRISC change as a consequence.
1156    
1157    2.  A new brand version of machine description tool (v3.0) that generates
1158        modules expecting the new interface.  The old version is removed.
1159    
1160    3.  The RA interface has been further abstracted into two new functors.
1161        RISC_RA and X86RA.  These functors have much simpler interfaces.
1162        [See also directory MLRISC/demo.]
1163    
1164    4.  Some other new source->source code generation tools are available:
1165    
1166        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
1167        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
1168           I use this tool to generate the peephole optimizers---with the new
1169           cell type changes, peephole rules are becoming difficult to write
1170           without conditional pattern matching.
1171    
1172    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
1173        cover the entire MLRISC source tree so many things broke.
1174    
1175    6.  CM files have been moved to the subdirectory MLRISC/cm.
1176        They are moved because there are a lot of them and they clutter up the
1177        root dir.
1178    
1179    7.  More detailed documentation to come...
1180    
1181        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
1182        a makeml -rebuild first.  This is because of other other
1183        changes that Matthias has made (see below).
1184    
1185    
1186    ----------------------------------------------------------------------
1187    Name: Matthias Blume
1188    Date: 2000/11/30 23:12:00 JST
1189    Tag: blume-20001130-filereorg
1190    Description:
1191    
1192    Some manual updates and some file reorganizations in CM.
1193    
1194    ----------------------------------------------------------------------
1195    Name: Matthias Blume
1196    Date: 2000/11/24 17:45:00 JST
1197    Tag: blume-20001124-link
1198    Description:
1199    
1200    Drastically improved link traversal code for the case that the dynamic
1201    value was already loaded at bootstrap time.  As a result, CM and CMB
1202    now both load blazingly fast -- even on a very slow machine.  Also,
1203    memory consumption has been further reduced by this.
1204    
1205    Warning: The format of the PIDMAP file has changed.  THerefore, to
1206    bootstrap you have to do this:
1207    
1208    1. Run CMB.make
1209    2. Make a symbolic link for the boot directory:
1210         ln -s sml.boot.ARCH-OS xxx
1211    3. "Rebuild" the boot directory:
1212         ./makeml -boot xxx -rebuild sml ; rm xxx
1213    4. Boot normally:
1214          ./makeml
1215    
1216    ----------------------------------------------------------------------
1217    Name: Matthias Blume
1218    Date: 2000/11/21 21:20:00 JST
1219    Tag: blume-20001121-tools
1220    Description:
1221    
1222    Continued hacking on autoloading problem -- with success this time.
1223    Also changed tool-plugin mechanism.  See new CM manual.
1224    
1225    ----------------------------------------------------------------------
1226    Name: Matthias Blume
1227    Date: 2000/11/19 14:30:00 JST
1228    Tag:  blume-20001119-autoload
1229    Description:
1230    
1231    Some hacking to make autoloading faster.  Success for CMB, no success
1232    so far for CM.  There is a reduced structure CM' that autoloads faster.
1233    (This is a temporary, non-documented hack to be eliminated again when
1234    the general problem is solved.)
1235    
1236    ----------------------------------------------------------------------
1237    Name: Matthias Blume
1238    Date: 2000/11/17 14:10:00 JST
1239    Tag: blume-20001117-pickle-lib
1240    Description:
1241    
1242    1. Eliminated comp-lib.cm
1243    2. Made pickle-lib.cm
1244    3. Eliminated all uses of intset.sml (from comp-lib.cm)
1245    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
1246       equivalent constructs from smlnj-lib.cm (INtHashTable).
1247    5. Point 4. also goes for those uses of intmap.* in MLRISC.
1248       Duplicated intmap modules thrown out.
1249    6. Hunted down all duplicated SCC code and replaced it with
1250       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
1251    7. Rewrote Feedback module.
1252    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
1253       should be thrown out and equivalent modules from smlnj-lib.cm
1254       should be used (IntRedBlackSet, IntListSet, ...).
1255    
1256    Confirmed that compiler compiles to fixpoint.
1257    
1258    ----------------------------------------------------------------------
1259    Name: Allen Leung
1260    Date: 2000/11/10 18:00:00
1261    Tag: leunga-20001110-new-x86-fp
1262    
1263    A new x86 floating point code generator has been added.
1264    By default this is turned off.  To turn this on, do:
1265    
1266        CM.autoload "$smlnj/compiler.cm";
1267        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
1268    
1269    Changes:
1270    
1271    1.  Changed FTAN to FPTAN so that the assembly output is correct.
1272    2.  Changed the extension callback for FTANGENT to generate:
1273    
1274              fptan
1275              fstp  %st(0)
1276        instead of
1277              fptan
1278              fstpl ftempmem
1279    
1280    3.  Numerous assembly fixes for x86.
1281    
1282    5.  Cleaned up the machine code output module x86/x86MC.sml and added
1283        support for a whole bunch of instructions and addressing modes:
1284    
1285          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
1286          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
1287          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
1288          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
1289          fxch %st(n)
1290          fld %st(n)
1291          fst %st(n)
1292          fst mem
1293          fstp %st(n)
1294          fucom %st(n)
1295          fucomp %st(n)
1296    
1297        All these are now generated when the fast fp mode is turned on.
1298    
1299    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
1300    
1301    ----------------------------------------------------------------------
1302    Name: Matthias Blume
1303    Date: 2000/11/09 11:20:00 JST
1304    Tag: blume-20001109-scc
1305    Description:
1306    
1307    Eliminated some code duplication:
1308    
1309    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
1310       (Otherwise the functor is useless.)
1311    2. Used GraphSCCFn where SCCUtilFun was used previously.
1312    3. Got rid of SCCUtilFun (in comp-lib.cm).
1313    
1314    ----------------------------------------------------------------------
1315    Name: Lal George
1316    Date: 2000/11/06 09:02:21 EST 2000
1317    Tag: Release_110_30
1318    Description:
1319    
1320    - Version 110.30
1321    ----------------------------------------------------------------------
1322    Name: Matthias Blume
1323    Date: 2000/11/04 14:45:00
1324    Tag: blume-20001104-mlbuild
1325    Description:
1326    
1327    - Made ml-build faster on startup.
1328    - Documentation fixes.
1329    
1330    ----------------------------------------------------------------------
1331    Name: Matthias Blume
1332    Date: 2000/11/02 17:00:00 JST
1333    Tag: blume-20001102-condcomp
1334    Description:
1335    
1336    - Small tweaks to pickler -- new BOOTFILES!
1337    - Version bumped to 110.29.2.
1338    - Added conditional compilation facility to init.cmi (see comment there).
1339    ----------------------------------------------------------------------
1340    Name: Allen Leung
1341    Date: 2000/10/23 19:31:00
1342    Tag: leunga-20001023-demo-ra
1343    
1344    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
1345    2. Test programs for the graph library updated
1346    3. Some new MLRISC demo programs added
1347    
1348    ----------------------------------------------------------------------
1349    Name: Matthias Blume
1350    Date: 2000/08/31 22:15:00 JST
1351    Tag: blume-20001017-errmsg
1352    Description:
1353    
1354    More error message grief: Where there used to be no messages, there
1355    now were some that had bogus error regions.  Fixed.
1356    
1357    ----------------------------------------------------------------------
1358    Name: Matthias Blume
1359    Date: 2000/08/31 17:30:00 JST
1360    Tag: blume-20001017-v110p29p1
1361    Description:
1362    
1363    I made a version 110.29.1 with new bootfiles.
1364    
1365    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
1366              CM documentation changes and a small bugfix in CM's error reporting.
1367    
1368    ----------------------------------------------------------------------
1369    Name: Lal George
1370    Date: 2000/09/27 14:42:35 EDT
1371    Tag: george-20000927-nodestatus
1372    Description:
1373    
1374    Changed the type of the nodestatus, so that:
1375    
1376            SPILLED(~1)             is now SPILLED
1377            SPILLED(m) where m>=0   is now MEMREG(m)
1378            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
1379    
1380    ----------------------------------------------------------------------
1381    Name: Matthias Blume
1382    Date: 2000/09/07 14:45:00 JST
1383    Tag: blume-20000907-cmerrmsg
1384    Description:
1385    
1386    Small tweak to CM to avoid getting ML syntax error messages twice.
1387    
1388    ----------------------------------------------------------------------
1389    Name: Matthias Blume
1390    Date: 2000/08/31 18:00:00 JST
1391    Tag: blume-20000831-cvsbootfiles
1392    Description:
1393    
1394    New URL for boot files (because the 110.29 files on the BL server do
1395    now work correctly with my updated install scripts for yacc and lex).
1396    
1397    ----------------------------------------------------------------------
1398    Name: Matthias Blume
1399    Date: 2000/08/08 12:33:00 JST
1400    Tag: blume-20000808-manual
1401    Description:
1402    
1403    Tiny update to CM manual.
1404    
1405    ----------------------------------------------------------------------
1406    Name: Allen Leung
1407    Date: 2000/08/7 19:31:00
1408    Tag: leunga-20000807-a-whole-bunch-of-stuff
1409    
1410      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
1411    and Mobdy.
1412    
1413    1.  x86
1414    
1415       a.  Fixes to peephole module by John and Dan.
1416       b.  Assembly fix to SETcc by Allen.
1417       c.  Fix to c-call by John.
1418       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
1419       e.  Instruction selection optimization to SETcc as suggested by John.
1420    
1421           For example,
1422    
1423            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
1424    
1425           should generate:
1426    
1427            MOVL a, x
1428            SUBL b, x
1429            SHRL 31, x
1430    
1431    2.  IR stuff
1432    
1433         A bunch of new DJ-graph related algorithms added.  These
1434         speed up SSA construction.
1435    
1436    3.  SSA + Scheduling
1437    
1438         Added code for SSA and scheduling to the repository
1439    
1440    ----------------------------------------------------------------------
1441    Name: Lal George
1442    Date: 2000/07/27 11:53:14 EDT
1443    
1444    Tag: lal-20000727-linux-ppc
1445    Description:
1446    
1447     Made changes to support Linux PPC.
1448     p.s. I have confirmation that the 110.29 boot files work fine.
1449    
1450    ----------------------------------------------------------------------
1451    Name: Matthias Blume
1452    Date: 2000/07/27 17:40:00 JST
1453    Tag: blume-20000727-scripts
1454    Description:
1455    
1456    !!!! WARNING !!!!
1457    You must recompile the runtime system!
1458    !!!! WARNING !!!!
1459    
1460    This is basically another round of script-enhancements:
1461    
1462    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
1463       and undefine CM preprocessor symbols.
1464    
1465    2. ml-build avoids generating a new heap image if it finds that the
1466       existing one is still ok.  (The condition is that no ML file had to
1467       be recompiled and all ML files are found to be older that the heap
1468       file.)
1469    
1470       To make this work smoothly, I also hacked the runtime system as
1471       well as SMLofNJ.SysInfo to get access to the heap image suffix
1472       (.sparc-solaris, ...) that is currently being used.
1473    
1474       Moreover, the signature of CM.mk_standalone has changed.  See the
1475       CM manual.
1476    
1477    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
1478       CM manual for details.)
1479    
1480    4. More CM manual updates:
1481        - all of the above has been documented.
1482        - there is now a section describing the (CM-related) command line
1483          arguments that are accepted by the "sml" command
1484    
1485    ----------------------------------------------------------------------
1486    Name: Matthias Blume
1487    Date: 2000/07/25 16:20:00 JST
1488    Tag: blume-20000725-makedepend
1489    Description:
1490    
1491    Added a script called ml-makedepend.  This can be used in makefiles
1492    for Unix' make in a way very similar to the "makedepend" command for
1493    C.
1494    
1495    The script internally uses function CM.sources.
1496    
1497    Synopsis:
1498    
1499        ml-makedepend [-f makefile] cmfile targetname
1500    
1501    The default for the makefile is "makefile" (or "Makefile" should
1502    "makefile" not exist).
1503    
1504    ml-makedepend adds a cmfile/targetname-specific section to this
1505    makefile (after removing the previous version of this section).  The
1506    section contains a single dependency specification with targetname on
1507    the LHS (targetname is an arbitrary name), and a list of files derived
1508    from the cmfile on the RHS.  Some of the files on the RHS are
1509    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
1510    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
1511    path names.  The makefile writer is responsible for making sure that
1512    these variables have correct at the time "make" is invoked.
1513    
1514    ----------------------------------------------------------------------
1515    Name: Matthias Blume
1516    Date: 2000/07/22 23:30:00 JST
1517    Tag: blume-20000722-urlupdate
1518    Description:
1519    
1520    Changed BOOT and config/srcarchiveurl to point to BL server:
1521    
1522        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
1523    
1524    ----------------------------------------------------------------------
1525    Name: Matthias Blume
1526    Date: 2000/07/18 18:00:00 JST
1527    Tag: blume-20000718-Version_110_29
1528    Description:
1529    
1530    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
1531    
1532    2. Updated config/version to 110.29
1533    
1534    3. Updated config/srcarchiveurl
1535    
1536    3. New boot files!
1537       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
1538    
1539    ----------------------------------------------------------------------
1540    Name: Matthias Blume
1541    Date: 2000/07/11 13:58:00 JST
1542    Tag: blume-20000711-doctypo
1543    Description:
1544    
1545    Fixed a few typos in CM manual.
1546    
1547    ----------------------------------------------------------------------
1548    Name: Allen Leung
1549    Date: 2000/06/15 00:38:00
1550    Tag: leunga-20000704-sparc-x86
1551    
1552    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
1553    2. fix to x86 RET bug [found by Dan Grossman]
1554    3. sparc assembly bug fix for ticc instructions [found by Fermin]
1555    
1556       Affects c-- and moby only
1557    
1558    ----------------------------------------------------------------------
1559    Name: Matthias Blume
1560    Date: 2000/07/04 15:26:00
1561    Tag: blume-20000704-trigger
1562    Description:
1563    
1564    1. Improvements to CM manual.
1565    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
1566       of getting a back-trace.  The function, when called, raises an
1567       internal exception which explicitly carries the full back-trace history,
1568       so it is unaffected by any intervening handle-raise pairs ("trivial"
1569       or not).  The interactive loop will print that history once it arrives
1570       at top level.
1571       Short of having all exceptions implicitly carry the full history, the
1572       recommended way of using this facility is:
1573         - compile your program with instrumentation "on"
1574         - run it, when it raises an exception, look at the history
1575         - if the history is "cut off" because of some handler, go and modify
1576           your program so that it explicitly calls BTrace.trigger
1577         - recompile (still instrumented), and rerun; look at the full history
1578    
1579    ----------------------------------------------------------------------
1580    Name: Matthias Blume
1581    Date: 2000/07/03 15:36:00 JST
1582    Tag: blume-20000702-manual
1583    Description:
1584    
1585    Small corrections and updates to CM manual.
1586    
1587    ----------------------------------------------------------------------
1588    Name: Matthias Blume
1589    Date: 2000/06/29 16:04:00 JST
1590    Tag: blume-20000629-yacctool
1591    Description:
1592    
1593    Changes:
1594    
1595    1. Class "mlyacc" now takes separate arguments to pass options to
1596       generated .sml- and .sig-files independently.
1597    2. Corresponding CM manual updates.
1598    3. BTrace module now also reports call sites.  (However, for loop clusters
1599       it only shows from where the cluster was entered.)  There are associated
1600       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
1601    
1602    ----------------------------------------------------------------------
1603    Name: Matthias Blume
1604    Date: 2000/06/27 16:51:00 JST
1605    Tag: blume-20000627-noweb
1606    Description:
1607    
1608    Changes:
1609    
1610     1. Implemented "subdir" and "witness" options for noweb tool.
1611        This caused some slight internal changes in CM's tool implementation.
1612     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
1613        some remaining issues from earlier path anchor changes.
1614     3. Updated CM manual accordingly.
1615    
1616     4. Changed implementation of back-tracing so that I now consider it
1617        ready for prime-time.
1618    
1619        In particular, you don't have to explicitly trigger the back-trace
1620        anymore.  Instead, if you are running BTrace-instrumented code and
1621        there is an uncaught exception (regardless of whether or not it was
1622        raised in instrumented code), the top-level evalloop will print
1623        the back-trace.
1624    
1625        Features:
1626    
1627          - Instrumented and uninstrumented code work together seemlessly.
1628            (Of course, uninstrumented code is never mentioned in actual
1629             back-traces.)
1630    
1631          - Asymptotic time- and space-complexity of instrumented code is
1632            equal to that of uninstrumented code.  (This means that
1633            tail-recursion is preserved by the instrumentation phase.)
1634    
1635          - Modules whose code has been instrumented in different sessions
1636            work together without problem.
1637    
1638          - There is no penalty whatsoever on uninstrumented code.
1639    
1640          - There is no penalty on "raise" expressions, even in
1641            instrumented code.
1642    
1643        A potential bug (or perhaps it is a feature, too):
1644    
1645          A back-trace reaches no further than the outermost instrumented
1646          non-trivial "raise".  Here, a "trivial" raise is one that is the
1647          sole RHS of a "handle" rule.  Thus, back-traces reach trough
1648    
1649               <exp> handle e => raise e
1650    
1651          and even
1652    
1653               <exp> handle Foo => raise Bar
1654    
1655          and, of course, through
1656    
1657               <exp> handle Foo => ...
1658    
1659         if the exception was not Foo.
1660    
1661         Back-traces always reach right through any un-instrumented code
1662         including any of its "handle" expressions, trivial or not.
1663    
1664       To try this out, do the following:
1665    
1666         - Erase all existing binfiles for your program.
1667           (You may keep binfiles for those modules where you think you
1668            definitely don't need back-tracing.)
1669         - Turn on back-trace instrumentation:
1670              SMLofNJ.Internals.BTrace.mode (SOME true);
1671         - Recompile your program.  (I.e., run "CM.make" or "use".)
1672         - You may now turn instrumentation off again (if you want):
1673              SMLofNJ.Internals.BTrace.mode (SOME false);
1674         - Run your program as usual.  If it raises an exception that
1675           reaches the interactive toplevel, then a back-trace will
1676           automatically be printed.  After that, the toplevel loop
1677           will print the exception history as usual.
1678    
1679  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1680  Name: Matthias Blume  Name: Matthias Blume
1681  Date: 2000/06/26 09:56:46 JST  Date: 2000/06/26 09:56:46 JST

Legend:
Removed from v.677  
changed lines
  Added in v.902

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