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 570, Wed Mar 8 17:30:13 2000 UTC revision 837, Fri Jun 1 17:27:54 2001 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name:  Name: Matthias Blume
17  Date:  Date: 2001/06/01 13:30:00 EDT
18  Tag:  Tag: blume-20010601-nlffi-cleanup
19  Description:  Description:
20    
21    This is mostly a cleanup of MLFFI stuff:
22    
23       - some signature files have been put into a more exposed place
24       - the ugly 'f type parameter is gone (simplifies types tremendously!)
25       - ml-nlffigen changed accordingly
26       - tutorial updated
27    
28    Other changes:
29    
30       - author's affiliation in CM manual(s) updated
31       - some more recognized keywords added to Allen's sml.sty
32    
33    ----------------------------------------------------------------------
34    Name: Matthias Blume
35    Date: 2001/05/25 15:30:00 EDT
36    Tag: blume-20010525-iptr
37    Description:
38    
39      - put the official 110.33-README (as it appears on the ftp server) under
40        CVS
41      - fixed a small bug related to incomplete pointer types in
42        ml-nlffigen
43      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
44        (it does not need the 'f type parameter)
45    
46    ----------------------------------------------------------------------
47    Name: Matthias Blume
48    Date: 2001/05/23 14:30:00 EDT
49    Tag: Release_110_33
50    Description:
51    
52    New version number (110.33).  New bootfiles.
53    
54    ----------------------------------------------------------------------
55    Name: Matthias Blume
56    Date: 2001/05/22 18:06:00 EDT
57    Tag: blume-20010522-targets
58    Description:
59    
60    Made install.sh use file config/targets.customized if it exists, falling
61    back to config/targets if it doesn't.  This way one can have a customized
62    version of the targets file without touching the "real thing", thus
63    eliminating the constant fear of accidentally checking something bogus
64    back into the CVS repository...  (File config/targets.customized must
65    not be added to the repository!)
66    
67    ----------------------------------------------------------------------
68    Name: Matthias Blume
69    Date: 2001/05/22 16:30:00 EDT
70    Tag: blume-20010522-minitut
71    Description:
72    
73    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
74       struct returns.
75    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
76       incomplete, preliminary documentation for NLFFI.
77    
78    ----------------------------------------------------------------------
79    Name: Matthias Blume
80    Date: 2001/05/14 11:30:00 EDT
81    Tag: blume-20010514-script
82    Description:
83    
84    Some bugs in install script fixed.
85    
86    In addition to that I also made a slight change to the NLFFI API:
87    Functors generated by ml-nlffigen now take the dynamic library as a
88    straight functor argument, not as a suspended one.  (The original
89    functor code used to force the suspension right away anyway, so there
90    was nothing gained by this complication of the interface.)
91    
92    ----------------------------------------------------------------------
93    Name: Matthias Blume
94    Date: 2001/05/11 14:35:00 EDT
95    Tag: blume-20010511-ml-nlffi
96    Description:
97    
98    I finally took the plunge and added my new FFI code to the main
99    repository.  For x86-linux it is now ready for prime-time.
100    
101    There are two new subdirectories of "src":
102    
103      - ml-nlffi-lib:
104           The utility library for programs using the FFI interface.
105           Here is the implementation of $/c.cm and its associated low-level
106           partners $/c-int.cm and $/memory.cm.
107      - ml-nlffigen:
108           A stand-alone program for generating ML glue code from C source
109           code.
110    
111    Building ml-nlffigen requires $/ckit-lib.cm.
112    
113    The config/install.sh script has been updates to do the Right Thing
114    (hopefully).
115    
116    Notice that the source tree for the C-Kit will not be put under "src"
117    but directly under the installation root directory.  (This is the
118    structure that currently exists on the CVS server when you check out
119    module "sml".)  Fortunately, config/install.sh knows about this oddity.
120    
121    Bugs: No documentation yet.
122    
123    ----------------------------------------------------------------------
124    Name: Matthias Blume
125    Date: 2001/05/09 16:35:00 EDT
126    Tag: blume-20010509-cpscontract
127    Description:
128    
129    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
130    wrapper/unwrapper elimination did not decrement usage counts and some
131    dead variables got overlooked by the dead-up logic.)
132    
133    ----------------------------------------------------------------------
134    Name: Lal George
135    Date: 2001/05/08  17:26:09 EDT
136    Tag: george-20010508-omit-frameptr
137    Description:
138    
139    Changes to implement the omit-frame-pointer optimization to support
140    raw C calls. For now, there is only support on the Intel x86, but
141    other architectures will follow as more experience is gained with this.
142    
143    
144    ----------------------------------------------------------------------
145    Name: Matthias Blume
146    Date: 2001/05/07 14:40:00 EDT
147    Tag: blume-20010507-proxies
148    Description:
149    
150    I made into "proxy libraries" all libraries that qualify for such a
151    change.  (A qualifying library is a library that has another library or
152    groups as its sole member and repeats that member's export list
153    verbatim.  A proxy library avoids this repetition by omitting its export
154    list, effectively inheriting the list that its (only) member exports.
155    See the CM manual for more explanation.)
156    The main effect is that explicit export lists for these libraries
157    do not have to be kepts in sync, making maintenance a bit easier.
158    
159    I also added copyright notices to many .cm-files.
160    
161    Last but not least, I made a new set of bootfiles.
162    
163    ----------------------------------------------------------------------
164    Name: Matthias Blume
165    Date: 2001/05/04 17:00:00 EDT
166    Tag: blume-20010504-cm-lsplit
167    Description:
168    
169    0. John merged pending changes to $/smlnj-lib.cm
170    
171    1. Allen's previous change accidentally backed out of one of Lal's
172       earlier changes.  I undid this mistake (re-introducing Lal's change).
173    
174    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
175       within the compiler where applicable.  There is some code simplification
176       because of that.
177    
178    3. The "split" phase (in FLINT) is now part of the default list of phases.
179       Compiler.Control.LambdaSplitting.* can be used to globally control the
180       lambda-splitting (cross-module-inlining) engine.  In addition to that,
181       it can now also be controlled on a per-source basis: CM has been taught
182       a new tool parameter applicable to ML source files.
183    
184       - To turn lambda-splitting off completely:
185            local open Compiler.Control.LambdaSplitting in
186                val _ = set Off
187            end
188       - To make "no lambda-splitting" the global default (but allow per-source
189         overriding); this is the initial setting:
190            local open Compiler.Control.LambdaSplitting in
191                val _ = set (Default NONE)
192            end
193       - To make "lambda-splitting with aggressiveness a" the global default
194         (and allow per-source overriding):
195            local open Compiler.Control.LambdaSplitting in
196                val _ = set (Default (SOME a))
197            end
198    
199       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
200         write (in the respective .cm-file):
201            a.sml (lambdasplitting:off)
202       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
203            a.sml (lambdasplitting:on)
204       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
205         <a> is a decimal non-negative integer):
206            a.sml (lambdasplitting:<a>)
207       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
208            a.sml (lambdasplitting:infinity)
209       - To use the global default for a.sml:
210            a.sml (lambdasplitting:default)
211         or simply
212            a.sml
213    
214    ----------------------------------------------------------------------
215    Name: Allen Leung
216    Date: 2001/05/04 01:57:00 EDT
217    Tag: leunga-20010504-sync
218    Description:
219    
220      MLRISC features.
221    
222      1. Fix to CMPXCHG instructions.
223      2. Changed RA interface to allow annotations in callbacks.
224      3. Added a new method to the stream interface to allow annotations updates.
225    
226    ----------------------------------------------------------------------
227    Name: Matthias Blume
228    Date: 2001/05/01 11:45:00 EDT
229    Tag: blume-20010501-pcedittmp
230    Description:
231    
232    Changed install.sh to use the current working directory instead of
233    /usr/tmp for a temporary file (pcedittmp).  The previous choice
234    of /usr/tmp caused trouble with MacOS X because of file premission
235    problems.
236    
237    ----------------------------------------------------------------------
238    Name: Matthias Blume
239    Date: 2001/04/20 11:10:00 EDT
240    Tag: blume-20010420-inMLflag
241    Description:
242    
243     - added vp_limitPtrMask to vproc-state.h
244       (for use by the raw-C-calls mechanism to implement proper interrupt
245        handling)
246     - made the ML compiler aware of various data-structure offsets so it
247       can generate code for accessing the vp_inML flag and vp_limitPtrMask
248     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
249       raw C-calls
250    
251    ----------------------------------------------------------------------
252    Name: Lal George
253    Date: 2001/04/20 09:15:28 EDT
254    Tag: george-20010420-macosX
255    Description:
256    
257     - Changes to port to Mac OS X; Darwin.
258    
259     - In the process I found that sqrt was broken on the PPC, because the
260       fsqrt instruction is not implemented.
261    
262    ----------------------------------------------------------------------
263    Name: Matthias Blume
264    Date: 2001/04/18 12:45:00 EDT
265    Tag: blume-20010418-ccalls
266    Description:
267    
268     - fixed two off-by-4 errors in the x86-specific c-calls implementation
269       (this bug prevented structure arguments containing pointers from being
270        passed correctly)
271     - changed the raw-C-call code in mlriscGen.sml in such a way that
272       structure arguments are represented as a pointer to the beginning
273       of the structure (instead of having a series of synthesized arguments,
274       one for each structure member)
275    
276     - made makeml script's verbosity level configurable via environment
277       variable (MAKEML_VERBOSITY)
278    
279     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
280       in rawmem-x86.sml; we are now using the real thing
281    
282    ----------------------------------------------------------------------
283    Name: Matthias Blume
284    Date: 2001/03/22 16:25:00 EST
285    Tag: blume-20010322-bootfiles
286    Description:
287    
288    Created a new set of bootfiles (for your automatic installation convenience).
289    
290    ----------------------------------------------------------------------
291    Name: Matthias Blume
292    Date: 2001/03/22 15:10:00 EST
293    Tag: blume-20010322-rawmem-parcm
294    Description:
295    
296    1. All "raw memory access" primitives for the new FFI are implemented now
297       (at least on the x86).
298    2. Some further cleanup of CM's parallel make mechanism.
299    
300    ----------------------------------------------------------------------
301    Name: Matthias Blume
302    Date: 2001/03/19 17:53:00 EST
303    Tag: blume-20010319-parallel
304    Description:
305    
306    Parallel make (using compile servers) now works again.
307    
308    To this end, CM.stabilize and CMB.make have been modified to work in
309    two passes when compile servers are attached:
310       1. Compile everything, do not perform stabilization; this pass
311          uses compile servers
312       2. Stabilize everything; this pass does not use compile servers
313    If there are no compile servers, the two passes are combined into one
314    (as before).  Splitting the passes increases the inherent parallelism
315    in the dependency graph because the entire graph including all
316    libraries is available at the same time.  This, in turn, improves
317    server utilization.  The downside is that the master process will
318    have to do some extra work after compilation is done (because for
319    technical reasons it must re-read all the binfiles during stabilization).
320    
321    ----------------------------------------------------------------------
322    Name: Matthias Blume
323    Date: 2001/03/16 12:22:00 EST
324    Tag: blume-20010316-bootfiles
325    Description:
326    
327    Created a new set of bootfiles (for your automatic installation convenience).
328    
329    ----------------------------------------------------------------------
330    Name: Matthias Blume
331    Date: 2001/03/16 11:00:00 EST
332    Tag: blume-20010316-MLTREE-fixup
333    Description:
334    
335    This is a minor fixup for an (untagged) earlier commit by Allen.
336    (A file was missing).
337    
338    ----------------------------------------------------------------------
339    Name: Allen Leung
340    Date: Mon Mar  5 18:54:57 EST 2001
341    Tag: leunga-20010305-cut-support
342    
343    1. New support for alternative control-flow in MLTREE.
344       Currently we support
345    
346          FLOW_TO(CALL ...., [k1,...,kn])
347    
348       This is needed for 'cuts to' in C-- and try/handle-like constructs
349       in Moby
350    
351       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
352    
353    2. Register Allocator
354    
355       Changes in interface [from Fermin, John]
356    
357    3. Alpha 8-bit SLL support [Fermin]
358    
359    4. All architectures
360    
361       A new module (ClusterExpandCopies) for expanding parallel copies.
362    
363    ----------------------------------------------------------------------
364    Name: Allen Leung
365    Date: 2001/02/27 23:07:00 EST
366    Tag: leunga-20010227-minor-stuff
367    
368    1. Alpha bug fix for CMOVNE
369    2. Handle mltree COND(..,FCMP ...,...)
370    3. Bug fix in simplifier
371    
372    ----------------------------------------------------------------------
373    Name: Matthias Blume
374    Date: 2001/01/30 17:50:00 EST
375    Tag: blume-20010130-sync
376    Description:
377    
378    This is just a minor update to sync my devel branch with the main brach.
379    The only visible change is the addition of some README files.
380    
381    ----------------------------------------------------------------------
382    Name: Matthias Blume
383    Date: 2001/01/12 23:30:00 JST
384    Tag: blume-20010112-bootfiles
385    Description:
386    
387    Made a new set of bootfiles that goes with the current state of the
388    repository.
389    
390    ----------------------------------------------------------------------
391    Name: Matthias Blume
392    Date: 2001/01/12 21:20:00 JST
393    Tag: blume-20010112-sync
394    Description:
395    
396    I am just flushing out some minor changes that had accumulated in
397    my private branch in order to sync with the main tree.  (This is
398    mainly because I had CVS trouble when trying to merge _into_ my
399    private branch.)
400    
401    Most people should be completely unaffected by this.
402    
403    ----------------------------------------------------------------------
404    Name: Allen Leung
405    Date: Thu Jan 11 21:03:00 EST 2001
406    Tag: leunga-20010111-labexp=mltree
407    Description:
408    
409    1.  Removed the type LabelExp and replace it by MLTree.
410    2.  Rewritten mltree-simplify with the pattern matcher tool.
411    3.  There were some bugs in alpha code generator which would break
412        64-bit code generation.
413    4.  Redo the tools to generate code with the
414    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
415        are now generated by perl scripts.
416    
417    ----------------------------------------------------------------------
418    Name: Matthias Blume
419    Date: 2001/01/10 21:55:00 JST
420    Tag: blume-20010110-rcc
421    Description:
422    
423    The RCC stuff now seems to work (but only on the x86).
424    This required hacking of the c-calls interface (and -implementation) in
425    MLRISC.
426    
427    Normal compiler users should be unaffected.
428    
429    ----------------------------------------------------------------------
430    Name: Matthias Blume
431    Date: 2001/01/09 01:20:00 JST
432    Tag: blume-20010109-rcc
433    Description:
434    
435    This is a fairly big patch, flushing out a large number of pending
436    changes that I made to my development copy over the last couple of days.
437    
438    Of practical relevance at this moment is a workaround for a pickling
439    bug that Allen ran into the other day.  The cause of the bug itself is
440    still unknown and it might be hard to fix it properly, but the
441    workaround has some merits of its own (namely somewhat reducing pickling
442    overhead for certain libraries).  Therefore, I think this solution should
443    be satisfactory at this time.
444    
445    The rest of the changes (i.e., the vast majority) has to do with my
446    ongoing efforts of providing direct support for C function calls from
447    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
448    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
449    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
450    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
451    handle RCC.
452    
453    The last part (the changes to mlriscGen.sml) are still known to be
454    wrong on the x86 and not implemented on all other architectures.  But
455    the infrastructure is in place. I had to change a few functor
456    signatures in the backend to be able to route the CCalls interface
457    from MLRISC there, and I had to specialize the mltree type (on the
458    x86) to include the necessary extensions. (The extensions themselves
459    were already there and redy to go in MLRISC/x86).
460    
461    Everything should be very happy as soon as someone helps me with
462    mlriscGen.sml...
463    
464    In any case, nothing of this should matter to anyone as long as the
465    new primop is not being used (which is going to be the case unless you
466    find it where I hid it :). The rest of the compiler is completely
467    unaffected.
468    
469    ----------------------------------------------------------------------
470    Name: Matthias Blume
471    Date: 2001/01/05 00:30:00 JST
472    Tag: blume-20010105-primops
473    Description:
474    
475    Added some experimental support for work that I am doing right now.
476    These changes mostly concern added primops, but there is also a new
477    experimental C library in the runtime system (but currently not enabled
478    anywhere except on Linux/X86).
479    
480    In the course of adding primops (and playing with them), I discovered that
481    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
482    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
483    To recover, I made type information in INL_PRIM mandatory and changed
484    prim.sml as well as built-in.sml accordingly.  The InLine structure now
485    has complete, correct type information (i.e., no bottom types).
486    
487    Since all these changes mean that we need new binfiles, I also bumped the
488    version number to 110.32.1.
489    
490    ----------------------------------------------------------------------
491    Name: Matthias Blume
492    Date: 2000/12/30 22:10:00 JST
493    Tag: blume-20001230-various
494    Description:
495    
496    Added proxy libraries for MLRISC and let MLRISC libraries refer
497    to each other using path anchors.  (See CM manual for explanation.)
498    
499    Updated CM documentation.
500    
501    Fixed some bugs in CM.
502    
503    Implemented "proxy" libraries (= syntactic sugar for CM).
504    
505    Added "-quiet" option to makeml and changed runtime system accordingly.
506    
507    Added cleanup handler for exportML to reset timers and compiler stats.
508    
509    ----------------------------------------------------------------------
510    Name: Lal George
511    Date: 2000/12/22 22:22:58 EST 2000
512    Tag: Release_110_32
513    Description:
514    
515            Infinite precision used throughout MLRISC.
516            see MLRISC/mltree/machine-int.sig
517    
518    ----------------------------------------------------------------------
519    Name: Matthias Blume
520    Date: 2000/12/22 23:16:00 JST
521    Tag: blume-20001222-warn
522    Description:
523    
524    Corrected wording and formatting of some CM warning message which I
525    broke in my previous patch.
526    
527    ----------------------------------------------------------------------
528    Name: Matthias Blume
529    Date: 2000/12/22 21:20:00 JST
530    Tag: blume-20001222-anchorenv
531    Description:
532    
533    Fixed CM's handling of anchor environments in connection with CMB.make.
534    
535    ----------------------------------------------------------------------
536    Name: Matthias Blume
537    Date: 2000/12/22 13:15:00 JST
538    Tag: blume-20001222-cleanup
539    Description:
540    
541    Removed src/cm/ffi which does not (and did not) belong here.
542    
543    ----------------------------------------------------------------------
544    Name: Matthias Blume
545    Date: 2000/12/21 23:55:00 JST
546    Tag: blume-20001221-exn
547    Description:
548    
549    Probably most important: CM no longer silently swallows all exceptions
550    in the compiler.
551    Plus: some other minor CM changes.  For example, CM now reports some
552    sizes for generated binfiles (code, data, envpickle, lambdapickle).
553    
554    ----------------------------------------------------------------------
555    Name: Matthias Blume
556    Date: 2000/12/15 00:01:05 JST
557    Tag: blume-20001215-dirtool
558    Description:
559    
560    - "dir" tool added.
561    - improvements and cleanup to Tools structure
562    - documentation updates
563    
564    ----------------------------------------------------------------------
565    Name: Allen Leung
566    Date: Thu Dec 14 03:45:24 EST 2000
567    Description:
568    Tag:  leunga-20001214-int-inf
569    Description:
570    
571       In IntInf, added these standard functions, which are missing from our
572    implementation:
573    
574        andb : int * int -> int
575        xorb : int * int -> int
576        orb  : int * int -> int
577        notb : int -> int
578         <<   : int * word -> int
579        ~>>  : int * word -> int
580    
581       Not tested, I hope they are correct.
582    
583    ----------------------------------------------------------------------
584    Name: Allen Leung
585    Date: Fri Dec  8 19:23:26 EST 2000
586    Description:
587    Tag:  leunga-20001208-nowhere
588    Description:
589    
590      Slight improvements to the 'nowhere' tool to handle OR-patterns,
591    to generate better error messages etc.  Plus a brief manual.
592    
593    ----------------------------------------------------------------------
594    Name: Lal George
595    Date: 2000/12/08 09:54:02 EST 2000
596    Tag: Release_110_31
597    Description:
598    
599    - Version 110.31
600    ----------------------------------------------------------------------
601    Name: Allen Leung
602    Date: Thu Dec  7 22:01:04 EST 2000
603    Tag:  leunga-20001207-cell-monster-hack
604    Description:
605    
606    Major MLRISC internal changes.  Affect all clients.
607    Summary:
608    
609    1.  Type CELLS.cell = int is now replaced by a datatype.
610        As a result, the old regmap is now gone.  Almost all interfaces
611        in MLRISC change as a consequence.
612    
613    2.  A new brand version of machine description tool (v3.0) that generates
614        modules expecting the new interface.  The old version is removed.
615    
616    3.  The RA interface has been further abstracted into two new functors.
617        RISC_RA and X86RA.  These functors have much simpler interfaces.
618        [See also directory MLRISC/demo.]
619    
620    4.  Some other new source->source code generation tools are available:
621    
622        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
623        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
624           I use this tool to generate the peephole optimizers---with the new
625           cell type changes, peephole rules are becoming difficult to write
626           without conditional pattern matching.
627    
628    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
629        cover the entire MLRISC source tree so many things broke.
630    
631    6.  CM files have been moved to the subdirectory MLRISC/cm.
632        They are moved because there are a lot of them and they clutter up the
633        root dir.
634    
635    7.  More detailed documentation to come...
636    
637        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
638        a makeml -rebuild first.  This is because of other other
639        changes that Matthias has made (see below).
640    
641    
642    ----------------------------------------------------------------------
643    Name: Matthias Blume
644    Date: 2000/11/30 23:12:00 JST
645    Tag: blume-20001130-filereorg
646    Description:
647    
648    Some manual updates and some file reorganizations in CM.
649    
650    ----------------------------------------------------------------------
651    Name: Matthias Blume
652    Date: 2000/11/24 17:45:00 JST
653    Tag: blume-20001124-link
654    Description:
655    
656    Drastically improved link traversal code for the case that the dynamic
657    value was already loaded at bootstrap time.  As a result, CM and CMB
658    now both load blazingly fast -- even on a very slow machine.  Also,
659    memory consumption has been further reduced by this.
660    
661    Warning: The format of the PIDMAP file has changed.  THerefore, to
662    bootstrap you have to do this:
663    
664    1. Run CMB.make
665    2. Make a symbolic link for the boot directory:
666         ln -s sml.boot.ARCH-OS xxx
667    3. "Rebuild" the boot directory:
668         ./makeml -boot xxx -rebuild sml ; rm xxx
669    4. Boot normally:
670          ./makeml
671    
672    ----------------------------------------------------------------------
673    Name: Matthias Blume
674    Date: 2000/11/21 21:20:00 JST
675    Tag: blume-20001121-tools
676    Description:
677    
678    Continued hacking on autoloading problem -- with success this time.
679    Also changed tool-plugin mechanism.  See new CM manual.
680    
681    ----------------------------------------------------------------------
682    Name: Matthias Blume
683    Date: 2000/11/19 14:30:00 JST
684    Tag:  blume-20001119-autoload
685    Description:
686    
687    Some hacking to make autoloading faster.  Success for CMB, no success
688    so far for CM.  There is a reduced structure CM' that autoloads faster.
689    (This is a temporary, non-documented hack to be eliminated again when
690    the general problem is solved.)
691    
692    ----------------------------------------------------------------------
693    Name: Matthias Blume
694    Date: 2000/11/17 14:10:00 JST
695    Tag: blume-20001117-pickle-lib
696    Description:
697    
698    1. Eliminated comp-lib.cm
699    2. Made pickle-lib.cm
700    3. Eliminated all uses of intset.sml (from comp-lib.cm)
701    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
702       equivalent constructs from smlnj-lib.cm (INtHashTable).
703    5. Point 4. also goes for those uses of intmap.* in MLRISC.
704       Duplicated intmap modules thrown out.
705    6. Hunted down all duplicated SCC code and replaced it with
706       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
707    7. Rewrote Feedback module.
708    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
709       should be thrown out and equivalent modules from smlnj-lib.cm
710       should be used (IntRedBlackSet, IntListSet, ...).
711    
712    Confirmed that compiler compiles to fixpoint.
713    
714    ----------------------------------------------------------------------
715    Name: Allen Leung
716    Date: 2000/11/10 18:00:00
717    Tag: leunga-20001110-new-x86-fp
718    
719    A new x86 floating point code generator has been added.
720    By default this is turned off.  To turn this on, do:
721    
722        CM.autoload "$smlnj/compiler.cm";
723        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
724    
725    Changes:
726    
727    1.  Changed FTAN to FPTAN so that the assembly output is correct.
728    2.  Changed the extension callback for FTANGENT to generate:
729    
730              fptan
731              fstp  %st(0)
732        instead of
733              fptan
734              fstpl ftempmem
735    
736    3.  Numerous assembly fixes for x86.
737    
738    5.  Cleaned up the machine code output module x86/x86MC.sml and added
739        support for a whole bunch of instructions and addressing modes:
740    
741          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
742          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
743          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
744          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
745          fxch %st(n)
746          fld %st(n)
747          fst %st(n)
748          fst mem
749          fstp %st(n)
750          fucom %st(n)
751          fucomp %st(n)
752    
753        All these are now generated when the fast fp mode is turned on.
754    
755    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
756    
757    ----------------------------------------------------------------------
758    Name: Matthias Blume
759    Date: 2000/11/09 11:20:00 JST
760    Tag: blume-20001109-scc
761    Description:
762    
763    Eliminated some code duplication:
764    
765    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
766       (Otherwise the functor is useless.)
767    2. Used GraphSCCFn where SCCUtilFun was used previously.
768    3. Got rid of SCCUtilFun (in comp-lib.cm).
769    
770    ----------------------------------------------------------------------
771    Name: Lal George
772    Date: 2000/11/06 09:02:21 EST 2000
773    Tag: Release_110_30
774    Description:
775    
776    - Version 110.30
777    ----------------------------------------------------------------------
778    Name: Matthias Blume
779    Date: 2000/11/04 14:45:00
780    Tag: blume-20001104-mlbuild
781    Description:
782    
783    - Made ml-build faster on startup.
784    - Documentation fixes.
785    
786    ----------------------------------------------------------------------
787    Name: Matthias Blume
788    Date: 2000/11/02 17:00:00 JST
789    Tag: blume-20001102-condcomp
790    Description:
791    
792    - Small tweaks to pickler -- new BOOTFILES!
793    - Version bumped to 110.29.2.
794    - Added conditional compilation facility to init.cmi (see comment there).
795    ----------------------------------------------------------------------
796    Name: Allen Leung
797    Date: 2000/10/23 19:31:00
798    Tag: leunga-20001023-demo-ra
799    
800    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
801    2. Test programs for the graph library updated
802    3. Some new MLRISC demo programs added
803    
804    ----------------------------------------------------------------------
805    Name: Matthias Blume
806    Date: 2000/08/31 22:15:00 JST
807    Tag: blume-20001017-errmsg
808    Description:
809    
810    More error message grief: Where there used to be no messages, there
811    now were some that had bogus error regions.  Fixed.
812    
813    ----------------------------------------------------------------------
814    Name: Matthias Blume
815    Date: 2000/08/31 17:30:00 JST
816    Tag: blume-20001017-v110p29p1
817    Description:
818    
819    I made a version 110.29.1 with new bootfiles.
820    
821    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
822              CM documentation changes and a small bugfix in CM's error reporting.
823    
824    ----------------------------------------------------------------------
825    Name: Lal George
826    Date: 2000/09/27 14:42:35 EDT
827    Tag: george-20000927-nodestatus
828    Description:
829    
830    Changed the type of the nodestatus, so that:
831    
832            SPILLED(~1)             is now SPILLED
833            SPILLED(m) where m>=0   is now MEMREG(m)
834            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
835    
836    ----------------------------------------------------------------------
837    Name: Matthias Blume
838    Date: 2000/09/07 14:45:00 JST
839    Tag: blume-20000907-cmerrmsg
840    Description:
841    
842    Small tweak to CM to avoid getting ML syntax error messages twice.
843    
844    ----------------------------------------------------------------------
845    Name: Matthias Blume
846    Date: 2000/08/31 18:00:00 JST
847    Tag: blume-20000831-cvsbootfiles
848    Description:
849    
850    New URL for boot files (because the 110.29 files on the BL server do
851    now work correctly with my updated install scripts for yacc and lex).
852    
853    ----------------------------------------------------------------------
854    Name: Matthias Blume
855    Date: 2000/08/08 12:33:00 JST
856    Tag: blume-20000808-manual
857    Description:
858    
859    Tiny update to CM manual.
860    
861    ----------------------------------------------------------------------
862    Name: Allen Leung
863    Date: 2000/08/7 19:31:00
864    Tag: leunga-20000807-a-whole-bunch-of-stuff
865    
866      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
867    and Mobdy.
868    
869    1.  x86
870    
871       a.  Fixes to peephole module by John and Dan.
872       b.  Assembly fix to SETcc by Allen.
873       c.  Fix to c-call by John.
874       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
875       e.  Instruction selection optimization to SETcc as suggested by John.
876    
877           For example,
878    
879            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
880    
881           should generate:
882    
883            MOVL a, x
884            SUBL b, x
885            SHRL 31, x
886    
887    2.  IR stuff
888    
889         A bunch of new DJ-graph related algorithms added.  These
890         speed up SSA construction.
891    
892    3.  SSA + Scheduling
893    
894         Added code for SSA and scheduling to the repository
895    
896    ----------------------------------------------------------------------
897    Name: Lal George
898    Date: 2000/07/27 11:53:14 EDT
899    
900    Tag: lal-20000727-linux-ppc
901    Description:
902    
903     Made changes to support Linux PPC.
904     p.s. I have confirmation that the 110.29 boot files work fine.
905    
906    ----------------------------------------------------------------------
907    Name: Matthias Blume
908    Date: 2000/07/27 17:40:00 JST
909    Tag: blume-20000727-scripts
910    Description:
911    
912    !!!! WARNING !!!!
913    You must recompile the runtime system!
914    !!!! WARNING !!!!
915    
916    This is basically another round of script-enhancements:
917    
918    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
919       and undefine CM preprocessor symbols.
920    
921    2. ml-build avoids generating a new heap image if it finds that the
922       existing one is still ok.  (The condition is that no ML file had to
923       be recompiled and all ML files are found to be older that the heap
924       file.)
925    
926       To make this work smoothly, I also hacked the runtime system as
927       well as SMLofNJ.SysInfo to get access to the heap image suffix
928       (.sparc-solaris, ...) that is currently being used.
929    
930       Moreover, the signature of CM.mk_standalone has changed.  See the
931       CM manual.
932    
933    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
934       CM manual for details.)
935    
936    4. More CM manual updates:
937        - all of the above has been documented.
938        - there is now a section describing the (CM-related) command line
939          arguments that are accepted by the "sml" command
940    
941    ----------------------------------------------------------------------
942    Name: Matthias Blume
943    Date: 2000/07/25 16:20:00 JST
944    Tag: blume-20000725-makedepend
945    Description:
946    
947    Added a script called ml-makedepend.  This can be used in makefiles
948    for Unix' make in a way very similar to the "makedepend" command for
949    C.
950    
951    The script internally uses function CM.sources.
952    
953    Synopsis:
954    
955        ml-makedepend [-f makefile] cmfile targetname
956    
957    The default for the makefile is "makefile" (or "Makefile" should
958    "makefile" not exist).
959    
960    ml-makedepend adds a cmfile/targetname-specific section to this
961    makefile (after removing the previous version of this section).  The
962    section contains a single dependency specification with targetname on
963    the LHS (targetname is an arbitrary name), and a list of files derived
964    from the cmfile on the RHS.  Some of the files on the RHS are
965    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
966    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
967    path names.  The makefile writer is responsible for making sure that
968    these variables have correct at the time "make" is invoked.
969    
970    ----------------------------------------------------------------------
971    Name: Matthias Blume
972    Date: 2000/07/22 23:30:00 JST
973    Tag: blume-20000722-urlupdate
974    Description:
975    
976    Changed BOOT and config/srcarchiveurl to point to BL server:
977    
978        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
979    
980    ----------------------------------------------------------------------
981    Name: Matthias Blume
982    Date: 2000/07/18 18:00:00 JST
983    Tag: blume-20000718-Version_110_29
984    Description:
985    
986    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
987    
988    2. Updated config/version to 110.29
989    
990    3. Updated config/srcarchiveurl
991    
992    3. New boot files!
993       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
994    
995    ----------------------------------------------------------------------
996    Name: Matthias Blume
997    Date: 2000/07/11 13:58:00 JST
998    Tag: blume-20000711-doctypo
999    Description:
1000    
1001    Fixed a few typos in CM manual.
1002    
1003    ----------------------------------------------------------------------
1004    Name: Allen Leung
1005    Date: 2000/06/15 00:38:00
1006    Tag: leunga-20000704-sparc-x86
1007    
1008    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
1009    2. fix to x86 RET bug [found by Dan Grossman]
1010    3. sparc assembly bug fix for ticc instructions [found by Fermin]
1011    
1012       Affects c-- and moby only
1013    
1014    ----------------------------------------------------------------------
1015    Name: Matthias Blume
1016    Date: 2000/07/04 15:26:00
1017    Tag: blume-20000704-trigger
1018    Description:
1019    
1020    1. Improvements to CM manual.
1021    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
1022       of getting a back-trace.  The function, when called, raises an
1023       internal exception which explicitly carries the full back-trace history,
1024       so it is unaffected by any intervening handle-raise pairs ("trivial"
1025       or not).  The interactive loop will print that history once it arrives
1026       at top level.
1027       Short of having all exceptions implicitly carry the full history, the
1028       recommended way of using this facility is:
1029         - compile your program with instrumentation "on"
1030         - run it, when it raises an exception, look at the history
1031         - if the history is "cut off" because of some handler, go and modify
1032           your program so that it explicitly calls BTrace.trigger
1033         - recompile (still instrumented), and rerun; look at the full history
1034    
1035    ----------------------------------------------------------------------
1036    Name: Matthias Blume
1037    Date: 2000/07/03 15:36:00 JST
1038    Tag: blume-20000702-manual
1039    Description:
1040    
1041    Small corrections and updates to CM manual.
1042    
1043    ----------------------------------------------------------------------
1044    Name: Matthias Blume
1045    Date: 2000/06/29 16:04:00 JST
1046    Tag: blume-20000629-yacctool
1047    Description:
1048    
1049    Changes:
1050    
1051    1. Class "mlyacc" now takes separate arguments to pass options to
1052       generated .sml- and .sig-files independently.
1053    2. Corresponding CM manual updates.
1054    3. BTrace module now also reports call sites.  (However, for loop clusters
1055       it only shows from where the cluster was entered.)  There are associated
1056       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
1057    
1058    ----------------------------------------------------------------------
1059    Name: Matthias Blume
1060    Date: 2000/06/27 16:51:00 JST
1061    Tag: blume-20000627-noweb
1062    Description:
1063    
1064    Changes:
1065    
1066     1. Implemented "subdir" and "witness" options for noweb tool.
1067        This caused some slight internal changes in CM's tool implementation.
1068     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
1069        some remaining issues from earlier path anchor changes.
1070     3. Updated CM manual accordingly.
1071    
1072     4. Changed implementation of back-tracing so that I now consider it
1073        ready for prime-time.
1074    
1075        In particular, you don't have to explicitly trigger the back-trace
1076        anymore.  Instead, if you are running BTrace-instrumented code and
1077        there is an uncaught exception (regardless of whether or not it was
1078        raised in instrumented code), the top-level evalloop will print
1079        the back-trace.
1080    
1081        Features:
1082    
1083          - Instrumented and uninstrumented code work together seemlessly.
1084            (Of course, uninstrumented code is never mentioned in actual
1085             back-traces.)
1086    
1087          - Asymptotic time- and space-complexity of instrumented code is
1088            equal to that of uninstrumented code.  (This means that
1089            tail-recursion is preserved by the instrumentation phase.)
1090    
1091          - Modules whose code has been instrumented in different sessions
1092            work together without problem.
1093    
1094          - There is no penalty whatsoever on uninstrumented code.
1095    
1096          - There is no penalty on "raise" expressions, even in
1097            instrumented code.
1098    
1099        A potential bug (or perhaps it is a feature, too):
1100    
1101          A back-trace reaches no further than the outermost instrumented
1102          non-trivial "raise".  Here, a "trivial" raise is one that is the
1103          sole RHS of a "handle" rule.  Thus, back-traces reach trough
1104    
1105               <exp> handle e => raise e
1106    
1107          and even
1108    
1109               <exp> handle Foo => raise Bar
1110    
1111          and, of course, through
1112    
1113               <exp> handle Foo => ...
1114    
1115         if the exception was not Foo.
1116    
1117         Back-traces always reach right through any un-instrumented code
1118         including any of its "handle" expressions, trivial or not.
1119    
1120       To try this out, do the following:
1121    
1122         - Erase all existing binfiles for your program.
1123           (You may keep binfiles for those modules where you think you
1124            definitely don't need back-tracing.)
1125         - Turn on back-trace instrumentation:
1126              SMLofNJ.Internals.BTrace.mode (SOME true);
1127         - Recompile your program.  (I.e., run "CM.make" or "use".)
1128         - You may now turn instrumentation off again (if you want):
1129              SMLofNJ.Internals.BTrace.mode (SOME false);
1130         - Run your program as usual.  If it raises an exception that
1131           reaches the interactive toplevel, then a back-trace will
1132           automatically be printed.  After that, the toplevel loop
1133           will print the exception history as usual.
1134    
1135    ----------------------------------------------------------------------
1136    Name: Matthias Blume
1137    Date: 2000/06/26 09:56:46 JST
1138    Tag: blume-20000626-setup
1139    Description:
1140    
1141    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
1142          ML code before and after compiling a file (e.g., to set compiler
1143          flags)
1144    
1145    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
1146              - associated changes to btrace.sml (BTrace instrumentation pass)
1147              - cleaner implementation of btimp.sml (BTrace tracing and report
1148                module)
1149    
1150    CM manual: * new path encoding documented
1151               * description of setup-parameter to "sml" added
1152    
1153    The biggest user-visible change to back-tracing is that it is no
1154    longer necessary to compile all traced modules within the same
1155    session.  (This was a real limitation.)
1156    
1157    ----------------------------------------------------------------------
1158    Name: Matthias Blume
1159    Date: 2000/06/24 12:40:00 JST
1160    Tag: blume-20000624-startup
1161    Description:
1162    
1163    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
1164    bit too often -- to put it mildly. :)
1165    
1166    ----------------------------------------------------------------------
1167    Name: Matthias Blume
1168    Date: 2000/06/23 18:20:00 JST
1169    Tag: blume-20000623-btrace
1170    Description:
1171    
1172    This updates adds a backtrace facility to aid programmers in debugging
1173    their programs.  This involves the following changes:
1174    
1175    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
1176       keeping track of the current call stack.  When programs are compiled
1177       in a special mode, the compiler will insert calls to these hooks
1178       into the user program.
1179       "Hook" means that it is possible for different implementations of
1180       back-tracing to register themselves (at different times).
1181    
1182    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
1183       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
1184       It can be turned on using this call:
1185         SMLofNJ.Internals.BTrace.mode (SOME true);
1186       Turning it off again:
1187         SMLofNJ.Internals.BTrace.mode (SOME false);
1188       Querying the current status:
1189         SMLofNJ.Internals.BTrace.mode NONE;
1190       Annotated programs are about twice as big as normal ones, and they
1191       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
1192       where all hooks do nothing).  The slowdown with a plugin that is
1193       actually useful (such as the one supplied by default) is even greater,
1194       but in the case of the default plugin it is still only an constant
1195       factor (amortized).
1196    
1197    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
1198       with a sub-structure BTrace for controlling back-tracing.  In particular,
1199       the above-mentioned function "mode" controls whether the annotation
1200       phase is invoked by the compiler.  Another important function is
1201       "trigger": when called it aborts the current execution and causes
1202       the top-level loop to print a full back-trace.
1203    
1204    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
1205       for back-tracing.  It keeps track of the dynamic call stack and in
1206       addition to that it keeps a partial history at each "level" of that
1207       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
1208       d and b (at separate times, dynamically), then the report will show:
1209    
1210       GOTO   d
1211             /c
1212       GOTO  \b
1213       CALL   a
1214    
1215       This shows that there was an initial non-tail call of a, then a
1216       tail-call to b or c, looping behavior in a cluster of functions that
1217       consist of b and c, and then a goto from that cluster (i.e., either from
1218       b or from c) to d.
1219    
1220       Note that (depending on the user program) the amount of information
1221       that the back-trace module has to keep track of at each level is bounded
1222       by a constant.  Thus, the whole implementation has the same asymptotical
1223       complexity as the original program (both in space and in time).
1224    
1225    5. compiler/TopLevel/interact/evalloop.sml has been modified to
1226       handle the special exception SMLofNJ.Internals.BTrace.BTrace
1227       which is raised by the "trigger" function mentioned above.
1228    
1229    Notes on usage:
1230    
1231    - Annotated code works well together with unannotated code:
1232    Unannotated calls simply do not show up at all in the backtrace.
1233    
1234    - It is not a good idea to let modules that were annotated during
1235    different sessions run at the same time.  This is because the compiler
1236    chooses small integers to identify individual functions, and there
1237    will be clashes if different modules were compiled in separate sessions.
1238    (Nothing will crash, and you will even be told about the clashes, but
1239    back-trace information will in general not be useful.)
1240    
1241    - Back-tracing can be confused by callcc and capture.
1242    
1243    - The only way of getting a back-trace right now is to explicitly
1244    invoke the "trigger" function from your user program.  Eventually, we
1245    should make every exception carry back-trace information (if
1246    available).  But since this creates more overhead at "raise"-time
1247    (similar to the current exnHistory overhead), I have not yet
1248    implemented this.  (The implementation will be rather easy.)  With
1249    exceptions carrying back-trace information, this facility will be even
1250    more useful because users don't need to modify their programs...
1251    
1252    - While it is possible to compile the compiler with back-trace
1253    annotations turned on (I did it to get some confidence in
1254    correctness), you must make absolutely sure that core.sml and
1255    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
1256    be compiled with annotation because there is no core access yet, but
1257    if you compile btimp.sml with annotation, then the system will go into
1258    an infinite recursion and crash.)
1259    Since CM currently does not know about BTrace, the only way to turn
1260    annotations on and off for different modules of the compiler is to
1261    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
1262    this is awkward and clumsy.
1263    
1264    Sample sessions:
1265    
1266    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1267    - SMLofNJ.Internals.BTrace.mode (SOME true);
1268    [autoloading]
1269    [autoloading done]
1270    val it = false : bool
1271    - structure X = struct
1272    -     fun main n = let
1273    -         fun a (x, 0) = d x
1274    -           | a (x, n) = b (x, n - 1)
1275    -         and b (x, n) = c (x, n)
1276    -         and c (x, n) = a (x, n)
1277    -         and d x = e (x, 3)
1278    -         and e (x, 0) = f x
1279    -           | e (x, n) = e (x, n - 1)
1280    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
1281    -           | f n = n * g (n - 1)
1282    -         and g n = a (n, 3)
1283    -     in
1284    -         f n
1285    -     end
1286    - end;
1287    structure X : sig val main : int -> int end
1288    - X.main 3;
1289    *** BACK-TRACE ***
1290    GOTO   stdIn:4.2-13.20: X.main[2].f
1291    GOTO-( stdIn:4.2-13.20: X.main[2].e
1292    GOTO   stdIn:4.2-13.20: X.main[2].d
1293         / stdIn:4.2-13.20: X.main[2].a
1294         | stdIn:4.2-13.20: X.main[2].b
1295    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1296    CALL   stdIn:4.2-13.20: X.main[2].g
1297    GOTO   stdIn:4.2-13.20: X.main[2].f
1298    GOTO-( stdIn:4.2-13.20: X.main[2].e
1299    GOTO   stdIn:4.2-13.20: X.main[2].d
1300         / stdIn:4.2-13.20: X.main[2].a
1301         | stdIn:4.2-13.20: X.main[2].b
1302    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1303    CALL   stdIn:4.2-13.20: X.main[2].g
1304    GOTO   stdIn:4.2-13.20: X.main[2].f
1305    GOTO-( stdIn:4.2-13.20: X.main[2].e
1306    GOTO   stdIn:4.2-13.20: X.main[2].d
1307         / stdIn:4.2-13.20: X.main[2].a
1308         | stdIn:4.2-13.20: X.main[2].b
1309    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1310    CALL   stdIn:4.2-13.20: X.main[2].g
1311    GOTO   stdIn:4.2-13.20: X.main[2].f
1312    CALL   stdIn:2.15-17.4: X.main[2]
1313    -
1314    
1315    (Note that because of a FLINt bug the above code currently does not
1316    compile without BTrace turned on.)
1317    
1318    Here is another example, using my modified Tiger compiler:
1319    
1320    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1321    - SMLofNJ.Internals.BTrace.mode (SOME true);
1322    [autoloading]
1323    [autoloading done]
1324    val it = false : bool
1325    - CM.make "sources.cm";
1326    [autoloading]
1327    ...
1328    [autoloading done]
1329    [scanning sources.cm]
1330    [parsing (sources.cm):parse.sml]
1331    [creating directory CM/SKEL ...]
1332    [parsing (sources.cm):tiger.lex.sml]
1333    ...
1334    [wrote CM/sparc-unix/semant.sml]
1335    [compiling (sources.cm):main.sml]
1336    [wrote CM/sparc-unix/main.sml]
1337    [New bindings added.]
1338    val it = true : bool
1339    - Main.compile ("../testcases/merge.tig", "foo.out");
1340    *** BACK-TRACE ***
1341    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
1342    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1343    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1344    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1345    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1346    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1347    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
1348         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
1349    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
1350    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1351    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
1352    CALL   main.sml:1.18-118.4: Main.compile[2]
1353    -
1354    
1355    ----------------------------------------------------------------------
1356    Name: Matthias Blumen
1357    Date: 2000/06/21 18:00:00 JST
1358    Tag: blume-20000621-manual
1359    Description:
1360    
1361    CM manual update: Path environments documented.
1362    
1363    ----------------------------------------------------------------------
1364    Name: Matthias Blume
1365    Date: 2000/06/19 13:40:00
1366    Tag: blume-20000619-manual
1367    Description:
1368    
1369    CM manual and system/README update.  This only covers the fact that
1370    there are no more implicit anchors.  (Path environments and the "bind"
1371    option to "cm" have yet to be documented.)
1372    
1373    ----------------------------------------------------------------------
1374    Name: Matthias Blume
1375    Date: 2000/06/19 11:05:00 JST
1376    Tag: blume-20000619-chdir-bugfix
1377    Description:
1378    
1379    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
1380    
1381    ----------------------------------------------------------------------
1382    Name: Matthias Blume
1383    Date: 2000/06/18 22:00:10 JST
1384    Tag: blume-20000618-implicit-anchors-really-gone
1385    Description:
1386    
1387    I updates the previous HISTORY entry where I forgot to mention that
1388    implicit anchors are no longer with us.
1389    
1390    The current update also gets rid of the (now useless) controller
1391    CM.Control.implicit_anchors.
1392    
1393    ----------------------------------------------------------------------
1394    Name: Matthias Blume
1395    Date: 2000/06/16 17:30:00 JST
1396    Tag: blume-20000616-anchorenv
1397    Description:
1398    
1399    This patch implements the long anticipated (just kidding :) "anchor
1400    environment" mechanism.  In the course of doing this, I also
1401    re-implemented CM's internal "SrcPath" module from scratch.  The new
1402    one should be more robust in certain boundary cases.  In any case, it
1403    is a lot cleaner than its predecessor (IMHO).
1404    
1405    This time, although there is yet another boot file format change, I
1406    kept the unpickler backward-compatible.  As a result, no new bootfiles
1407    are necessary and bootstrapping is straightforward.  (You cannot read
1408    new bootfiles into an old system, but the other way around is no
1409    problem.)
1410    
1411    Visible changes:
1412    
1413    ** 0. Implicit path anchors (without the leading $-symbol) are no
1414    longer recognized at all. This means that such path names are not
1415    illegal either.  For example, the name basis.cm simply refers to a
1416    local file called "basis.cm" (i.e, the name is an ordinary path
1417    relative to .cm-files directory).  Or, to put it differently, only
1418    names that start with $ are anchored paths.
1419    
1420    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
1421    vanished.
1422    
1423    John (Reppy) had critizised this as soon as I originally proposed and
1424    implemented it, but at that time I did not really deeply believe
1425    him. :) Now I came full-circle because I need the $<singlearc> syntax
1426    in another place where it cannot be seen as an abbreviation for
1427    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
1428    seems to mean (i.e., it "expands" into the corresponding anchor
1429    value).
1430    
1431    However, when paths are used as members in CM description files, it
1432    continues to be true that there must be at least another arc after the
1433    anchor.  This is now enforced separately during semantic analysis
1434    (i.e., from a lexical/syntactical point of view, the notation is ok.)
1435    
1436    ** 2. The "cm" class now accepts an option "bind".  The option's value
1437    is a sub-option list of precisely two items -- one labeled "anchor"
1438    and the other one labeled "value".  As you might expect, "anchor" is
1439    used to specify an anchor name to be bound, and "value" specifies what
1440    the anchor is being bound to.
1441    
1442    The value must be a directory name and can be given in either standard
1443    syntax (including the possibility that it is itself an anchored path)
1444    or native syntax.
1445    
1446    Examples:
1447    
1448       foo.cm (bind:(anchor:bar value:$mystuff/bar))
1449       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
1450    
1451    and so on.
1452    
1453    The meaning of this is that the .cm-file will be processed with an
1454    augmented anchor environment where the given anchor(s) is/are bound to
1455    the given values(s).
1456    
1457    The rationale for having this feature is this: Suppose you are trying
1458    to use two different (already stable) libraries a.cm and b.cm (that
1459    you perhaps didn't write yourself).  Further, suppose each of these
1460    two libraries internally uses its own auxiliary library $aux/lib.cm.
1461    Normally you would now have a problem because the anchor "lib" can not
1462    be bound to more than one value globally.  Therefore, the project that
1463    uses both a.cm and b.cm must locally redirect the anchor to some other
1464    place:
1465    
1466       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
1467       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
1468    
1469    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
1470    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
1471    
1472    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
1473    you when you do so at the time of CM.stabilize).  Therefore, you can
1474    also use an anchored path as the value:
1475    
1476      a.cm (bind:(anchor:lib value:$a-lib))
1477      b.cm (bind:(anchor:lib value:$b-lib))
1478    
1479    Now you can globally configure (using the usual CM.Anchor.anchor or
1480    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
1481    itself is always locally bound, setting it globally is no longer
1482    meaningful or necessary (but it does not hurt either).  In fact, "lib"
1483    can still be used as a global anchor for separate purposes.  As a
1484    matter of fact, one can locally define "lib" in terms of a global
1485    "lib":
1486    
1487      a.cm (bind:(anchor:lib value:$lib/a))
1488      b.cm (bind:(anchor:lib value:$lib/b))
1489    
1490    ** 3: The encoding of path names has changed.  This affects the way
1491    path names are shown in CM's progress report and also the internal
1492    protocol encoding used for parallel make.
1493    
1494    The encoding now uses one or more ':'-separated segments.  Each
1495    segments corresponds to a file that has been specified relative to the
1496    file given by its preceding segment.  The first segment is either
1497    relative to the CWD, absolute, or anchored.  Each segment itself is
1498    basically a Unix pathname; all segments but the first are relative.
1499    
1500    Example:
1501    
1502       $foo/bar/baz.cm:a/b/c.sml
1503    
1504    This path denotes the file bar/a/b/c.sml relative to the directory
1505    denoted by anchor "foo".  Notice that the encoding also includes
1506    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
1507    paths are resolved relative to the .cm-files directory, so baz.cm must
1508    be ignored to get the "real" pathname.
1509    
1510    To make this fact more obvious, CM puts the names of such "virtual
1511    arcs" into parentheses when they appear in progress reports. (No
1512    parentheses will appear in the internal protocol encoding.)  Thus,
1513    what you really see is:
1514    
1515      $foo/bar/(baz.cm):a/b/c.sml
1516    
1517    I find this notation to be much more informative than before.
1518    
1519    Another new feature of the encoding is that special characters
1520    including parentheses, colons, (back)slashes, and white space are
1521    written as \ddd (where ddd is the decimal encoding of the character).
1522    
1523    *** The CM manual still needs to be updated.
1524    
1525    ----------------------------------------------------------------------
1526    Name: Allen Leung
1527    Date: 2000/06/15 00:38:00
1528    Tag: leunga-20000615-x86-peephole
1529    
1530    x86 Peephole fix by Fermin.  Affects c-- and moby only.
1531    
1532    ----------------------------------------------------------------------
1533    Name: Matthias Blume
1534    Date: 2000/06/12 11:40:00
1535    Tag: blume-20000612-parmakefix
1536    Description:
1537    
1538    More cleanup after changing the file naming scheme: This time I
1539    repaired the parallel make mechanism for CMB.make which I broke earlier.
1540    
1541    ----------------------------------------------------------------------
1542    Name: Allen Leung
1543    Date: 2000/06/09 01:25:00
1544    Tag: leunga-20000609-various
1545    
1546    None of these things should affect normal SML/NJ operations
1547    
1548    1. Peephole improvements provided by Fermin (c--)
1549    2. New annotation DEFUSE for adding extra dependence (moby)
1550    3. New X86 LOCK instructions (moby)
1551    4. New machine description language for reservation tables (scheduling)
1552    5. Fixes to various optimization/analysis modules (branch chaining, dominator
1553       trees etc.)
1554    6. I've changed the CM files so that they can work with versions
1555       110.0.6, 110.25 and 110.28
1556    
1557    ----------------------------------------------------------------------
1558    Name: Matthias Blume
1559    Date: 2000/06/09 12:40:00
1560    Tag: blume-20000609-log
1561    Description:
1562    
1563    - Removed all(?) remaining RCS Log entries from sources.
1564    
1565    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
1566      anchored paths).
1567    
1568    ----------------------------------------------------------------------
1569    Name: Matthias Blume
1570    Date: 2000/06/07 17:00:00 JST
1571    Tag: blume-20000607-no-implicit-anchors
1572    Description:
1573    
1574    1. This update changes the default setting for
1575    CM.Control.implicit_anchors from true to false.  This means that
1576    implicit anchors are no longer permitted by default.  I also tried to
1577    make sure that nothing else still relies on implicit anchors.
1578    (This is the next step on the schedule towards a CM that does not even
1579    have the notion of implicit anchors anymore.)
1580    
1581    2. More CM manual updates.
1582    
1583    3. I managed to track down and fix the pickling bug I mentioned last
1584    time.  Because of the previously existing workaround, this entails no
1585    immediate practical changes.
1586    
1587    ----------------------------------------------------------------------
1588    Name: Matthias Blume
1589    Date: 2000/06/06 11:15:00 JST
1590    Tag: blume-20000606-lazierpickle
1591    Description:
1592    
1593    !!!! NEW BOOT FILES !!!!
1594    
1595    * The main purpose of this update is to make library pickles lazier in
1596    order to reduce the initial space penalty for autoloading a library.
1597    As a result, it is now possible to have $smlnj/compiler.cm
1598    pre-registered.  This should take care of the many complaints or
1599    inquiries about missing structure Compiler.  This required changes to
1600    CM's internal data structures and small tweaks to some algorithms.
1601    
1602    As a neat additional effect, it is no longer necessary (for the sake
1603    of lean heap image files) to distinguish between a "minimal" CM and a
1604    "full" CM.  Now, there is only one CM (i.e., the "full" version:
1605    $smlnj/cm.cm aka $smlnj/cm/full.cm), and it is always available at the
1606    interactive top level. ($smlnj/cm/minimal.cm is gone.)
1607    
1608    To make the life of compiler-hackers easier, "makeml" now also
1609    pre-registers $smlnj/cmb.cm (aka $smlnj/cmb/current.cm).  In other
1610    words, after you bootstrap a new sml for the first time, you will not
1611    have to autoload $smlnj/cmb.cm again afterwards.  (The first time
1612    around you will still have to do it, though.)
1613    
1614    * A second change consists of major updates to the CM manual.  There
1615    are now several appendices with summary information and also a full
1616    specification of the CM description file syntax.
1617    
1618    * In directory src/system I added the script "allcross".  This script
1619    invokes sml and cross-compiles the compiler for all supported
1620    architectures.  (Useful when providing a new set of boot files.)
1621    
1622    * There seems to be a latent bug in my "lazy pickles" mechanism.  I
1623    added a small tweak to pickle-util.sml to work around this problem,
1624    but it is not a proper fix yet.  I will investigate further.  (The
1625    effect of the bug was an inflation of library pickle size.)
1626    
1627    * Version number increased to 110.28.1 (to avoid compatibility problems).
1628    
1629    ----------------------------------------------------------------------
1630    Name: Allen Leung
1631    Date: 2000/05/25 17:28 EDT
1632    Tag: leunga-20000525-ra
1633    Description:
1634    
1635      Fixed a bug in freezing phase of the register allocator.
1636    
1637    ----------------------------------------------------------------------
1638    Name: Allen Leung
1639    Date: 2000/05/15 22:53 EDT
1640    Tag: leunga-20000515-alpha-x86-ra
1641    Description:
1642    
1643      1. Alpha
1644    
1645          Slight cleanup.  Removed the instruction SGNXL
1646    
1647      2. X86
1648    
1649          Added the following instructions to the instruction set:
1650    
1651            ROLx, RORx,
1652            BTx, BTSx, BTLx, BTRx,
1653            XCHGx, and variants with the LOCK prefix
1654    
1655      3. Register Allocation
1656    
1657          The module ra-rewrite-with-renaming has been improved.
1658    
1659      These have no effect on SML/NJ.
1660    
1661    ----------------------------------------------------------------------
1662    Name: Matthias Blume
1663    Date: 2000/05/15 16:20:00 JST
1664    Tag: blume-20000515-lightrebuild
1665    Description:
1666    
1667    1. I added an alternative to "-rebuild" to "makeml".  The difference is
1668       that prior to calling CMB.make' the CM-variable "LIGHT" will be
1669       defined.  In effect, the command will not build any cross-compiler
1670       backends and therefore finish more quickly.
1671    
1672       The "fixpt" script also takes a "-light" switch to be able to use
1673       this new facility while compiling for a fixpoint.
1674    
1675    2. I replaced all mentions of anchored paths in group owner specifications
1676       with simple relative paths (usually starting with "..").
1677       The rationale is that a library's internal workings should not be
1678       compromised by the lack of some anchor.  (An anchor is necessary
1679       for someone who wants to refer to the library by an anchored path,
1680       but it should not be necessary to build the same library in the first
1681       place.)
1682    
1683    3. I changed the way CM's tool mechanism determines the shell command
1684       string used for things like ml-yacc etc. so that it does not break
1685       when CM.Control.implicit_anchors is turned off.
1686    
1687    ----------------------------------------------------------------------
1688    Name: Matthias Blume
1689    Date: 2000/05/12 18:20:00 JST
1690    Tag: blume-20000512-ml-build
1691    Description:
1692    
1693    Fixed a bug in config/_ml-build that prevented ml-yacc and ml-lex from
1694    getting installed properly (by config/install.sh).
1695    
1696    ----------------------------------------------------------------------
1697    Name: Matthias Blume
1698    Date: 2000/05/12 17:30:00 JST
1699    Tag: blume-20000512-anchors
1700    Description:
1701    
1702    !!! NEW BOOT FILES !!!
1703    
1704    This change is in preparation of fading out support for "implicitly
1705    anchored path names".  I went through all sources and used the
1706    explicit (and relatively new) $-notation.  See system/README and the
1707    CM manual for more info on this.
1708    
1709    I also modified the anchoring scheme for some things such as "smlnj",
1710    "MLRISC", "cm", etc. to take advantage of the fact that explicit
1711    anchors are more expressive: anchor name and first arc do not have to
1712    coincide.  This entails the following user-visible change:
1713    
1714    You have to write $smlnj/foo/bar instead of smlnj/foo/bar.  In
1715    particular, when you fire up sml with a command-line argument, say,
1716    e.g.:
1717    
1718       sml '$smlnj/cmb.cm'
1719    
1720    At the ML toplevel prompt:
1721    
1722       CM.autoload "$smlnj/cmb.cm";
1723    
1724    There is also a new controller in CM.Control that can be used to turn
1725    off all remaining support for implicit anchors by saying:
1726    
1727        CM.autoload "$smlnj/
1728        #set CM.Control.implicit_anchors false;
1729    
1730    This causes CM to reject implicitly anchored paths.  This is (for the
1731    time being) less permissive than the "final" version where there will
1732    be no more such implicit anchors and relative paths will be just that:
1733    relative.
1734    
1735    The next step (version after next version?) will be to make the
1736    default for CM.Control.implicit_anchors false.  After the dust has
1737    settled, I can then produce the "final" version of this...
1738    
1739    Note: Since bootstrapping is a bit tricky, I provided new boot files.
1740    
1741    ----------------------------------------------------------------------
1742    Name: Matthias Blume
1743    Date: 2000/05/11 16:30:00 JST
1744    Tag: blume-20000511-sources
1745    Description:
1746    
1747    The main change is that I added function CM.sources as a generalized
1748    version of the earlier CM.makedepend.  This entails the following
1749    additional changes:
1750    
1751      - CM.makedepend has been dropped.
1752    
1753      - CM manual has been updated.
1754    
1755      - TOOLS signature and API have been changed.
1756    
1757    ----------------------------------------------------------------------
1758    Name: Allen Leung
1759    Date: 2000/05/10 21:17 EDT
1760    Tag: leunga-20000510-moby-c--ssa
1761    Description:
1762    
1763      Various bug fixes and new features for C--, Moby and MLRISC optimizations.
1764    None of these affect SML/NJ.
1765    
1766    1. Register Allocation
1767    
1768        a. A new ra spilling module (ra/ra-spill-with-renaming) is implemented.
1769           This module tries to remove local (i.e. basic block level) redundancies
1770           during spilling.
1771    
1772        b. A new framework for performing region based register allocation.
1773           Not yet entirely functional.
1774    
1775    2. X86
1776    
1777       a. DefUse for POP was missing the stack pointer [found by Lal]
1778       b. Reload for CALL was incorrect in X86Spill [found by John]
1779       c. Various fixes in X86Spill so that it can be used correctly for
1780          the new spilling module.
1781    
1782    3. SSA/IR
1783    
1784       a. New module ir/dj-dataflow.sml implements elimination based
1785          data flow analysis.
1786    
1787    4. MLRiscGen
1788    
1789       a. Fix for gc type annotation
1790    
1791    5. MDGen
1792    
1793       Various fixes for machine description -> ml code translation.  For ssa
1794       only.
1795    
1796    ----------------------------------------------------------------------
1797    Name: Allen Leung
1798    Date: 2000/05/08 22:17 EDT
1799    Tag: leunga-20000508-labexp
1800    Description:
1801    
1802      Fermin has found a few assembly problems with constant expressions
1803      generated in LabelExp.  Mostly, the problems involve extra parentheses,
1804      which choke on dumb assemblers.  This is his fix.
1805    
1806    ----------------------------------------------------------------------
1807    Name: Dave MacQueen
1808    Date: 2000/04/09 14:00 EDT
1809    Tag: dbm-20000502-Version_110_28
1810    Description:
1811    
1812    1. Updated src/compiler/TopLevel/main/version.sml to version 110.28
1813    
1814    2. Updated config/version to 110.28
1815    
1816    3. Updated config/srcarchiveurl
1817    
1818    3. New boot files!
1819       ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.28/
1820    
1821    ----------------------------------------------------------------------
1822    Name: Matthias Blume
1823    Date: 2000/05/01 19:05:00 JST
1824    Tag: blume-20000501-noweb
1825    Description:
1826    
1827    A new noweb tool has been added.  The existing system is entirely
1828    unaffected by this, but some CM users have asked for renewed noweb
1829    support.  Everything is documented in the CM manual.
1830    
1831    New (plugin) libraries:
1832    
1833       noweb-tool.cm
1834       nw-ext.cm
1835    
1836    ----------------------------------------------------------------------
1837    Name: Dave MacQueen
1838    Date: 2000/04/30 12:40PM EDT
1839    Tag: dbm-20000430-bug_fixes
1840    Description:
1841    
1842    1. Fix for bug 1498
1843       smlnj/src/system/Basis/Implementation/Unsafe/object.sig
1844       smlnj/src/system/Basis/Implementation/Unsafe/object.sml
1845         added toRealArray function
1846       smlnj/src/compiler/MiscUtil/print/ppobj.sml
1847         added check for tag Obj.RealArray to array printing case in ppObj
1848    
1849    2. Fix for bug 1510
1850       smlnj/src/compiler/Semant/types/typesutil.sml
1851         fixed definition of dummyargs (used by equalTycon) so that
1852         dummy args are distinct types
1853    
1854    ----------------------------------------------------------------------
1855    Name: Matthias Blume
1856    Date: 2000/04/30 01:00:00 JST
1857    Tag: blume-20000430-versions
1858    Description:
1859    
1860    1. CM version numbering added.  This is an implementation of Lal's
1861       proposal for adding version numbers and version checking to .cm
1862       files.  Lal said that his proposal was just that -- a proposal.
1863       For the time being I went ahead and implemented it so that people
1864       can comment on it.  Everything is completely backward-compatible
1865       (except for the stable library format, i.e., new bootfiles!).
1866    
1867       As usual, see the CM manual for details.
1868    
1869    2. An alternative syntax for anchored paths has been implemented.
1870       Dave has recently voiced the same concerns that I had when I did
1871       this, so there should be some support.  My take is that eventually
1872       I will let support for the current syntax (where anchors are
1873       "implicit") fade out in favor of the new, explicit syntax.
1874       In order to be backward-compatible, both old and new syntax are
1875       currently supported.
1876    
1877       Again, see the CM manual for details.
1878    
1879    3. Parallel make is trying to be slightly smarter:  When the master
1880       process finds a "bottleneck", i.e., when there is only one
1881       compilation unit that can be compiled and everybody else is
1882       waiting on it, then it will simply compile it directly instead
1883       of clumsily telling one of the slaves to do it.
1884    
1885    4. Support for "unsharing" added.  This is necessary in order to be
1886       able to have two different versions of the same library running
1887       at the same time (e.g., for trying out a new MLRISC while still
1888       having the old MLRISC linked into the current compiler, etc.)
1889       See the CM manual.
1890    
1891    5. Simple "makedepend" functionality added for generating Makefile
1892       dependency information.  (This is rather crude at the moment.
1893       Expect some changes here in the future.)
1894    
1895    6. ".fun" added as a recognized suffix for ML files. Also documented
1896       explicitly in the manual that the fallback behavior (unknown suffix
1897       -> ML file) is not an official feature!
1898    
1899    7. Small changes to the pickler for stable libraries.
1900    
1901    8. Several internal changes to CM (for cleanup/improvement).
1902    
1903    
1904    !!!! NEW BINFILES !!!!
1905    
1906    ----------------------------------------------------------------------
1907    Name: Matthias Blume
1908    Date: 2000/04/28 17:30:00 JST
1909    Tag: blume-20000428-pathconfig
1910    Description:
1911    
1912    1. I changed config/install.sh to remove duplicate entries from the
1913       lib/pathconfig file at the end.  Moreover, the final version of
1914       lib/pathconfig is sorted alphabetically.  The same (sorting) is done
1915       in src/system/installml.
1916    
1917    2. The config/install.sh script now consistently uses relative
1918       pathnames in lib/pathconfig whenever the anchor is in the lib
1919       directory.  (So far this was true for the libraries that come
1920       pre-compiled and bundled as part of the bootfiles but not for
1921       libraries that are compiled by the script itself.)
1922    
1923    ----------------------------------------------------------------------
1924    Name: Matthias Blume
1925    Date: 2000/04/26 13:10:00 JST
1926    Tag: blume-20000426-fun_suffix
1927    Description:
1928    
1929    Added ".fun" as a recognized file name suffix (for ML code).
1930    
1931    ----------------------------------------------------------------------
1932    Name: Allen Leung
1933    Date: 2000/04/25 17:00:00 EST
1934    Tag: leunga-20000425-alpha-ra
1935    Description:
1936    
1937    1. Alpha
1938    
1939        PSEUDOARITH was missing in AlphaRewrite.  This causes an endless loop
1940    in C--.
1941    
1942    2. RA
1943    
1944       Added a flag "ra-dump-size" to print out the size of the flowgraph
1945       and the interference graph.
1946    
1947    ----------------------------------------------------------------------
1948    Name: Dave MacQueen
1949    Date: 2000/04/25/
1950    Tag: dbm-20000425-mlyacc_doc_examples
1951    Description:
1952      Updated mlyacc.tex sections 5 and 7 for SML '97 and CM.
1953      Updated all three examples in src/ml-yacc/examples to run
1954      under 110.* using CM.make.
1955    
1956    ----------------------------------------------------------------------
1957    Name: Allen Leung
1958    Date: 2000/04/20 23:04:00 EST
1959    Tag: leunga-20000420-ssa-c---stuff
1960    Description:
1961    
1962      This update synchronizes my repository with Yale's.  Most of these
1963    changes, however, do not affect SML/NJ at all (the RA is an exception).
1964    
1965    1. Register Allocator
1966    
1967       a. An improvement in the interference graph construction:
1968          Given a copy
1969    
1970                s <- t
1971    
1972          no interference edge between s and t is added for this definition of s.
1973    
1974       b. I've added two new spill heuristic modules that Fermin and I developed
1975          (in the new library RA.cm). These are unused in SML/NJ but maybe
1976          useful for others (Moby?)
1977    
1978    2. X86
1979    
1980       a. Various fixes in the backend provided by Fermin [C--] and Lal.
1981    
1982    3. Alpha
1983    
1984       a. Added the BSR instruction and code generation that goes with it [C--]
1985       b. Other fixes too numerous to recount provided by Fermin [C--]
1986    
1987    4. Regmaps
1988    
1989       a. The regmaps are not initialized with the identity physical bindings
1990          at creation time.  This is unneeded.
1991    
1992    5. MLRISC Optimizations
1993    
1994       a. The DJ-Graph module can now compute the iterated dominance frontiers
1995          intersects with liveness incrementally in linear time! Woohoo!
1996          This is now used in my new SSA construction algorithm.
1997    
1998       b. THe branch reorganization module is now smarter about linear chains of
1999          basic blocks.
2000    
2001    
2002    ----------------------------------------------------------------------
2003    Name: Matthias Blume
2004    Date: 2000/04/12 13:52:00 JST
2005    Tag: blume_main_v110p27_1
2006    Description:
2007    
2008    Changed install.sh script to handle archive files without version number
2009    and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
2010    name of the boot file archive.
2011    
2012    ----------------------------------------------------------------------
2013    Name: Dave MacQueen
2014    Date: 2000/04/09 14:00 EDT
2015    Tag: dbm-20000410-Version_110_27
2016    Description:
2017    
2018    1. Updated src/compiler/TopLevel/main/version.sml to version 110.27
2019    
2020    2. Updated src/config/version to 110.27
2021    
2022    3. New boot files!
2023    
2024    ----------------------------------------------------------------------
2025    Name: Allen Leung
2026    Date: 2000/04/09 19:09:00 EST
2027    Tag: leunga-20000409-misc
2028    Description:
2029    
2030    1.  Yet another fix for x86 assembly for idivl, imull, mull and friends.
2031    
2032    2.  Miscellaneous improvements to MLRISC (unused in sml/nj)
2033    
2034    ----------------------------------------------------------------------
2035    Name: Stefan
2036    Date: 2000/04/07 10:00:00 EDT
2037    Tag: monnier-20000406-branch-handling
2038    Description:
2039    
2040    Improved handling of branches (mostly those generated from
2041    polymorphic equality), removed switchoff and changed the
2042    default optimization settings (more cpsopt and less flintopt).
2043    
2044    ----------------------------------------------------------------------
2045    Name: Allen Leung
2046    Date: 2000/04/06 01:30:00 EST
2047    Tag: leunga-20000406-peephole-x86-SSA-2
2048    Description:
2049    
2050       Forgot a few files.
2051    
2052    ----------------------------------------------------------------------
2053    Name: Allen Leung
2054    Date: 2000/04/06 00:36:00 EST
2055    Tag: leunga-20000406-peephole-x86-SSA
2056    Description:
2057    
2058    1.  New Peephole code
2059    
2060    2.  Minor improvement to X86 instruction selection
2061    
2062    3.  Various fixes to SSA and machine description -> code translator
2063    
2064    ----------------------------------------------------------------------
2065    Name: Matthias Blume
2066    Date: 2000/04/05 12:30:00 JST
2067    Tag: blume_main_v110p26p2_3
2068    Description:
2069    
2070    This update just merges three minor cosmetic updates to CM's sources
2071    to get ready for the 110.27 code freeze on Friday.  No functionality
2072    has changed.
2073    
2074    ----------------------------------------------------------------------
2075    Name: Allen Leung
2076    Date: 2000/04/04 19:39:00 EST
2077    Tag: leunga-20000404-x86-asm
2078    Description:
2079    
2080    1.  Fixed a problem in X86 assembly.
2081    
2082        Things like
2083    
2084           jmp %eax
2085           jmp (%eax)
2086    
2087        should be output as
2088    
2089           jmp *%eax
2090           jmp *(%eax)
2091    
2092    2.  Assembly output
2093    
2094          Added a new flag
2095    
2096              "asm-indent-copies" (default to false)
2097    
2098          When this flag is on, parallel copies will be indented an extra level.
2099    
2100    ----------------------------------------------------------------------
2101    Name: Allen Leung
2102    Date: 2000/04/04 03:18:00 EST
2103    Tag: leunga-20000404-C--Moby
2104    Description:
2105    
2106        All of these fixes are related to C--, Moby, and my own optimization
2107        stuff; so they shouldn't affect SML/NJ.
2108    
2109    1.  X86
2110    
2111        Various fixes related floating point, and extensions.
2112    
2113    2.  Alpha
2114    
2115        Some extra patterns related to loads with signed/zero extension
2116        provided by Fermin.
2117    
2118    3.  Assembly
2119    
2120        When generating assembly, resolve the value of client defined constants,
2121        instead of generating symbolic values.  This is controlled by the
2122        new flag "asm-resolve-constants", which is default to true.
2123    
2124    4.  Machine Descriptions
2125    
2126        a. The precedence parser was slightly broken when parsing infixr symbols.
2127        b. The type generalizing code had the bound variables reversed, resulting
2128           in a problem during arity raising.
2129        c. Various fixes in machine descriptions.
2130    
2131    ----------------------------------------------------------------------
2132    Name: Matthias Blume
2133    Date: 2000/04/03 16:05:00 JST
2134    Tag: blume_main_v110p26p2_2
2135    Description:
2136    
2137    I eliminated coreEnv from compInfo.  Access to the "Core" structure is
2138    now done via the ordinary static environment that is context to each
2139    compilation unit.
2140    
2141    To this end, I arranged that instead of "structure Core" as "structure
2142    _Core" is bound in the pervasive environment.  Core access is done via
2143    _Core (which can never be accidentally rebound because _Core is not a
2144    legal surface-syntax symbol).
2145    
2146    The current solution is much cleaner because the core environment is
2147    now simply part of the pervasive environment which is part of every
2148    compilation unit's context anyway.  In particular, this eliminates all
2149    special-case handling that was necessary until now in order to deal
2150    with dynamic and symbolic parts of the core environment.
2151    
2152    Remaining hackery (to bind the "magic" symbol _Core) is localized in the
2153    compilation manager's bootstrap compiler (actually: in the "init group"
2154    handling).  See the comments in src/system/smlnj/init/init.cmi for
2155    more details.
2156    
2157    I also tried to track down all mentions of "Core" (as string argument
2158    to Symbol.strSymbol) in the compiler and replaced them with a
2159    reference to the new CoreSym.coreSym.  Seems cleaner since the actual
2160    name appears in one place only.
2161    
2162    Binfile and bootfile format have not changed, but the switchover from
2163    the old "init.cmi" to the new one is a bit tricky, so I supplied new
2164    bootfiles anyway.
2165    
2166    ----------------------------------------------------------------------
2167    Name: Allen Leung
2168    Date: 2000/04/02 21:17:00 EST
2169    Tag: leunga-20000402-mltree
2170    Description:
2171    
2172       1. Renamed the constructor CALL in MLTREE by popular demand.
2173       2. Added a bunch of files from my repository.  These are currently
2174          used by other non-SMLNJ backends.
2175    
2176    ----------------------------------------------------------------------
2177    Name: Allen Leung
2178    Date: 2000/03/31 21:15:00 EST
2179    Tag: leunga-20000331-aliasing
2180    Description:
2181    
2182    This update contains a rewritten (and hopefully more correct) module
2183    for extracting aliasing information from CPS.
2184    
2185       To turn on this feature:
2186    
2187            Compiler.Control.CG.memDisambiguate := true
2188    
2189       To pretty print the region information with assembly
2190    
2191           Compiler.Control.MLRISC.getFlag "asm-show-region" := true;
2192    
2193       To control how many levels of aliasing information are printed, use:
2194    
2195           Compiler.Control.MLRISC.getInt "points-to-show-level" := n
2196    
2197       The default of n is 3.
2198    
2199    ----------------------------------------------------------------------
2200    Name: David MacQueen
2201    Date: 2000/03/31 11:15:00 EST
2202    Tag: dbm-20000331-runtime_fix
2203    Description:
2204    
2205    This update contains:
2206    
2207    1. runtime/c-lib/c-libraries.c
2208       includes added in revision 1.2 caused compilation errors on hppa-hpux
2209    
2210    2. fix for bug 1556
2211       system/Basis/Implementation/NJ/internal-signals.sml
2212    
2213    ----------------------------------------------------------------------
2214    Name: Matthias Blume
2215    Date: 2000/03/31 18:00:00 JST
2216    Tag: blume_main_v110p26p2_1
2217    Description:
2218    
2219    This update contains:
2220    
2221    1. A small change to CM's handling of stable libraries:
2222       CM now maintains one "global" modmap that is used for all stable
2223       libraries.  The use of such a global modmap maximizes sharing and
2224       minimizes the need for re-traversing parts of environments during
2225       modmap construction.  (However, this has minor impact since modmap
2226       construction seems to account for just one percent or less of total
2227       compile time.)
2228    
2229    2. I added a "genmap" phase to the statistics.  This is where I got the
2230       "one percent" number (see above).
2231    
2232    3. CM's new tool parameter mechanism just became _even_ better. :)
2233       - The parser understands named parameters and recursive options.
2234       - The "make" and "shell" tools use these new features.
2235         (This makes it a lot easier to cascade these tools.)
2236       - There is a small syntax change: named parameters use a
2237    
2238           <name> : ( <option> ... )            or
2239           <name> : <string>
2240    
2241         syntax.  Previously, named parameters were implemented in an
2242         ad-hoc fashion by each tool individually (by parsing strings)
2243         and had the form
2244    
2245           <name>=<string>
2246    
2247       See the CM manual for a full description of these issues.
2248    
2249    ----------------------------------------------------------------------
2250    Name: Matthias Blume
2251    Date: 2000/03/30 18:00:00 JST
2252    Tag: blume_main_v110p26p2_0
2253    Description:
2254    
2255    !!!!! WARNING !!!!!!
2256    !!  New binfiles  !!
2257    !!!!!!!!!!!!!!!!!!!!
2258    
2259    This update contains:
2260    
2261    1. Moderate changes to CM:
2262    
2263       - Changes to CM's tools mechanism.  In particular, it is now possible
2264       to have tools that accept additional "command line" parameters
2265       (specified in the .cm file at each instance where the tool's class is
2266       used).
2267    
2268       This was done to accommodate the new "make" and "shell" tools which
2269       facilitate fairly seamless hookup to portions of code managed using
2270       Makefiles or Shell scripts.
2271    
2272       There are no classes "shared" or "private" anymore.  Instead, the
2273       sharing annotation is now a parameter to the "sml" class.
2274    
2275       There is a bit of generic machinery for implementing one's own
2276       tools that accept command-line parameters.  However, I am not yet fully
2277       satisfied with that part, so expect changes here in the future.
2278    
2279       All existing tools are described in the CM manual.
2280    
2281       - Slightly better error handling.  (CM now suppresses many followup
2282       error messages that tended to be more annoying than helpful.)
2283    
2284    2. Major changes to the compiler's static environment data structures.
2285    
2286       - no CMStaticEnv anymore.
2287            - no CMEnv, no "BareEnvironment" (actually, _only_ BareEnvironment,
2288              but it is called Environment), no conversions between different
2289              kinds of static environments
2290    
2291       - There is still a notion of a "modmap", but such modmaps are generated
2292         on demand at the time when they are needed.  This sounds slow, but I
2293         sped up the code that generates modmaps enough for this not to lead to
2294         a slowdown of the compiler (at least I didn't detect any).
2295    
2296       - To facilitate rapid modmap generation, static environments now
2297         contain an (optional) "modtree" structure.  Modtree annotations are
2298         constructed by the unpickler during unpickling.  (This means that
2299         the elaborator does not have to worry about modtrees at all.)
2300         Modtrees have the advantage that they are compositional in the same
2301         way as the environment data structure itself is compositional.
2302         As a result, modtrees never hang on to parts of an environment that
2303         has already been rendered "stale" by filtering or rebinding.
2304    
2305       - I went through many, many trials and errors before arriving at the
2306         current solution.  (The initial idea of "linkpaths" did not work.)
2307         But the result of all this is that I have touched a lot of files that
2308         depend on the "modules" and "types" data structures (most of the
2309         elaborator). There were a lot of changes during my "linkpath" trials
2310         that could have been reverted to their original state but weren't.
2311         Please, don't be too harsh on me for messing with this code a bit more
2312         than what was strictly necessary...  (I _did_ resist the tempation
2313         of doing any "global reformatting" to avoid an untimely death at
2314         Dave's hands. :)
2315    
2316       - One positive aspect of the previous point:  At least I made sure that
2317         all files that I touched now compile without warnings (other than
2318         "polyEqual").
2319    
2320       - compiler now tends to run "leaner" (i.e., ties up less memory in
2321         redundant modmaps)
2322    
2323    ----------------------------------------------------------------------
2324    Name: Allen Leung
2325    Date: 2000/03/29 18:00:00
2326    Tag: leunga-20000327-mlriscGen_hppa_alpha_x86
2327    Boot files (optional): ftp://react-ilp.cs.nyu.edu/leunga/110.26.1-sml.boot.x86-unix-20000330.tar.gz
2328    Description:
2329    
2330       This update contains *MAJOR* changes to the way code is generated from CPS
2331    in the module mlriscGen, and in various backend modules.
2332    
2333    CHANGES
2334    =======
2335    
2336    1. MLRiscGen: forward propagation fix.
2337    
2338       There was a bug in forward propagation introduced at about the same time
2339       as the MLRISC x86 backend, which prohibits coalescing to be
2340       performed effectively in loops.
2341    
2342       Effect: speed up of loops in RISC architectures.
2343               By itself, this actually slowed down certain benchmarks on the x86.
2344    
2345    2. MLRiscGen:  forward propagating addresses from consing.
2346    
2347       I've changed the way consing code is generated.  Basically I separated
2348       out the initialization part:
2349    
2350            store tag,   offset(allocptr)
2351            store elem1, offset+4(allocptr)
2352            store elem2, offset+8(allocptr)
2353            ...
2354            store elemn, offset+4n(allocptr)
2355    
2356       and the address computation part:
2357    
2358            celladdr <- offset+4+alloctpr
2359    
2360       and move the address computation part
2361    
2362       Effect:  register pressure is generally lower as a result.  This
2363                makes compilation of certain expressions much faster, such as
2364                long lists with non-trivial elements.
2365    
2366                 [(0,0), (0,0), .... (0,0)]
2367    
2368    3. MLRiscGen: base pointer elimination.
2369    
2370        As part of the linkage mechanism, we generate the sequence:
2371    
2372         L:  ...  <- start of the code fragment
2373    
2374         L1:
2375             base pointer <- linkreg - L1 + L
2376    
2377         The base pointer was then used for computing relocatable addresses
2378       in the code fragment.  Frequently (such as in lots of continuations)
2379       this is not needed.  We now eliminate this sequence whenever possible.
2380    
2381         For compile time efficiency, I'm using a very stupid local heuristic.
2382       But in general, this should be done as a control flow analysis.
2383    
2384       Effect:  Smaller code size.  Speed up of most programs.
2385    
2386    4. Hppa back end
2387    
2388         Long jumps in span dependence resolution used to depend on the existence
2389      of the base pointer.
2390    
2391         A jump to a long label L was expanded into the following sequence:
2392    
2393          LDIL %hi(L-8192), %r29
2394          LDO  %lo(L-8192)(%r29), %r29
2395          ADD  %r29, baseptr, %r29
2396          BV,n %r0(%r29)
2397    
2398         In the presence of change (3) above, this will not work.  I've changed
2399       it so that the following sequence of instructions are generated, which
2400       doesn't mention the base pointer at all:
2401    
2402             BL,n  L', %r29           /* branch and link, L' + 4 -> %r29 */
2403        L':  ADDIL L-(L'+4), %r29     /* Compute address of L */
2404             BV,n  %r0(%r29)          /* Jump */
2405    
2406    5. Alpha back end
2407    
2408          New alpha instructions LDB/LDW have been added, as per Fermin's
2409       suggestions.   This is unrelated to all other changes.
2410    
2411    6. X86 back end
2412    
2413         I've changed andl to testl in the floating point test sequence
2414         whenever appropriate.  The Intel optimization guide states that
2415         testl is preferable to andl.
2416    
2417    7. RA (x86 only)
2418    
2419         I've improved the spill propagation algorithm, using an approximation
2420       of maximal weighted independent sets.   This seems to be necessary to
2421       alleviate the negative effect in light of the slow down in (1).
2422    
2423         I'll write down the algorithm one of these days.
2424    
2425    8. MLRiscGen: frequencies
2426    
2427         I've added an annotation that states that all call gc blocks have zero
2428       execution frequencies.  This improves register allocation on the x86.
2429    
2430    BENCHMARKS
2431    ==========
2432    
2433       I've only perform the comparison on 110.25.
2434    
2435       The platforms are:
2436    
2437        HPPA  A four processor HP machine (E9000) with 5G of memory.
2438        X86   A 300Hhz Pentium II with 128M of memory, and
2439        SPARC An Ultra sparc 2 with 512M of memory.
2440    
2441       I used the following parameters for the SML benchmarks:
2442    
2443                 @SMLalloc
2444         HPPA    256k
2445         SPARC   512k
2446         X86     256k
2447    
2448    COMPILATION TIME
2449    ----------------
2450       Here are the numbers comparing the compilation times of the compilers.
2451       I've only compared 110.25 compiling the new sources versus
2452       a fixpoint version of the new compiler compiling the same.
2453    
2454                     110.25                                  New
2455               Total  Time in RA  Spill+Reload   Total  Time In RA Spill+Reload
2456         HPPA   627s    116s        2684+3584     599s    95s       1003+1879
2457         SPARC  892s    173s        2891+3870     708s    116s      1004+1880
2458         X86    999s    315s       94006+130691   987s    296s    108877+141957
2459    
2460                   110.25         New
2461                Code Size      Code Size
2462         HPPA   8596736         8561421
2463         SPARC  8974299         8785143
2464         X86    9029180         8716783
2465    
2466       So in summary, things are at least as good as before.   Dramatic
2467       reduction in compilation is obtained on the Sparc; I can't explain it,
2468       but it is reproducible.  Perhaps someone should try to reproduce this
2469       on their own machines.
2470    
2471    SML BENCHMARKS
2472    --------------
2473    
2474        On the average, all benchmarks perform at least as well as before.
2475    
2476          HPPA         Compilation Time     Spill+Reload      Run Time
2477                     110.25  New            110.25    New   110.25  New
2478    
2479          barnesHut  3.158  3.015  4.75%    1+1       0+0   2.980  2.922   2.00%
2480              boyer  6.152  5.708  7.77%    0+0       0+0   0.218  0.213   2.34%
2481       count-graphs  1.168  1.120  4.32%    0+0       0+0  22.705 23.073  -1.60%
2482                fft  0.877  0.792 10.74%    1+3       1+3   0.602  0.587   2.56%
2483        knuthBendix  3.180  2.857 11.32%    0+0       0+0   0.675  0.662   2.02%
2484             lexgen  6.190  5.290 17.01%    0+0       0+0   0.913  0.788  15.86%
2485               life  0.803  0.703 14.22%   25+25      0+0   0.153  0.140   9.52%
2486              logic  2.048  2.007  2.08%    6+6       1+1   4.133  4.008   3.12%
2487         mandelbrot  0.077  0.080 -4.17%    0+0       0+0   0.765  0.712   7.49%
2488             mlyacc 22.932 20.937  9.53%  154+181    32+57  0.468  0.430   8.91%
2489            nucleic  5.183  5.060  2.44%    2+2       0+0   0.125  0.120   4.17%
2490      ratio-regions  3.357  3.142  6.84%    0+0       0+0  116.225 113.173 2.70%
2491                ray  1.283  1.290 -0.52%    0+0       0+0   2.887  2.855   1.11%
2492             simple  6.307  6.032  4.56%   28+30      5+7   3.705  3.658   1.28%
2493                tsp  0.888  0.862  3.09%    0+0       0+0   7.040  6.893   2.13%
2494               vliw 24.378 23.455  3.94%  106+127    25+45  2.758  2.707   1.91%
2495      --------------------------------------------------------------------------
2496       Average                     6.12%                                   4.09%
2497    
2498          SPARC        Compilation Time     Spill+Reload      Run Time
2499                     110.25  New            110.25    New   110.25  New
2500    
2501          barnesHut  3.778  3.592  5.20%    2+2       0+0   3.648  3.453    5.65%
2502              boyer  6.632  6.110  8.54%    0+0       0+0   0.258  0.242    6.90%
2503       count-graphs  1.435  1.325  8.30%    0+0       0+0  33.672 34.737   -3.07%
2504                fft  0.980  0.940  4.26%    3+9       2+6   0.838  0.827    1.41%
2505        knuthBendix  3.590  3.138 14.39%    0+0       0+0   0.962  0.967   -0.52%
2506             lexgen  6.593  6.072  8.59%    1+1       0+0   1.077  1.078   -0.15%
2507               life  0.972  0.868 11.90%   26+26      0+0   0.143  0.140    2.38%
2508              logic  2.525  2.387  5.80%    7+7       1+1   5.625  5.158    9.05%
2509         mandelbrot  0.090  0.093 -3.57%    0+0       0+0   0.855  0.728   17.39%
2510             mlyacc 26.732 23.827 12.19%  162+189    32+57  0.550  0.560   -1.79%
2511            nucleic  6.233  6.197  0.59%    3+3       0+0   0.163  0.173   -5.77%
2512      ratio-regions  3.780  3.507  7.79%    0+0       0+0 133.993 131.035   2.26%
2513                ray  1.595  1.550  2.90%    1+1       0+0   3.440  3.418    0.63%
2514             simple  6.972  6.487  7.48%   29+32      5+7   3.523  3.525   -0.05%
2515                tsp  1.115  1.063  4.86%    0+0       0+0   7.393  7.265    1.77%
2516               vliw 27.765 24.818 11.87%  110+135    25+45  2.265  2.135    6.09%
2517      ----------------------------------------------------------------------------
2518       Average                     6.94%                                    2.64%
2519    
2520          X86          Compilation Time     Spill+Reload      Run Time
2521                     110.25  New            110.25    New   110.25  New
2522    
2523          barnesHut  5.530  5.420  2.03%  593+893   597+915   3.532  3.440   2.66%
2524              boyer  8.768  7.747 13.19%  493+199   301+289   0.327  0.297  10.11%
2525       count-graphs  2.040  2.010  1.49%  298+394   315+457  26.578 28.660  -7.26%
2526                fft  1.327  1.302  1.92%  112+209   115+210   1.055  0.962   9.71%
2527        knuthBendix  5.218  5.475 -4.69%  451+598   510+650   0.928  0.932  -0.36%
2528             lexgen  9.970  9.623  3.60% 1014+841  1157+885   0.947  0.928   1.97%
2529               life  1.183  1.183  0.00%  162+182   145+148   0.127  0.103  22.58%
2530              logic  3.285  3.512 -6.45%  514+684   591+836   5.682  5.577   1.88%
2531         mandelbrot  0.147  0.143  2.33%   38+41     33+54    0.703  0.690   1.93%
2532             mlyacc 35.457 32.763  8.22% 3496+4564 3611+4860  0.552  0.550   0.30%
2533            nucleic  7.100  6.888  3.07%  239+168   201+158   0.175  0.173   0.96%
2534      ratio-regions  6.388  6.843 -6.65% 1182+257   981+300  120.142 120.345 -0.17%
2535                ray  2.332  2.338 -0.29%  346+398   402+494   3.593  3.540   1.51%
2536             simple  9.912  9.903  0.08% 1475+941  1579+1168  3.057  3.178  -3.83%
2537                tsp  1.623  1.532  5.98%  266+200   250+211   8.045  7.878   2.12%
2538               vliw 33.947 35.470 -4.29% 2629+2774 2877+3171  2.072  1.890   9.61%
2539      ----------------------------------------------------------------------------
2540       Average                     1.22%                                     3.36%
2541    
2542    ----------------------------------------------------------------------
2543    Name: Allen Leung
2544    Date: 2000/03/23 16:25:00
2545    Tag: leunga-20000323-fix_x86_alpha
2546    Description:
2547    
2548    1. X86 fixes/changes
2549    
2550       a.  The old code generated for SETcc was completely wrong.
2551           The Intel optimization guide is VERY misleading.
2552    
2553    2. ALPHA fixes/changes
2554    
2555       a.  Added the instructions LDBU, LDWU, STB, STW as per Fermin's suggestion.
2556       b.  Added a new mode byteWordLoadStores to the functor parameter to Alpha()
2557       c.  Added reassociation code for address computation.
2558    
2559    ----------------------------------------------------------------------
2560    Name: Allen Leung
2561    Date: 2000/03/22 01:23:00
2562    Tag: leunga-20000322-fix_x86_hppa_ra
2563    Description:
2564    
2565    1. X86 fixes/changes
2566    
2567       a.  x86Rewrite bug with MUL3 (found by Lal)
2568       b.  Added the instructions FSTS, FSTL
2569    
2570    2. PA-RISC fixes/changes
2571    
2572       a.  B label should not be a delay slot candidate!  Why did this work?
2573       b.  ADDT(32, REG(32, r), LI n) now generates one instruction instead of two,
2574           as it should be.
2575       c.  The assembly syntax for fstds and fstdd was wrong.
2576       d.  Added the composite instruction COMICLR/LDO, which is the immediate
2577           operand variant of COMCLR/LDO.
2578    
2579    3. Generic MLRISC
2580    
2581       a.  shuffle.sml rewritten to be slightly more efficient
2582       b.  DIV bug in mltree-simplify fixed (found by Fermin)
2583    
2584    4. Register Allocator
2585    
2586       a.  I now release the interference graph earlier during spilling.
2587           May improve memory usage.
2588    
2589    ----------------------------------------------------------------------
2590    Name: Matthias Blume
2591    Date: 2000/03/14 14:15:32
2592    Tag: blume_main_v110p26p1_2
2593    Description:
2594    
2595    1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
2596    additional argument called "template" which is an optional string that
2597    specifies the layout of the tool command line.  See the CM manual for
2598    explanation.
2599    
2600    2. A special-purpose tool can be "registered" by simply dropping the
2601    corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
2602    directory where the .cm file lives that uses this tool.  (The
2603    behavior/misfeature until now was to look for the tool description
2604    files in the current working directory.)  As before, tool description
2605    files could also be anchored -- in which case they can live anywhere
2606    they like.  Following the recent e-mail discussion, this change should
2607    make it easier to have special-purpose tools that are shipped together
2608    with the sources of the program that uses them.
2609    
2610    ----------------------------------------------------------------------
2611    Name: Matthias Blume
2612    Date: 2000/03/10 07:48:34
2613    Tag: blume_main_v110p26p1_1
2614    Description:
2615    
2616    I added a re-written version of Dave's fixpt script to src/system.
2617    Changes relative to the original version:
2618      - sh-ified (not everybody has ksh)
2619      - automatically figures out which architecture it runs on
2620      - uses ./makeml a bit more cleverly
2621      - never invokes ./installml (and, thus, does not clobber your
2622        good and working installation of sml in case something goes wrong)
2623      - accepts max iteration count using option "-iter <n>"
2624      - accepts a "base" name using option "-base <base>"
2625    
2626    It does not build any extraneous heap images but directly rebuilds
2627    bin- and boot-hierarchies using makeml's "-rebuild" switch. Finally,
2628    it can incorporate existing bin- and boot- hierarchies.  For example,
2629    suppose the base is set to "sml" (which is the default).  Then it
2630    successively builds
2631    
2632            sml.bin.<arch>-unix and sml.boot.<arch>-unix
2633    then    sml1.bin.<arch>-unix and sml1.boot.<arch>-unix
2634    then    sml2.bin.<arch>-unix and sml2.boot.<arch>-unix
2635    ...
2636    then    sml<n>.bin.<arch>-unix and sml<n>.boot.<arch>-unix
2637    
2638    and so on.  If any of these already exist, it will just use what's
2639    there.  In particular, many people will have the initial set of bin
2640    and boot files around, so this saves time for at least one full
2641    rebuild.  Having sets of the form <base><k>.{bin,boot}.<arch>-unix for
2642    <k>=1,2,... is normally not a good idea when invoking fixpt.  However,
2643    they might be the result of an earlier partial run of fixpt (which
2644    perhaps got accidentally killed).  In this case, fixpt will quickly
2645    move through what exists before continuing where it left off earlier,
2646    and, thus, saves a lot of time.
2647    
2648    ----------------------------------------------------------------------
2649    Name: Allen Leung
2650    Date: 00/03/10 02:20:00
2651    Tag: leunga-20000310-fix_x86_asm_ra
2652    Description:
2653    
2654    More assembly output problems involving the indexed addressing mode
2655    on the x86 have been found and corrected. Thanks to Fermin Reig for the
2656    fix.
2657    
2658    The interface and implementation of the register allocator have been changed
2659    slightly to accommodate the possibility to skip the register allocation
2660    phases completely and go directly to memory allocation.  This is needed
2661    for C-- use.
2662    
2663    ----------------------------------------------------------------------
2664    Name: Matthias Blume
2665    Date: 00/03/09 10:23:53
2666    Tag: blume_main_v110p26p1_0
2667    Description:
2668    
2669    * Complete re-organization of library names.  Many libraries have been
2670    consolidated so that they share the same path anchor.  For example,
2671    all MLRISC-related libraries are anchored at MLRISC, most libraries that
2672    are SML/NJ-specific are under "smlnj".  Notice that names like
2673    host-cmb.cm or host-compiler.cm no longer exist.  See system/README
2674    for a complete description of the new naming scheme.  Quick reference:
2675    
2676       host-cmb.cm        -> smlnj/cmb.cm
2677       host-compiler.cm   -> smlnj/compiler.cm
2678       full-cm.cm         -> smlnj/cm.cm
2679       <arch>-<os>.cm     -> smlnj/cmb/<arch>-<os>.cm
2680       <arch>-compiler.cm -> smlnj/compiler/<arch>.cm
2681    
2682    * Bug fixes in CM.
2683        - exceptions in user code are being passed through (i.e., reach top level)
2684        - more bugs in paranoia mode fixed
2685        - bug related to checking group owners fixed
2686    
2687    * New install.sh script that automagically fetches archive files:
2688      The new file config/srcarchiveurl must contain the URL of the
2689      (remote) directory that contains bin files (or other source archives).
2690      If install.sh does not find the archive locally, it tries to get
2691      it from that remote directory.
2692      This should simplify installation further:  For machines that have
2693      access to the internet, just fetch <version>-config.tgz, unpack it,
2694      edit config/targets, and go (run config/install.sh).  The script will
2695      fetch everything else that it might need all by itself.
2696    
2697      For CVS users, this mechanism is not relevant for source archives, but
2698      it is convenient for getting new sets of binfiles.
2699    
2700      Archives should be tar files compressed with either gzip, compress, or
2701      bzip2.  The script recognizes .tgz, .tar, tar.gz, tz, .tar.Z, and .tar.bz2.
2702    
2703    ----------------------------------------------------------------------
2704    Name: Matthias Blume
2705    Date: 2000/03/07 04:01:04
2706    Tag: blume_main_v110_26_2
2707    Description:
2708    - size info in BOOTLIST
2709         * no fixed upper limits for number of bootfiles or length of
2710           bootfile names in runtime
2711         * falling back to old behavior if no BOOTLIST size info found
2712    - allocation size heuristics in .run-sml
2713         * tries to read cache size from /proc/cpuinfo (this is important for
2714            small-cache Celeron systems!)
2715    - install.sh robustified
2716    - CM manual updates
2717    - paranoid mode
2718         * no more CMB.deliver() (i.e., all done by CMB.make())
2719         * can re-use existing sml.boot.* files
2720         * init.cmi now treated as library
2721         * library stamps for consistency checks
2722    - sml.boot.<arch>-<os>/PIDMAP file
2723         * This file is read by the CM startup code.  This is used to minimize
2724           the amount of dynamic state that needs to be stowed away for the
2725           purpose of sharing between interactive system and user code.
2726    - CM.Anchor.anchor instead of CM.Anchor.{set,cancel}
2727         * Upon request by Elsa.  Anchors now controlled by get-set-pair
2728           like most other CM state variables.
2729    - Compiler.CMSA eliminated
2730         * No longer supported by CM anyway.
2731    - fixed bugs in pickler that kept biting Stefan
2732         * past refs to past refs (was caused by the possibility that
2733           ad-hoc sharing is more discriminating than hash-cons sharing)
2734         * integer overflow on LargeInt.minInt
2735    - ml-{lex,yacc} build scripts now use new mechanism
2736      for building standalone programs
2737    - fixed several gcc -Wall warnings that were caused by missing header
2738      files, missing initializations, etc., in runtime (not all warnings
2739      eliminated, though)

Legend:
Removed from v.570  
changed lines
  Added in v.837

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