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

Legend:
Removed from v.586  
changed lines
  Added in v.836

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