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 572, Thu Mar 9 02:43:06 2000 UTC revision 710, Tue Oct 17 08:21:09 2000 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2000/08/31 17:30:00 JST
18    Tag: blume-20001017-v110p29p1
19    Description:
20    
21    I made a version 110.29.1 with new bootfiles.
22    
23    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
24              CM documentation changes and a small bugfix in CM's error reporting.
25    
26    ----------------------------------------------------------------------
27    Name: Lal George
28    Date: 2000/09/27 14:42:35 EDT
29    Tag: george-20000927-nodestatus
30    Description:
31    
32    Changed the type of the nodestatus, so that:
33    
34            SPILLED(~1)             is now SPILLED
35            SPILLED(m) where m>=0   is now MEMREG(m)
36            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
37    
38    ----------------------------------------------------------------------
39    Name: Matthias Blume
40    Date: 2000/09/07 14:45:00 JST
41    Tag: blume-20000907-cmerrmsg
42    Description:
43    
44    Small tweak to CM to avoid getting ML syntax error messages twice.
45    
46    ----------------------------------------------------------------------
47    Name: Matthias Blume
48    Date: 2000/08/31 18:00:00 JST
49    Tag: blume-20000831-cvsbootfiles
50    Description:
51    
52    New URL for boot files (because the 110.29 files on the BL server do
53    now work correctly with my updated install scripts for yacc and lex).
54    
55    ----------------------------------------------------------------------
56    Name: Matthias Blume
57    Date: 2000/08/08 12:33:00 JST
58    Tag: blume-20000808-manual
59    Description:
60    
61    Tiny update to CM manual.
62    
63    ----------------------------------------------------------------------
64    Name: Allen Leung
65    Date: 2000/08/7 19:31:00
66    Tag: leunga-20000807-a-whole-bunch-of-stuff
67    
68      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
69    and Mobdy.
70    
71    1.  x86
72    
73       a.  Fixes to peephole module by John and Dan.
74       b.  Assembly fix to SETcc by Allen.
75       c.  Fix to c-call by John.
76       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
77       e.  Instruction selection optimization to SETcc as suggested by John.
78    
79           For example,
80    
81            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
82    
83           should generate:
84    
85            MOVL a, x
86            SUBL b, x
87            SHRL 31, x
88    
89    2.  IR stuff
90    
91         A bunch of new DJ-graph related algorithms added.  These
92         speed up SSA construction.
93    
94    3.  SSA + Scheduling
95    
96         Added code for SSA and scheduling to the repository
97    
98    ----------------------------------------------------------------------
99    Name: Lal George
100    Date: 2000/07/27 11:53:14 EDT
101    
102    Tag: lal-20000727-linux-ppc
103    Description:
104    
105     Made changes to support Linux PPC.
106     p.s. I have confirmation that the 110.29 boot files work fine.
107    
108    ----------------------------------------------------------------------
109    Name: Matthias Blume
110    Date: 2000/07/27 17:40:00 JST
111    Tag: blume-20000727-scripts
112    Description:
113    
114    !!!! WARNING !!!!
115    You must recompile the runtime system!
116    !!!! WARNING !!!!
117    
118    This is basically another round of script-enhancements:
119    
120    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
121       and undefine CM preprocessor symbols.
122    
123    2. ml-build avoids generating a new heap image if it finds that the
124       existing one is still ok.  (The condition is that no ML file had to
125       be recompiled and all ML files are found to be older that the heap
126       file.)
127    
128       To make this work smoothly, I also hacked the runtime system as
129       well as SMLofNJ.SysInfo to get access to the heap image suffix
130       (.sparc-solaris, ...) that is currently being used.
131    
132       Moreover, the signature of CM.mk_standalone has changed.  See the
133       CM manual.
134    
135    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
136       CM manual for details.)
137    
138    4. More CM manual updates:
139        - all of the above has been documented.
140        - there is now a section describing the (CM-related) command line
141          arguments that are accepted by the "sml" command
142    
143    ----------------------------------------------------------------------
144    Name: Matthias Blume
145    Date: 2000/07/25 16:20:00 JST
146    Tag: blume-20000725-makedepend
147    Description:
148    
149    Added a script called ml-makedepend.  This can be used in makefiles
150    for Unix' make in a way very similar to the "makedepend" command for
151    C.
152    
153    The script internally uses function CM.sources.
154    
155    Synopsis:
156    
157        ml-makedepend [-f makefile] cmfile targetname
158    
159    The default for the makefile is "makefile" (or "Makefile" should
160    "makefile" not exist).
161    
162    ml-makedepend adds a cmfile/targetname-specific section to this
163    makefile (after removing the previous version of this section).  The
164    section contains a single dependency specification with targetname on
165    the LHS (targetname is an arbitrary name), and a list of files derived
166    from the cmfile on the RHS.  Some of the files on the RHS are
167    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
168    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
169    path names.  The makefile writer is responsible for making sure that
170    these variables have correct at the time "make" is invoked.
171    
172    ----------------------------------------------------------------------
173    Name: Matthias Blume
174    Date: 2000/07/22 23:30:00 JST
175    Tag: blume-20000722-urlupdate
176    Description:
177    
178    Changed BOOT and config/srcarchiveurl to point to BL server:
179    
180        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
181    
182    ----------------------------------------------------------------------
183    Name: Matthias Blume
184    Date: 2000/07/18 18:00:00 JST
185    Tag: blume-20000718-Version_110_29
186    Description:
187    
188    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
189    
190    2. Updated config/version to 110.29
191    
192    3. Updated config/srcarchiveurl
193    
194    3. New boot files!
195       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
196    
197    ----------------------------------------------------------------------
198    Name: Matthias Blume
199    Date: 2000/07/11 13:58:00 JST
200    Tag: blume-20000711-doctypo
201    Description:
202    
203    Fixed a few typos in CM manual.
204    
205    ----------------------------------------------------------------------
206    Name: Allen Leung
207    Date: 2000/06/15 00:38:00
208    Tag: leunga-20000704-sparc-x86
209    
210    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
211    2. fix to x86 RET bug [found by Dan Grossman]
212    3. sparc assembly bug fix for ticc instructions [found by Fermin]
213    
214       Affects c-- and moby only
215    
216    ----------------------------------------------------------------------
217    Name: Matthias Blume
218    Date: 2000/07/04 15:26:00
219    Tag: blume-20000704-trigger
220    Description:
221    
222    1. Improvements to CM manual.
223    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
224       of getting a back-trace.  The function, when called, raises an
225       internal exception which explicitly carries the full back-trace history,
226       so it is unaffected by any intervening handle-raise pairs ("trivial"
227       or not).  The interactive loop will print that history once it arrives
228       at top level.
229       Short of having all exceptions implicitly carry the full history, the
230       recommended way of using this facility is:
231         - compile your program with instrumentation "on"
232         - run it, when it raises an exception, look at the history
233         - if the history is "cut off" because of some handler, go and modify
234           your program so that it explicitly calls BTrace.trigger
235         - recompile (still instrumented), and rerun; look at the full history
236    
237    ----------------------------------------------------------------------
238    Name: Matthias Blume
239    Date: 2000/07/03 15:36:00 JST
240    Tag: blume-20000702-manual
241    Description:
242    
243    Small corrections and updates to CM manual.
244    
245    ----------------------------------------------------------------------
246    Name: Matthias Blume
247    Date: 2000/06/29 16:04:00 JST
248    Tag: blume-20000629-yacctool
249    Description:
250    
251    Changes:
252    
253    1. Class "mlyacc" now takes separate arguments to pass options to
254       generated .sml- and .sig-files independently.
255    2. Corresponding CM manual updates.
256    3. BTrace module now also reports call sites.  (However, for loop clusters
257       it only shows from where the cluster was entered.)  There are associated
258       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
259    
260    ----------------------------------------------------------------------
261    Name: Matthias Blume
262    Date: 2000/06/27 16:51:00 JST
263    Tag: blume-20000627-noweb
264    Description:
265    
266    Changes:
267    
268     1. Implemented "subdir" and "witness" options for noweb tool.
269        This caused some slight internal changes in CM's tool implementation.
270     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
271        some remaining issues from earlier path anchor changes.
272     3. Updated CM manual accordingly.
273    
274     4. Changed implementation of back-tracing so that I now consider it
275        ready for prime-time.
276    
277        In particular, you don't have to explicitly trigger the back-trace
278        anymore.  Instead, if you are running BTrace-instrumented code and
279        there is an uncaught exception (regardless of whether or not it was
280        raised in instrumented code), the top-level evalloop will print
281        the back-trace.
282    
283        Features:
284    
285          - Instrumented and uninstrumented code work together seemlessly.
286            (Of course, uninstrumented code is never mentioned in actual
287             back-traces.)
288    
289          - Asymptotic time- and space-complexity of instrumented code is
290            equal to that of uninstrumented code.  (This means that
291            tail-recursion is preserved by the instrumentation phase.)
292    
293          - Modules whose code has been instrumented in different sessions
294            work together without problem.
295    
296          - There is no penalty whatsoever on uninstrumented code.
297    
298          - There is no penalty on "raise" expressions, even in
299            instrumented code.
300    
301        A potential bug (or perhaps it is a feature, too):
302    
303          A back-trace reaches no further than the outermost instrumented
304          non-trivial "raise".  Here, a "trivial" raise is one that is the
305          sole RHS of a "handle" rule.  Thus, back-traces reach trough
306    
307               <exp> handle e => raise e
308    
309          and even
310    
311               <exp> handle Foo => raise Bar
312    
313          and, of course, through
314    
315               <exp> handle Foo => ...
316    
317         if the exception was not Foo.
318    
319         Back-traces always reach right through any un-instrumented code
320         including any of its "handle" expressions, trivial or not.
321    
322       To try this out, do the following:
323    
324         - Erase all existing binfiles for your program.
325           (You may keep binfiles for those modules where you think you
326            definitely don't need back-tracing.)
327         - Turn on back-trace instrumentation:
328              SMLofNJ.Internals.BTrace.mode (SOME true);
329         - Recompile your program.  (I.e., run "CM.make" or "use".)
330         - You may now turn instrumentation off again (if you want):
331              SMLofNJ.Internals.BTrace.mode (SOME false);
332         - Run your program as usual.  If it raises an exception that
333           reaches the interactive toplevel, then a back-trace will
334           automatically be printed.  After that, the toplevel loop
335           will print the exception history as usual.
336    
337    ----------------------------------------------------------------------
338    Name: Matthias Blume
339    Date: 2000/06/26 09:56:46 JST
340    Tag: blume-20000626-setup
341    Description:
342    
343    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
344          ML code before and after compiling a file (e.g., to set compiler
345          flags)
346    
347    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
348              - associated changes to btrace.sml (BTrace instrumentation pass)
349              - cleaner implementation of btimp.sml (BTrace tracing and report
350                module)
351    
352    CM manual: * new path encoding documented
353               * description of setup-parameter to "sml" added
354    
355    The biggest user-visible change to back-tracing is that it is no
356    longer necessary to compile all traced modules within the same
357    session.  (This was a real limitation.)
358    
359    ----------------------------------------------------------------------
360    Name: Matthias Blume
361    Date: 2000/06/24 12:40:00 JST
362    Tag: blume-20000624-startup
363    Description:
364    
365    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
366    bit too often -- to put it mildly. :)
367    
368    ----------------------------------------------------------------------
369    Name: Matthias Blume
370    Date: 2000/06/23 18:20:00 JST
371    Tag: blume-20000623-btrace
372    Description:
373    
374    This updates adds a backtrace facility to aid programmers in debugging
375    their programs.  This involves the following changes:
376    
377    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
378       keeping track of the current call stack.  When programs are compiled
379       in a special mode, the compiler will insert calls to these hooks
380       into the user program.
381       "Hook" means that it is possible for different implementations of
382       back-tracing to register themselves (at different times).
383    
384    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
385       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
386       It can be turned on using this call:
387         SMLofNJ.Internals.BTrace.mode (SOME true);
388       Turning it off again:
389         SMLofNJ.Internals.BTrace.mode (SOME false);
390       Querying the current status:
391         SMLofNJ.Internals.BTrace.mode NONE;
392       Annotated programs are about twice as big as normal ones, and they
393       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
394       where all hooks do nothing).  The slowdown with a plugin that is
395       actually useful (such as the one supplied by default) is even greater,
396       but in the case of the default plugin it is still only an constant
397       factor (amortized).
398    
399    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
400       with a sub-structure BTrace for controlling back-tracing.  In particular,
401       the above-mentioned function "mode" controls whether the annotation
402       phase is invoked by the compiler.  Another important function is
403       "trigger": when called it aborts the current execution and causes
404       the top-level loop to print a full back-trace.
405    
406    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
407       for back-tracing.  It keeps track of the dynamic call stack and in
408       addition to that it keeps a partial history at each "level" of that
409       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
410       d and b (at separate times, dynamically), then the report will show:
411    
412       GOTO   d
413             /c
414       GOTO  \b
415       CALL   a
416    
417       This shows that there was an initial non-tail call of a, then a
418       tail-call to b or c, looping behavior in a cluster of functions that
419       consist of b and c, and then a goto from that cluster (i.e., either from
420       b or from c) to d.
421    
422       Note that (depending on the user program) the amount of information
423       that the back-trace module has to keep track of at each level is bounded
424       by a constant.  Thus, the whole implementation has the same asymptotical
425       complexity as the original program (both in space and in time).
426    
427    5. compiler/TopLevel/interact/evalloop.sml has been modified to
428       handle the special exception SMLofNJ.Internals.BTrace.BTrace
429       which is raised by the "trigger" function mentioned above.
430    
431    Notes on usage:
432    
433    - Annotated code works well together with unannotated code:
434    Unannotated calls simply do not show up at all in the backtrace.
435    
436    - It is not a good idea to let modules that were annotated during
437    different sessions run at the same time.  This is because the compiler
438    chooses small integers to identify individual functions, and there
439    will be clashes if different modules were compiled in separate sessions.
440    (Nothing will crash, and you will even be told about the clashes, but
441    back-trace information will in general not be useful.)
442    
443    - Back-tracing can be confused by callcc and capture.
444    
445    - The only way of getting a back-trace right now is to explicitly
446    invoke the "trigger" function from your user program.  Eventually, we
447    should make every exception carry back-trace information (if
448    available).  But since this creates more overhead at "raise"-time
449    (similar to the current exnHistory overhead), I have not yet
450    implemented this.  (The implementation will be rather easy.)  With
451    exceptions carrying back-trace information, this facility will be even
452    more useful because users don't need to modify their programs...
453    
454    - While it is possible to compile the compiler with back-trace
455    annotations turned on (I did it to get some confidence in
456    correctness), you must make absolutely sure that core.sml and
457    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
458    be compiled with annotation because there is no core access yet, but
459    if you compile btimp.sml with annotation, then the system will go into
460    an infinite recursion and crash.)
461    Since CM currently does not know about BTrace, the only way to turn
462    annotations on and off for different modules of the compiler is to
463    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
464    this is awkward and clumsy.
465    
466    Sample sessions:
467    
468    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
469    - SMLofNJ.Internals.BTrace.mode (SOME true);
470    [autoloading]
471    [autoloading done]
472    val it = false : bool
473    - structure X = struct
474    -     fun main n = let
475    -         fun a (x, 0) = d x
476    -           | a (x, n) = b (x, n - 1)
477    -         and b (x, n) = c (x, n)
478    -         and c (x, n) = a (x, n)
479    -         and d x = e (x, 3)
480    -         and e (x, 0) = f x
481    -           | e (x, n) = e (x, n - 1)
482    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
483    -           | f n = n * g (n - 1)
484    -         and g n = a (n, 3)
485    -     in
486    -         f n
487    -     end
488    - end;
489    structure X : sig val main : int -> int end
490    - X.main 3;
491    *** BACK-TRACE ***
492    GOTO   stdIn:4.2-13.20: X.main[2].f
493    GOTO-( stdIn:4.2-13.20: X.main[2].e
494    GOTO   stdIn:4.2-13.20: X.main[2].d
495         / stdIn:4.2-13.20: X.main[2].a
496         | stdIn:4.2-13.20: X.main[2].b
497    GOTO-\ stdIn:4.2-13.20: X.main[2].c
498    CALL   stdIn:4.2-13.20: X.main[2].g
499    GOTO   stdIn:4.2-13.20: X.main[2].f
500    GOTO-( stdIn:4.2-13.20: X.main[2].e
501    GOTO   stdIn:4.2-13.20: X.main[2].d
502         / stdIn:4.2-13.20: X.main[2].a
503         | stdIn:4.2-13.20: X.main[2].b
504    GOTO-\ stdIn:4.2-13.20: X.main[2].c
505    CALL   stdIn:4.2-13.20: X.main[2].g
506    GOTO   stdIn:4.2-13.20: X.main[2].f
507    GOTO-( stdIn:4.2-13.20: X.main[2].e
508    GOTO   stdIn:4.2-13.20: X.main[2].d
509         / stdIn:4.2-13.20: X.main[2].a
510         | stdIn:4.2-13.20: X.main[2].b
511    GOTO-\ stdIn:4.2-13.20: X.main[2].c
512    CALL   stdIn:4.2-13.20: X.main[2].g
513    GOTO   stdIn:4.2-13.20: X.main[2].f
514    CALL   stdIn:2.15-17.4: X.main[2]
515    -
516    
517    (Note that because of a FLINt bug the above code currently does not
518    compile without BTrace turned on.)
519    
520    Here is another example, using my modified Tiger compiler:
521    
522    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
523    - SMLofNJ.Internals.BTrace.mode (SOME true);
524    [autoloading]
525    [autoloading done]
526    val it = false : bool
527    - CM.make "sources.cm";
528    [autoloading]
529    ...
530    [autoloading done]
531    [scanning sources.cm]
532    [parsing (sources.cm):parse.sml]
533    [creating directory CM/SKEL ...]
534    [parsing (sources.cm):tiger.lex.sml]
535    ...
536    [wrote CM/sparc-unix/semant.sml]
537    [compiling (sources.cm):main.sml]
538    [wrote CM/sparc-unix/main.sml]
539    [New bindings added.]
540    val it = true : bool
541    - Main.compile ("../testcases/merge.tig", "foo.out");
542    *** BACK-TRACE ***
543    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
544    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
545    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
546    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
547    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
548    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
549    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
550         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
551    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
552    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
553    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
554    CALL   main.sml:1.18-118.4: Main.compile[2]
555    -
556    
557    ----------------------------------------------------------------------
558    Name: Matthias Blumen
559    Date: 2000/06/21 18:00:00 JST
560    Tag: blume-20000621-manual
561    Description:
562    
563    CM manual update: Path environments documented.
564    
565    ----------------------------------------------------------------------
566    Name: Matthias Blume
567    Date: 2000/06/19 13:40:00
568    Tag: blume-20000619-manual
569    Description:
570    
571    CM manual and system/README update.  This only covers the fact that
572    there are no more implicit anchors.  (Path environments and the "bind"
573    option to "cm" have yet to be documented.)
574    
575    ----------------------------------------------------------------------
576    Name: Matthias Blume
577    Date: 2000/06/19 11:05:00 JST
578    Tag: blume-20000619-chdir-bugfix
579    Description:
580    
581    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
582    
583    ----------------------------------------------------------------------
584    Name: Matthias Blume
585    Date: 2000/06/18 22:00:10 JST
586    Tag: blume-20000618-implicit-anchors-really-gone
587    Description:
588    
589    I updates the previous HISTORY entry where I forgot to mention that
590    implicit anchors are no longer with us.
591    
592    The current update also gets rid of the (now useless) controller
593    CM.Control.implicit_anchors.
594    
595    ----------------------------------------------------------------------
596    Name: Matthias Blume
597    Date: 2000/06/16 17:30:00 JST
598    Tag: blume-20000616-anchorenv
599    Description:
600    
601    This patch implements the long anticipated (just kidding :) "anchor
602    environment" mechanism.  In the course of doing this, I also
603    re-implemented CM's internal "SrcPath" module from scratch.  The new
604    one should be more robust in certain boundary cases.  In any case, it
605    is a lot cleaner than its predecessor (IMHO).
606    
607    This time, although there is yet another boot file format change, I
608    kept the unpickler backward-compatible.  As a result, no new bootfiles
609    are necessary and bootstrapping is straightforward.  (You cannot read
610    new bootfiles into an old system, but the other way around is no
611    problem.)
612    
613    Visible changes:
614    
615    ** 0. Implicit path anchors (without the leading $-symbol) are no
616    longer recognized at all. This means that such path names are not
617    illegal either.  For example, the name basis.cm simply refers to a
618    local file called "basis.cm" (i.e, the name is an ordinary path
619    relative to .cm-files directory).  Or, to put it differently, only
620    names that start with $ are anchored paths.
621    
622    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
623    vanished.
624    
625    John (Reppy) had critizised this as soon as I originally proposed and
626    implemented it, but at that time I did not really deeply believe
627    him. :) Now I came full-circle because I need the $<singlearc> syntax
628    in another place where it cannot be seen as an abbreviation for
629    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
630    seems to mean (i.e., it "expands" into the corresponding anchor
631    value).
632    
633    However, when paths are used as members in CM description files, it
634    continues to be true that there must be at least another arc after the
635    anchor.  This is now enforced separately during semantic analysis
636    (i.e., from a lexical/syntactical point of view, the notation is ok.)
637    
638    ** 2. The "cm" class now accepts an option "bind".  The option's value
639    is a sub-option list of precisely two items -- one labeled "anchor"
640    and the other one labeled "value".  As you might expect, "anchor" is
641    used to specify an anchor name to be bound, and "value" specifies what
642    the anchor is being bound to.
643    
644    The value must be a directory name and can be given in either standard
645    syntax (including the possibility that it is itself an anchored path)
646    or native syntax.
647    
648    Examples:
649    
650       foo.cm (bind:(anchor:bar value:$mystuff/bar))
651       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
652    
653    and so on.
654    
655    The meaning of this is that the .cm-file will be processed with an
656    augmented anchor environment where the given anchor(s) is/are bound to
657    the given values(s).
658    
659    The rationale for having this feature is this: Suppose you are trying
660    to use two different (already stable) libraries a.cm and b.cm (that
661    you perhaps didn't write yourself).  Further, suppose each of these
662    two libraries internally uses its own auxiliary library $aux/lib.cm.
663    Normally you would now have a problem because the anchor "lib" can not
664    be bound to more than one value globally.  Therefore, the project that
665    uses both a.cm and b.cm must locally redirect the anchor to some other
666    place:
667    
668       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
669       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
670    
671    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
672    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
673    
674    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
675    you when you do so at the time of CM.stabilize).  Therefore, you can
676    also use an anchored path as the value:
677    
678      a.cm (bind:(anchor:lib value:$a-lib))
679      b.cm (bind:(anchor:lib value:$b-lib))
680    
681    Now you can globally configure (using the usual CM.Anchor.anchor or
682    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
683    itself is always locally bound, setting it globally is no longer
684    meaningful or necessary (but it does not hurt either).  In fact, "lib"
685    can still be used as a global anchor for separate purposes.  As a
686    matter of fact, one can locally define "lib" in terms of a global
687    "lib":
688    
689      a.cm (bind:(anchor:lib value:$lib/a))
690      b.cm (bind:(anchor:lib value:$lib/b))
691    
692    ** 3: The encoding of path names has changed.  This affects the way
693    path names are shown in CM's progress report and also the internal
694    protocol encoding used for parallel make.
695    
696    The encoding now uses one or more ':'-separated segments.  Each
697    segments corresponds to a file that has been specified relative to the
698    file given by its preceding segment.  The first segment is either
699    relative to the CWD, absolute, or anchored.  Each segment itself is
700    basically a Unix pathname; all segments but the first are relative.
701    
702    Example:
703    
704       $foo/bar/baz.cm:a/b/c.sml
705    
706    This path denotes the file bar/a/b/c.sml relative to the directory
707    denoted by anchor "foo".  Notice that the encoding also includes
708    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
709    paths are resolved relative to the .cm-files directory, so baz.cm must
710    be ignored to get the "real" pathname.
711    
712    To make this fact more obvious, CM puts the names of such "virtual
713    arcs" into parentheses when they appear in progress reports. (No
714    parentheses will appear in the internal protocol encoding.)  Thus,
715    what you really see is:
716    
717      $foo/bar/(baz.cm):a/b/c.sml
718    
719    I find this notation to be much more informative than before.
720    
721    Another new feature of the encoding is that special characters
722    including parentheses, colons, (back)slashes, and white space are
723    written as \ddd (where ddd is the decimal encoding of the character).
724    
725    *** The CM manual still needs to be updated.
726    
727    ----------------------------------------------------------------------
728    Name: Allen Leung
729    Date: 2000/06/15 00:38:00
730    Tag: leunga-20000615-x86-peephole
731    
732    x86 Peephole fix by Fermin.  Affects c-- and moby only.
733    
734    ----------------------------------------------------------------------
735    Name: Matthias Blume
736    Date: 2000/06/12 11:40:00
737    Tag: blume-20000612-parmakefix
738    Description:
739    
740    More cleanup after changing the file naming scheme: This time I
741    repaired the parallel make mechanism for CMB.make which I broke earlier.
742    
743    ----------------------------------------------------------------------
744    Name: Allen Leung
745    Date: 2000/06/09 01:25:00
746    Tag: leunga-20000609-various
747    
748    None of these things should affect normal SML/NJ operations
749    
750    1. Peephole improvements provided by Fermin (c--)
751    2. New annotation DEFUSE for adding extra dependence (moby)
752    3. New X86 LOCK instructions (moby)
753    4. New machine description language for reservation tables (scheduling)
754    5. Fixes to various optimization/analysis modules (branch chaining, dominator
755       trees etc.)
756    6. I've changed the CM files so that they can work with versions
757       110.0.6, 110.25 and 110.28
758    
759    ----------------------------------------------------------------------
760    Name: Matthias Blume
761    Date: 2000/06/09 12:40:00
762    Tag: blume-20000609-log
763    Description:
764    
765    - Removed all(?) remaining RCS Log entries from sources.
766    
767    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
768      anchored paths).
769    
770    ----------------------------------------------------------------------
771    Name: Matthias Blume
772    Date: 2000/06/07 17:00:00 JST
773    Tag: blume-20000607-no-implicit-anchors
774    Description:
775    
776    1. This update changes the default setting for
777    CM.Control.implicit_anchors from true to false.  This means that
778    implicit anchors are no longer permitted by default.  I also tried to
779    make sure that nothing else still relies on implicit anchors.
780    (This is the next step on the schedule towards a CM that does not even
781    have the notion of implicit anchors anymore.)
782    
783    2. More CM manual updates.
784    
785    3. I managed to track down and fix the pickling bug I mentioned last
786    time.  Because of the previously existing workaround, this entails no
787    immediate practical changes.
788    
789    ----------------------------------------------------------------------
790    Name: Matthias Blume
791    Date: 2000/06/06 11:15:00 JST
792    Tag: blume-20000606-lazierpickle
793    Description:
794    
795    !!!! NEW BOOT FILES !!!!
796    
797    * The main purpose of this update is to make library pickles lazier in
798    order to reduce the initial space penalty for autoloading a library.
799    As a result, it is now possible to have $smlnj/compiler.cm
800    pre-registered.  This should take care of the many complaints or
801    inquiries about missing structure Compiler.  This required changes to
802    CM's internal data structures and small tweaks to some algorithms.
803    
804    As a neat additional effect, it is no longer necessary (for the sake
805    of lean heap image files) to distinguish between a "minimal" CM and a
806    "full" CM.  Now, there is only one CM (i.e., the "full" version:
807    $smlnj/cm.cm aka $smlnj/cm/full.cm), and it is always available at the
808    interactive top level. ($smlnj/cm/minimal.cm is gone.)
809    
810    To make the life of compiler-hackers easier, "makeml" now also
811    pre-registers $smlnj/cmb.cm (aka $smlnj/cmb/current.cm).  In other
812    words, after you bootstrap a new sml for the first time, you will not
813    have to autoload $smlnj/cmb.cm again afterwards.  (The first time
814    around you will still have to do it, though.)
815    
816    * A second change consists of major updates to the CM manual.  There
817    are now several appendices with summary information and also a full
818    specification of the CM description file syntax.
819    
820    * In directory src/system I added the script "allcross".  This script
821    invokes sml and cross-compiles the compiler for all supported
822    architectures.  (Useful when providing a new set of boot files.)
823    
824    * There seems to be a latent bug in my "lazy pickles" mechanism.  I
825    added a small tweak to pickle-util.sml to work around this problem,
826    but it is not a proper fix yet.  I will investigate further.  (The
827    effect of the bug was an inflation of library pickle size.)
828    
829    * Version number increased to 110.28.1 (to avoid compatibility problems).
830    
831    ----------------------------------------------------------------------
832    Name: Allen Leung
833    Date: 2000/05/25 17:28 EDT
834    Tag: leunga-20000525-ra
835    Description:
836    
837      Fixed a bug in freezing phase of the register allocator.
838    
839    ----------------------------------------------------------------------
840    Name: Allen Leung
841    Date: 2000/05/15 22:53 EDT
842    Tag: leunga-20000515-alpha-x86-ra
843    Description:
844    
845      1. Alpha
846    
847          Slight cleanup.  Removed the instruction SGNXL
848    
849      2. X86
850    
851          Added the following instructions to the instruction set:
852    
853            ROLx, RORx,
854            BTx, BTSx, BTLx, BTRx,
855            XCHGx, and variants with the LOCK prefix
856    
857      3. Register Allocation
858    
859          The module ra-rewrite-with-renaming has been improved.
860    
861      These have no effect on SML/NJ.
862    
863    ----------------------------------------------------------------------
864    Name: Matthias Blume
865    Date: 2000/05/15 16:20:00 JST
866    Tag: blume-20000515-lightrebuild
867    Description:
868    
869    1. I added an alternative to "-rebuild" to "makeml".  The difference is
870       that prior to calling CMB.make' the CM-variable "LIGHT" will be
871       defined.  In effect, the command will not build any cross-compiler
872       backends and therefore finish more quickly.
873    
874       The "fixpt" script also takes a "-light" switch to be able to use
875       this new facility while compiling for a fixpoint.
876    
877    2. I replaced all mentions of anchored paths in group owner specifications
878       with simple relative paths (usually starting with "..").
879       The rationale is that a library's internal workings should not be
880       compromised by the lack of some anchor.  (An anchor is necessary
881       for someone who wants to refer to the library by an anchored path,
882       but it should not be necessary to build the same library in the first
883       place.)
884    
885    3. I changed the way CM's tool mechanism determines the shell command
886       string used for things like ml-yacc etc. so that it does not break
887       when CM.Control.implicit_anchors is turned off.
888    
889    ----------------------------------------------------------------------
890    Name: Matthias Blume
891    Date: 2000/05/12 18:20:00 JST
892    Tag: blume-20000512-ml-build
893    Description:
894    
895    Fixed a bug in config/_ml-build that prevented ml-yacc and ml-lex from
896    getting installed properly (by config/install.sh).
897    
898    ----------------------------------------------------------------------
899    Name: Matthias Blume
900    Date: 2000/05/12 17:30:00 JST
901    Tag: blume-20000512-anchors
902    Description:
903    
904    !!! NEW BOOT FILES !!!
905    
906    This change is in preparation of fading out support for "implicitly
907    anchored path names".  I went through all sources and used the
908    explicit (and relatively new) $-notation.  See system/README and the
909    CM manual for more info on this.
910    
911    I also modified the anchoring scheme for some things such as "smlnj",
912    "MLRISC", "cm", etc. to take advantage of the fact that explicit
913    anchors are more expressive: anchor name and first arc do not have to
914    coincide.  This entails the following user-visible change:
915    
916    You have to write $smlnj/foo/bar instead of smlnj/foo/bar.  In
917    particular, when you fire up sml with a command-line argument, say,
918    e.g.:
919    
920       sml '$smlnj/cmb.cm'
921    
922    At the ML toplevel prompt:
923    
924       CM.autoload "$smlnj/cmb.cm";
925    
926    There is also a new controller in CM.Control that can be used to turn
927    off all remaining support for implicit anchors by saying:
928    
929        CM.autoload "$smlnj/
930        #set CM.Control.implicit_anchors false;
931    
932    This causes CM to reject implicitly anchored paths.  This is (for the
933    time being) less permissive than the "final" version where there will
934    be no more such implicit anchors and relative paths will be just that:
935    relative.
936    
937    The next step (version after next version?) will be to make the
938    default for CM.Control.implicit_anchors false.  After the dust has
939    settled, I can then produce the "final" version of this...
940    
941    Note: Since bootstrapping is a bit tricky, I provided new boot files.
942    
943    ----------------------------------------------------------------------
944    Name: Matthias Blume
945    Date: 2000/05/11 16:30:00 JST
946    Tag: blume-20000511-sources
947    Description:
948    
949    The main change is that I added function CM.sources as a generalized
950    version of the earlier CM.makedepend.  This entails the following
951    additional changes:
952    
953      - CM.makedepend has been dropped.
954    
955      - CM manual has been updated.
956    
957      - TOOLS signature and API have been changed.
958    
959    ----------------------------------------------------------------------
960    Name: Allen Leung
961    Date: 2000/05/10 21:17 EDT
962    Tag: leunga-20000510-moby-c--ssa
963    Description:
964    
965      Various bug fixes and new features for C--, Moby and MLRISC optimizations.
966    None of these affect SML/NJ.
967    
968    1. Register Allocation
969    
970        a. A new ra spilling module (ra/ra-spill-with-renaming) is implemented.
971           This module tries to remove local (i.e. basic block level) redundancies
972           during spilling.
973    
974        b. A new framework for performing region based register allocation.
975           Not yet entirely functional.
976    
977    2. X86
978    
979       a. DefUse for POP was missing the stack pointer [found by Lal]
980       b. Reload for CALL was incorrect in X86Spill [found by John]
981       c. Various fixes in X86Spill so that it can be used correctly for
982          the new spilling module.
983    
984    3. SSA/IR
985    
986       a. New module ir/dj-dataflow.sml implements elimination based
987          data flow analysis.
988    
989    4. MLRiscGen
990    
991       a. Fix for gc type annotation
992    
993    5. MDGen
994    
995       Various fixes for machine description -> ml code translation.  For ssa
996       only.
997    
998    ----------------------------------------------------------------------
999    Name: Allen Leung
1000    Date: 2000/05/08 22:17 EDT
1001    Tag: leunga-20000508-labexp
1002    Description:
1003    
1004      Fermin has found a few assembly problems with constant expressions
1005      generated in LabelExp.  Mostly, the problems involve extra parentheses,
1006      which choke on dumb assemblers.  This is his fix.
1007    
1008    ----------------------------------------------------------------------
1009    Name: Dave MacQueen
1010    Date: 2000/04/09 14:00 EDT
1011    Tag: dbm-20000502-Version_110_28
1012    Description:
1013    
1014    1. Updated src/compiler/TopLevel/main/version.sml to version 110.28
1015    
1016    2. Updated config/version to 110.28
1017    
1018    3. Updated config/srcarchiveurl
1019    
1020    3. New boot files!
1021       ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.28/
1022    
1023    ----------------------------------------------------------------------
1024    Name: Matthias Blume
1025    Date: 2000/05/01 19:05:00 JST
1026    Tag: blume-20000501-noweb
1027    Description:
1028    
1029    A new noweb tool has been added.  The existing system is entirely
1030    unaffected by this, but some CM users have asked for renewed noweb
1031    support.  Everything is documented in the CM manual.
1032    
1033    New (plugin) libraries:
1034    
1035       noweb-tool.cm
1036       nw-ext.cm
1037    
1038    ----------------------------------------------------------------------
1039    Name: Dave MacQueen
1040    Date: 2000/04/30 12:40PM EDT
1041    Tag: dbm-20000430-bug_fixes
1042    Description:
1043    
1044    1. Fix for bug 1498
1045       smlnj/src/system/Basis/Implementation/Unsafe/object.sig
1046       smlnj/src/system/Basis/Implementation/Unsafe/object.sml
1047         added toRealArray function
1048       smlnj/src/compiler/MiscUtil/print/ppobj.sml
1049         added check for tag Obj.RealArray to array printing case in ppObj
1050    
1051    2. Fix for bug 1510
1052       smlnj/src/compiler/Semant/types/typesutil.sml
1053         fixed definition of dummyargs (used by equalTycon) so that
1054         dummy args are distinct types
1055    
1056    ----------------------------------------------------------------------
1057    Name: Matthias Blume
1058    Date: 2000/04/30 01:00:00 JST
1059    Tag: blume-20000430-versions
1060    Description:
1061    
1062    1. CM version numbering added.  This is an implementation of Lal's
1063       proposal for adding version numbers and version checking to .cm
1064       files.  Lal said that his proposal was just that -- a proposal.
1065       For the time being I went ahead and implemented it so that people
1066       can comment on it.  Everything is completely backward-compatible
1067       (except for the stable library format, i.e., new bootfiles!).
1068    
1069       As usual, see the CM manual for details.
1070    
1071    2. An alternative syntax for anchored paths has been implemented.
1072       Dave has recently voiced the same concerns that I had when I did
1073       this, so there should be some support.  My take is that eventually
1074       I will let support for the current syntax (where anchors are
1075       "implicit") fade out in favor of the new, explicit syntax.
1076       In order to be backward-compatible, both old and new syntax are
1077       currently supported.
1078    
1079       Again, see the CM manual for details.
1080    
1081    3. Parallel make is trying to be slightly smarter:  When the master
1082       process finds a "bottleneck", i.e., when there is only one
1083       compilation unit that can be compiled and everybody else is
1084       waiting on it, then it will simply compile it directly instead
1085       of clumsily telling one of the slaves to do it.
1086    
1087    4. Support for "unsharing" added.  This is necessary in order to be
1088       able to have two different versions of the same library running
1089       at the same time (e.g., for trying out a new MLRISC while still
1090       having the old MLRISC linked into the current compiler, etc.)
1091       See the CM manual.
1092    
1093    5. Simple "makedepend" functionality added for generating Makefile
1094       dependency information.  (This is rather crude at the moment.
1095       Expect some changes here in the future.)
1096    
1097    6. ".fun" added as a recognized suffix for ML files. Also documented
1098       explicitly in the manual that the fallback behavior (unknown suffix
1099       -> ML file) is not an official feature!
1100    
1101    7. Small changes to the pickler for stable libraries.
1102    
1103    8. Several internal changes to CM (for cleanup/improvement).
1104    
1105    
1106    !!!! NEW BINFILES !!!!
1107    
1108    ----------------------------------------------------------------------
1109    Name: Matthias Blume
1110    Date: 2000/04/28 17:30:00 JST
1111    Tag: blume-20000428-pathconfig
1112    Description:
1113    
1114    1. I changed config/install.sh to remove duplicate entries from the
1115       lib/pathconfig file at the end.  Moreover, the final version of
1116       lib/pathconfig is sorted alphabetically.  The same (sorting) is done
1117       in src/system/installml.
1118    
1119    2. The config/install.sh script now consistently uses relative
1120       pathnames in lib/pathconfig whenever the anchor is in the lib
1121       directory.  (So far this was true for the libraries that come
1122       pre-compiled and bundled as part of the bootfiles but not for
1123       libraries that are compiled by the script itself.)
1124    
1125    ----------------------------------------------------------------------
1126    Name: Matthias Blume
1127    Date: 2000/04/26 13:10:00 JST
1128    Tag: blume-20000426-fun_suffix
1129    Description:
1130    
1131    Added ".fun" as a recognized file name suffix (for ML code).
1132    
1133    ----------------------------------------------------------------------
1134    Name: Allen Leung
1135    Date: 2000/04/25 17:00:00 EST
1136    Tag: leunga-20000425-alpha-ra
1137    Description:
1138    
1139    1. Alpha
1140    
1141        PSEUDOARITH was missing in AlphaRewrite.  This causes an endless loop
1142    in C--.
1143    
1144    2. RA
1145    
1146       Added a flag "ra-dump-size" to print out the size of the flowgraph
1147       and the interference graph.
1148    
1149    ----------------------------------------------------------------------
1150    Name: Dave MacQueen
1151    Date: 2000/04/25/
1152    Tag: dbm-20000425-mlyacc_doc_examples
1153    Description:
1154      Updated mlyacc.tex sections 5 and 7 for SML '97 and CM.
1155      Updated all three examples in src/ml-yacc/examples to run
1156      under 110.* using CM.make.
1157    
1158    ----------------------------------------------------------------------
1159    Name: Allen Leung
1160    Date: 2000/04/20 23:04:00 EST
1161    Tag: leunga-20000420-ssa-c---stuff
1162    Description:
1163    
1164      This update synchronizes my repository with Yale's.  Most of these
1165    changes, however, do not affect SML/NJ at all (the RA is an exception).
1166    
1167    1. Register Allocator
1168    
1169       a. An improvement in the interference graph construction:
1170          Given a copy
1171    
1172                s <- t
1173    
1174          no interference edge between s and t is added for this definition of s.
1175    
1176       b. I've added two new spill heuristic modules that Fermin and I developed
1177          (in the new library RA.cm). These are unused in SML/NJ but maybe
1178          useful for others (Moby?)
1179    
1180    2. X86
1181    
1182       a. Various fixes in the backend provided by Fermin [C--] and Lal.
1183    
1184    3. Alpha
1185    
1186       a. Added the BSR instruction and code generation that goes with it [C--]
1187       b. Other fixes too numerous to recount provided by Fermin [C--]
1188    
1189    4. Regmaps
1190    
1191       a. The regmaps are not initialized with the identity physical bindings
1192          at creation time.  This is unneeded.
1193    
1194    5. MLRISC Optimizations
1195    
1196       a. The DJ-Graph module can now compute the iterated dominance frontiers
1197          intersects with liveness incrementally in linear time! Woohoo!
1198          This is now used in my new SSA construction algorithm.
1199    
1200       b. THe branch reorganization module is now smarter about linear chains of
1201          basic blocks.
1202    
1203    
1204    ----------------------------------------------------------------------
1205    Name: Matthias Blume
1206    Date: 2000/04/12 13:52:00 JST
1207    Tag: blume_main_v110p27_1
1208    Description:
1209    
1210    Changed install.sh script to handle archive files without version number
1211    and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
1212    name of the boot file archive.
1213    
1214    ----------------------------------------------------------------------
1215    Name: Dave MacQueen
1216    Date: 2000/04/09 14:00 EDT
1217    Tag: dbm-20000410-Version_110_27
1218    Description:
1219    
1220    1. Updated src/compiler/TopLevel/main/version.sml to version 110.27
1221    
1222    2. Updated src/config/version to 110.27
1223    
1224    3. New boot files!
1225    
1226    ----------------------------------------------------------------------
1227    Name: Allen Leung
1228    Date: 2000/04/09 19:09:00 EST
1229    Tag: leunga-20000409-misc
1230    Description:
1231    
1232    1.  Yet another fix for x86 assembly for idivl, imull, mull and friends.
1233    
1234    2.  Miscellaneous improvements to MLRISC (unused in sml/nj)
1235    
1236    ----------------------------------------------------------------------
1237    Name: Stefan
1238    Date: 2000/04/07 10:00:00 EDT
1239    Tag: monnier-20000406-branch-handling
1240    Description:
1241    
1242    Improved handling of branches (mostly those generated from
1243    polymorphic equality), removed switchoff and changed the
1244    default optimization settings (more cpsopt and less flintopt).
1245    
1246    ----------------------------------------------------------------------
1247    Name: Allen Leung
1248    Date: 2000/04/06 01:30:00 EST
1249    Tag: leunga-20000406-peephole-x86-SSA-2
1250    Description:
1251    
1252       Forgot a few files.
1253    
1254    ----------------------------------------------------------------------
1255    Name: Allen Leung
1256    Date: 2000/04/06 00:36:00 EST
1257    Tag: leunga-20000406-peephole-x86-SSA
1258    Description:
1259    
1260    1.  New Peephole code
1261    
1262    2.  Minor improvement to X86 instruction selection
1263    
1264    3.  Various fixes to SSA and machine description -> code translator
1265    
1266    ----------------------------------------------------------------------
1267    Name: Matthias Blume
1268    Date: 2000/04/05 12:30:00 JST
1269    Tag: blume_main_v110p26p2_3
1270    Description:
1271    
1272    This update just merges three minor cosmetic updates to CM's sources
1273    to get ready for the 110.27 code freeze on Friday.  No functionality
1274    has changed.
1275    
1276    ----------------------------------------------------------------------
1277    Name: Allen Leung
1278    Date: 2000/04/04 19:39:00 EST
1279    Tag: leunga-20000404-x86-asm
1280    Description:
1281    
1282    1.  Fixed a problem in X86 assembly.
1283    
1284        Things like
1285    
1286           jmp %eax
1287           jmp (%eax)
1288    
1289        should be output as
1290    
1291           jmp *%eax
1292           jmp *(%eax)
1293    
1294    2.  Assembly output
1295    
1296          Added a new flag
1297    
1298              "asm-indent-copies" (default to false)
1299    
1300          When this flag is on, parallel copies will be indented an extra level.
1301    
1302    ----------------------------------------------------------------------
1303    Name: Allen Leung
1304    Date: 2000/04/04 03:18:00 EST
1305    Tag: leunga-20000404-C--Moby
1306    Description:
1307    
1308        All of these fixes are related to C--, Moby, and my own optimization
1309        stuff; so they shouldn't affect SML/NJ.
1310    
1311    1.  X86
1312    
1313        Various fixes related floating point, and extensions.
1314    
1315    2.  Alpha
1316    
1317        Some extra patterns related to loads with signed/zero extension
1318        provided by Fermin.
1319    
1320    3.  Assembly
1321    
1322        When generating assembly, resolve the value of client defined constants,
1323        instead of generating symbolic values.  This is controlled by the
1324        new flag "asm-resolve-constants", which is default to true.
1325    
1326    4.  Machine Descriptions
1327    
1328        a. The precedence parser was slightly broken when parsing infixr symbols.
1329        b. The type generalizing code had the bound variables reversed, resulting
1330           in a problem during arity raising.
1331        c. Various fixes in machine descriptions.
1332    
1333    ----------------------------------------------------------------------
1334    Name: Matthias Blume
1335    Date: 2000/04/03 16:05:00 JST
1336    Tag: blume_main_v110p26p2_2
1337    Description:
1338    
1339    I eliminated coreEnv from compInfo.  Access to the "Core" structure is
1340    now done via the ordinary static environment that is context to each
1341    compilation unit.
1342    
1343    To this end, I arranged that instead of "structure Core" as "structure
1344    _Core" is bound in the pervasive environment.  Core access is done via
1345    _Core (which can never be accidentally rebound because _Core is not a
1346    legal surface-syntax symbol).
1347    
1348    The current solution is much cleaner because the core environment is
1349    now simply part of the pervasive environment which is part of every
1350    compilation unit's context anyway.  In particular, this eliminates all
1351    special-case handling that was necessary until now in order to deal
1352    with dynamic and symbolic parts of the core environment.
1353    
1354    Remaining hackery (to bind the "magic" symbol _Core) is localized in the
1355    compilation manager's bootstrap compiler (actually: in the "init group"
1356    handling).  See the comments in src/system/smlnj/init/init.cmi for
1357    more details.
1358    
1359    I also tried to track down all mentions of "Core" (as string argument
1360    to Symbol.strSymbol) in the compiler and replaced them with a
1361    reference to the new CoreSym.coreSym.  Seems cleaner since the actual
1362    name appears in one place only.
1363    
1364    Binfile and bootfile format have not changed, but the switchover from
1365    the old "init.cmi" to the new one is a bit tricky, so I supplied new
1366    bootfiles anyway.
1367    
1368    ----------------------------------------------------------------------
1369    Name: Allen Leung
1370    Date: 2000/04/02 21:17:00 EST
1371    Tag: leunga-20000402-mltree
1372    Description:
1373    
1374       1. Renamed the constructor CALL in MLTREE by popular demand.
1375       2. Added a bunch of files from my repository.  These are currently
1376          used by other non-SMLNJ backends.
1377    
1378    ----------------------------------------------------------------------
1379    Name: Allen Leung
1380    Date: 2000/03/31 21:15:00 EST
1381    Tag: leunga-20000331-aliasing
1382    Description:
1383    
1384    This update contains a rewritten (and hopefully more correct) module
1385    for extracting aliasing information from CPS.
1386    
1387       To turn on this feature:
1388    
1389            Compiler.Control.CG.memDisambiguate := true
1390    
1391       To pretty print the region information with assembly
1392    
1393           Compiler.Control.MLRISC.getFlag "asm-show-region" := true;
1394    
1395       To control how many levels of aliasing information are printed, use:
1396    
1397           Compiler.Control.MLRISC.getInt "points-to-show-level" := n
1398    
1399       The default of n is 3.
1400    
1401    ----------------------------------------------------------------------
1402    Name: David MacQueen
1403    Date: 2000/03/31 11:15:00 EST
1404    Tag: dbm-20000331-runtime_fix
1405    Description:
1406    
1407    This update contains:
1408    
1409    1. runtime/c-lib/c-libraries.c
1410       includes added in revision 1.2 caused compilation errors on hppa-hpux
1411    
1412    2. fix for bug 1556
1413       system/Basis/Implementation/NJ/internal-signals.sml
1414    
1415    ----------------------------------------------------------------------
1416    Name: Matthias Blume
1417    Date: 2000/03/31 18:00:00 JST
1418    Tag: blume_main_v110p26p2_1
1419    Description:
1420    
1421    This update contains:
1422    
1423    1. A small change to CM's handling of stable libraries:
1424       CM now maintains one "global" modmap that is used for all stable
1425       libraries.  The use of such a global modmap maximizes sharing and
1426       minimizes the need for re-traversing parts of environments during
1427       modmap construction.  (However, this has minor impact since modmap
1428       construction seems to account for just one percent or less of total
1429       compile time.)
1430    
1431    2. I added a "genmap" phase to the statistics.  This is where I got the
1432       "one percent" number (see above).
1433    
1434    3. CM's new tool parameter mechanism just became _even_ better. :)
1435       - The parser understands named parameters and recursive options.
1436       - The "make" and "shell" tools use these new features.
1437         (This makes it a lot easier to cascade these tools.)
1438       - There is a small syntax change: named parameters use a
1439    
1440           <name> : ( <option> ... )            or
1441           <name> : <string>
1442    
1443         syntax.  Previously, named parameters were implemented in an
1444         ad-hoc fashion by each tool individually (by parsing strings)
1445         and had the form
1446    
1447           <name>=<string>
1448    
1449       See the CM manual for a full description of these issues.
1450    
1451    ----------------------------------------------------------------------
1452    Name: Matthias Blume
1453    Date: 2000/03/30 18:00:00 JST
1454    Tag: blume_main_v110p26p2_0
1455    Description:
1456    
1457    !!!!! WARNING !!!!!!
1458    !!  New binfiles  !!
1459    !!!!!!!!!!!!!!!!!!!!
1460    
1461    This update contains:
1462    
1463    1. Moderate changes to CM:
1464    
1465       - Changes to CM's tools mechanism.  In particular, it is now possible
1466       to have tools that accept additional "command line" parameters
1467       (specified in the .cm file at each instance where the tool's class is
1468       used).
1469    
1470       This was done to accommodate the new "make" and "shell" tools which
1471       facilitate fairly seamless hookup to portions of code managed using
1472       Makefiles or Shell scripts.
1473    
1474       There are no classes "shared" or "private" anymore.  Instead, the
1475       sharing annotation is now a parameter to the "sml" class.
1476    
1477       There is a bit of generic machinery for implementing one's own
1478       tools that accept command-line parameters.  However, I am not yet fully
1479       satisfied with that part, so expect changes here in the future.
1480    
1481       All existing tools are described in the CM manual.
1482    
1483       - Slightly better error handling.  (CM now suppresses many followup
1484       error messages that tended to be more annoying than helpful.)
1485    
1486    2. Major changes to the compiler's static environment data structures.
1487    
1488       - no CMStaticEnv anymore.
1489            - no CMEnv, no "BareEnvironment" (actually, _only_ BareEnvironment,
1490              but it is called Environment), no conversions between different
1491              kinds of static environments
1492    
1493       - There is still a notion of a "modmap", but such modmaps are generated
1494         on demand at the time when they are needed.  This sounds slow, but I
1495         sped up the code that generates modmaps enough for this not to lead to
1496         a slowdown of the compiler (at least I didn't detect any).
1497    
1498       - To facilitate rapid modmap generation, static environments now
1499         contain an (optional) "modtree" structure.  Modtree annotations are
1500         constructed by the unpickler during unpickling.  (This means that
1501         the elaborator does not have to worry about modtrees at all.)
1502         Modtrees have the advantage that they are compositional in the same
1503         way as the environment data structure itself is compositional.
1504         As a result, modtrees never hang on to parts of an environment that
1505         has already been rendered "stale" by filtering or rebinding.
1506    
1507       - I went through many, many trials and errors before arriving at the
1508         current solution.  (The initial idea of "linkpaths" did not work.)
1509         But the result of all this is that I have touched a lot of files that
1510         depend on the "modules" and "types" data structures (most of the
1511         elaborator). There were a lot of changes during my "linkpath" trials
1512         that could have been reverted to their original state but weren't.
1513         Please, don't be too harsh on me for messing with this code a bit more
1514         than what was strictly necessary...  (I _did_ resist the tempation
1515         of doing any "global reformatting" to avoid an untimely death at
1516         Dave's hands. :)
1517    
1518       - One positive aspect of the previous point:  At least I made sure that
1519         all files that I touched now compile without warnings (other than
1520         "polyEqual").
1521    
1522       - compiler now tends to run "leaner" (i.e., ties up less memory in
1523         redundant modmaps)
1524    
1525    ----------------------------------------------------------------------
1526    Name: Allen Leung
1527    Date: 2000/03/29 18:00:00
1528    Tag: leunga-20000327-mlriscGen_hppa_alpha_x86
1529    Boot files (optional): ftp://react-ilp.cs.nyu.edu/leunga/110.26.1-sml.boot.x86-unix-20000330.tar.gz
1530    Description:
1531    
1532       This update contains *MAJOR* changes to the way code is generated from CPS
1533    in the module mlriscGen, and in various backend modules.
1534    
1535    CHANGES
1536    =======
1537    
1538    1. MLRiscGen: forward propagation fix.
1539    
1540       There was a bug in forward propagation introduced at about the same time
1541       as the MLRISC x86 backend, which prohibits coalescing to be
1542       performed effectively in loops.
1543    
1544       Effect: speed up of loops in RISC architectures.
1545               By itself, this actually slowed down certain benchmarks on the x86.
1546    
1547    2. MLRiscGen:  forward propagating addresses from consing.
1548    
1549       I've changed the way consing code is generated.  Basically I separated
1550       out the initialization part:
1551    
1552            store tag,   offset(allocptr)
1553            store elem1, offset+4(allocptr)
1554            store elem2, offset+8(allocptr)
1555            ...
1556            store elemn, offset+4n(allocptr)
1557    
1558       and the address computation part:
1559    
1560            celladdr <- offset+4+alloctpr
1561    
1562       and move the address computation part
1563    
1564       Effect:  register pressure is generally lower as a result.  This
1565                makes compilation of certain expressions much faster, such as
1566                long lists with non-trivial elements.
1567    
1568                 [(0,0), (0,0), .... (0,0)]
1569    
1570    3. MLRiscGen: base pointer elimination.
1571    
1572        As part of the linkage mechanism, we generate the sequence:
1573    
1574         L:  ...  <- start of the code fragment
1575    
1576         L1:
1577             base pointer <- linkreg - L1 + L
1578    
1579         The base pointer was then used for computing relocatable addresses
1580       in the code fragment.  Frequently (such as in lots of continuations)
1581       this is not needed.  We now eliminate this sequence whenever possible.
1582    
1583         For compile time efficiency, I'm using a very stupid local heuristic.
1584       But in general, this should be done as a control flow analysis.
1585    
1586       Effect:  Smaller code size.  Speed up of most programs.
1587    
1588    4. Hppa back end
1589    
1590         Long jumps in span dependence resolution used to depend on the existence
1591      of the base pointer.
1592    
1593         A jump to a long label L was expanded into the following sequence:
1594    
1595          LDIL %hi(L-8192), %r29
1596          LDO  %lo(L-8192)(%r29), %r29
1597          ADD  %r29, baseptr, %r29
1598          BV,n %r0(%r29)
1599    
1600         In the presence of change (3) above, this will not work.  I've changed
1601       it so that the following sequence of instructions are generated, which
1602       doesn't mention the base pointer at all:
1603    
1604             BL,n  L', %r29           /* branch and link, L' + 4 -> %r29 */
1605        L':  ADDIL L-(L'+4), %r29     /* Compute address of L */
1606             BV,n  %r0(%r29)          /* Jump */
1607    
1608    5. Alpha back end
1609    
1610          New alpha instructions LDB/LDW have been added, as per Fermin's
1611       suggestions.   This is unrelated to all other changes.
1612    
1613    6. X86 back end
1614    
1615         I've changed andl to testl in the floating point test sequence
1616         whenever appropriate.  The Intel optimization guide states that
1617         testl is preferable to andl.
1618    
1619    7. RA (x86 only)
1620    
1621         I've improved the spill propagation algorithm, using an approximation
1622       of maximal weighted independent sets.   This seems to be necessary to
1623       alleviate the negative effect in light of the slow down in (1).
1624    
1625         I'll write down the algorithm one of these days.
1626    
1627    8. MLRiscGen: frequencies
1628    
1629         I've added an annotation that states that all call gc blocks have zero
1630       execution frequencies.  This improves register allocation on the x86.
1631    
1632    BENCHMARKS
1633    ==========
1634    
1635       I've only perform the comparison on 110.25.
1636    
1637       The platforms are:
1638    
1639        HPPA  A four processor HP machine (E9000) with 5G of memory.
1640        X86   A 300Hhz Pentium II with 128M of memory, and
1641        SPARC An Ultra sparc 2 with 512M of memory.
1642    
1643       I used the following parameters for the SML benchmarks:
1644    
1645                 @SMLalloc
1646         HPPA    256k
1647         SPARC   512k
1648         X86     256k
1649    
1650    COMPILATION TIME
1651    ----------------
1652       Here are the numbers comparing the compilation times of the compilers.
1653       I've only compared 110.25 compiling the new sources versus
1654       a fixpoint version of the new compiler compiling the same.
1655    
1656                     110.25                                  New
1657               Total  Time in RA  Spill+Reload   Total  Time In RA Spill+Reload
1658         HPPA   627s    116s        2684+3584     599s    95s       1003+1879
1659         SPARC  892s    173s        2891+3870     708s    116s      1004+1880
1660         X86    999s    315s       94006+130691   987s    296s    108877+141957
1661    
1662                   110.25         New
1663                Code Size      Code Size
1664         HPPA   8596736         8561421
1665         SPARC  8974299         8785143
1666         X86    9029180         8716783
1667    
1668       So in summary, things are at least as good as before.   Dramatic
1669       reduction in compilation is obtained on the Sparc; I can't explain it,
1670       but it is reproducible.  Perhaps someone should try to reproduce this
1671       on their own machines.
1672    
1673    SML BENCHMARKS
1674    --------------
1675    
1676        On the average, all benchmarks perform at least as well as before.
1677    
1678          HPPA         Compilation Time     Spill+Reload      Run Time
1679                     110.25  New            110.25    New   110.25  New
1680    
1681          barnesHut  3.158  3.015  4.75%    1+1       0+0   2.980  2.922   2.00%
1682              boyer  6.152  5.708  7.77%    0+0       0+0   0.218  0.213   2.34%
1683       count-graphs  1.168  1.120  4.32%    0+0       0+0  22.705 23.073  -1.60%
1684                fft  0.877  0.792 10.74%    1+3       1+3   0.602  0.587   2.56%
1685        knuthBendix  3.180  2.857 11.32%    0+0       0+0   0.675  0.662   2.02%
1686             lexgen  6.190  5.290 17.01%    0+0       0+0   0.913  0.788  15.86%
1687               life  0.803  0.703 14.22%   25+25      0+0   0.153  0.140   9.52%
1688              logic  2.048  2.007  2.08%    6+6       1+1   4.133  4.008   3.12%
1689         mandelbrot  0.077  0.080 -4.17%    0+0       0+0   0.765  0.712   7.49%
1690             mlyacc 22.932 20.937  9.53%  154+181    32+57  0.468  0.430   8.91%
1691            nucleic  5.183  5.060  2.44%    2+2       0+0   0.125  0.120   4.17%
1692      ratio-regions  3.357  3.142  6.84%    0+0       0+0  116.225 113.173 2.70%
1693                ray  1.283  1.290 -0.52%    0+0       0+0   2.887  2.855   1.11%
1694             simple  6.307  6.032  4.56%   28+30      5+7   3.705  3.658   1.28%
1695                tsp  0.888  0.862  3.09%    0+0       0+0   7.040  6.893   2.13%
1696               vliw 24.378 23.455  3.94%  106+127    25+45  2.758  2.707   1.91%
1697      --------------------------------------------------------------------------
1698       Average                     6.12%                                   4.09%
1699    
1700          SPARC        Compilation Time     Spill+Reload      Run Time
1701                     110.25  New            110.25    New   110.25  New
1702    
1703          barnesHut  3.778  3.592  5.20%    2+2       0+0   3.648  3.453    5.65%
1704              boyer  6.632  6.110  8.54%    0+0       0+0   0.258  0.242    6.90%
1705       count-graphs  1.435  1.325  8.30%    0+0       0+0  33.672 34.737   -3.07%
1706                fft  0.980  0.940  4.26%    3+9       2+6   0.838  0.827    1.41%
1707        knuthBendix  3.590  3.138 14.39%    0+0       0+0   0.962  0.967   -0.52%
1708             lexgen  6.593  6.072  8.59%    1+1       0+0   1.077  1.078   -0.15%
1709               life  0.972  0.868 11.90%   26+26      0+0   0.143  0.140    2.38%
1710              logic  2.525  2.387  5.80%    7+7       1+1   5.625  5.158    9.05%
1711         mandelbrot  0.090  0.093 -3.57%    0+0       0+0   0.855  0.728   17.39%
1712             mlyacc 26.732 23.827 12.19%  162+189    32+57  0.550  0.560   -1.79%
1713            nucleic  6.233  6.197  0.59%    3+3       0+0   0.163  0.173   -5.77%
1714      ratio-regions  3.780  3.507  7.79%    0+0       0+0 133.993 131.035   2.26%
1715                ray  1.595  1.550  2.90%    1+1       0+0   3.440  3.418    0.63%
1716             simple  6.972  6.487  7.48%   29+32      5+7   3.523  3.525   -0.05%
1717                tsp  1.115  1.063  4.86%    0+0       0+0   7.393  7.265    1.77%
1718               vliw 27.765 24.818 11.87%  110+135    25+45  2.265  2.135    6.09%
1719      ----------------------------------------------------------------------------
1720       Average                     6.94%                                    2.64%
1721    
1722          X86          Compilation Time     Spill+Reload      Run Time
1723                     110.25  New            110.25    New   110.25  New
1724    
1725          barnesHut  5.530  5.420  2.03%  593+893   597+915   3.532  3.440   2.66%
1726              boyer  8.768  7.747 13.19%  493+199   301+289   0.327  0.297  10.11%
1727       count-graphs  2.040  2.010  1.49%  298+394   315+457  26.578 28.660  -7.26%
1728                fft  1.327  1.302  1.92%  112+209   115+210   1.055  0.962   9.71%
1729        knuthBendix  5.218  5.475 -4.69%  451+598   510+650   0.928  0.932  -0.36%
1730             lexgen  9.970  9.623  3.60% 1014+841  1157+885   0.947  0.928   1.97%
1731               life  1.183  1.183  0.00%  162+182   145+148   0.127  0.103  22.58%
1732              logic  3.285  3.512 -6.45%  514+684   591+836   5.682  5.577   1.88%
1733         mandelbrot  0.147  0.143  2.33%   38+41     33+54    0.703  0.690   1.93%
1734             mlyacc 35.457 32.763  8.22% 3496+4564 3611+4860  0.552  0.550   0.30%
1735            nucleic  7.100  6.888  3.07%  239+168   201+158   0.175  0.173   0.96%
1736      ratio-regions  6.388  6.843 -6.65% 1182+257   981+300  120.142 120.345 -0.17%
1737                ray  2.332  2.338 -0.29%  346+398   402+494   3.593  3.540   1.51%
1738             simple  9.912  9.903  0.08% 1475+941  1579+1168  3.057  3.178  -3.83%
1739                tsp  1.623  1.532  5.98%  266+200   250+211   8.045  7.878   2.12%
1740               vliw 33.947 35.470 -4.29% 2629+2774 2877+3171  2.072  1.890   9.61%
1741      ----------------------------------------------------------------------------
1742       Average                     1.22%                                     3.36%
1743    
1744    ----------------------------------------------------------------------
1745    Name: Allen Leung
1746    Date: 2000/03/23 16:25:00
1747    Tag: leunga-20000323-fix_x86_alpha
1748    Description:
1749    
1750    1. X86 fixes/changes
1751    
1752       a.  The old code generated for SETcc was completely wrong.
1753           The Intel optimization guide is VERY misleading.
1754    
1755    2. ALPHA fixes/changes
1756    
1757       a.  Added the instructions LDBU, LDWU, STB, STW as per Fermin's suggestion.
1758       b.  Added a new mode byteWordLoadStores to the functor parameter to Alpha()
1759       c.  Added reassociation code for address computation.
1760    
1761    ----------------------------------------------------------------------
1762    Name: Allen Leung
1763    Date: 2000/03/22 01:23:00
1764    Tag: leunga-20000322-fix_x86_hppa_ra
1765    Description:
1766    
1767    1. X86 fixes/changes
1768    
1769       a.  x86Rewrite bug with MUL3 (found by Lal)
1770       b.  Added the instructions FSTS, FSTL
1771    
1772    2. PA-RISC fixes/changes
1773    
1774       a.  B label should not be a delay slot candidate!  Why did this work?
1775       b.  ADDT(32, REG(32, r), LI n) now generates one instruction instead of two,
1776           as it should be.
1777       c.  The assembly syntax for fstds and fstdd was wrong.
1778       d.  Added the composite instruction COMICLR/LDO, which is the immediate
1779           operand variant of COMCLR/LDO.
1780    
1781    3. Generic MLRISC
1782    
1783       a.  shuffle.sml rewritten to be slightly more efficient
1784       b.  DIV bug in mltree-simplify fixed (found by Fermin)
1785    
1786    4. Register Allocator
1787    
1788       a.  I now release the interference graph earlier during spilling.
1789           May improve memory usage.
1790    
1791    ----------------------------------------------------------------------
1792    Name: Matthias Blume
1793    Date: 2000/03/14 14:15:32
1794    Tag: blume_main_v110p26p1_2
1795    Description:
1796    
1797    1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
1798    additional argument called "template" which is an optional string that
1799    specifies the layout of the tool command line.  See the CM manual for
1800    explanation.
1801    
1802    2. A special-purpose tool can be "registered" by simply dropping the
1803    corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
1804    directory where the .cm file lives that uses this tool.  (The
1805    behavior/misfeature until now was to look for the tool description
1806    files in the current working directory.)  As before, tool description
1807    files could also be anchored -- in which case they can live anywhere
1808    they like.  Following the recent e-mail discussion, this change should
1809    make it easier to have special-purpose tools that are shipped together
1810    with the sources of the program that uses them.
1811    
1812    ----------------------------------------------------------------------
1813    Name: Matthias Blume
1814    Date: 2000/03/10 07:48:34
1815    Tag: blume_main_v110p26p1_1
1816    Description:
1817    
1818    I added a re-written version of Dave's fixpt script to src/system.
1819    Changes relative to the original version:
1820      - sh-ified (not everybody has ksh)
1821      - automatically figures out which architecture it runs on
1822      - uses ./makeml a bit more cleverly
1823      - never invokes ./installml (and, thus, does not clobber your
1824        good and working installation of sml in case something goes wrong)
1825      - accepts max iteration count using option "-iter <n>"
1826      - accepts a "base" name using option "-base <base>"
1827    
1828    It does not build any extraneous heap images but directly rebuilds
1829    bin- and boot-hierarchies using makeml's "-rebuild" switch. Finally,
1830    it can incorporate existing bin- and boot- hierarchies.  For example,
1831    suppose the base is set to "sml" (which is the default).  Then it
1832    successively builds
1833    
1834            sml.bin.<arch>-unix and sml.boot.<arch>-unix
1835    then    sml1.bin.<arch>-unix and sml1.boot.<arch>-unix
1836    then    sml2.bin.<arch>-unix and sml2.boot.<arch>-unix
1837    ...
1838    then    sml<n>.bin.<arch>-unix and sml<n>.boot.<arch>-unix
1839    
1840    and so on.  If any of these already exist, it will just use what's
1841    there.  In particular, many people will have the initial set of bin
1842    and boot files around, so this saves time for at least one full
1843    rebuild.  Having sets of the form <base><k>.{bin,boot}.<arch>-unix for
1844    <k>=1,2,... is normally not a good idea when invoking fixpt.  However,
1845    they might be the result of an earlier partial run of fixpt (which
1846    perhaps got accidentally killed).  In this case, fixpt will quickly
1847    move through what exists before continuing where it left off earlier,
1848    and, thus, saves a lot of time.
1849    
1850    ----------------------------------------------------------------------
1851    Name: Allen Leung
1852    Date: 00/03/10 02:20:00
1853    Tag: leunga-20000310-fix_x86_asm_ra
1854    Description:
1855    
1856    More assembly output problems involving the indexed addressing mode
1857    on the x86 have been found and corrected. Thanks to Fermin Reig for the
1858    fix.
1859    
1860    The interface and implementation of the register allocator have been changed
1861    slightly to accommodate the possibility to skip the register allocation
1862    phases completely and go directly to memory allocation.  This is needed
1863    for C-- use.
1864    
1865    ----------------------------------------------------------------------
1866    Name: Matthias Blume
1867    Date: 00/03/09 10:23:53
1868    Tag: blume_main_v110p26p1_0
1869    Description:
1870    
1871    * Complete re-organization of library names.  Many libraries have been
1872    consolidated so that they share the same path anchor.  For example,
1873    all MLRISC-related libraries are anchored at MLRISC, most libraries that
1874    are SML/NJ-specific are under "smlnj".  Notice that names like
1875    host-cmb.cm or host-compiler.cm no longer exist.  See system/README
1876    for a complete description of the new naming scheme.  Quick reference:
1877    
1878       host-cmb.cm        -> smlnj/cmb.cm
1879       host-compiler.cm   -> smlnj/compiler.cm
1880       full-cm.cm         -> smlnj/cm.cm
1881       <arch>-<os>.cm     -> smlnj/cmb/<arch>-<os>.cm
1882       <arch>-compiler.cm -> smlnj/compiler/<arch>.cm
1883    
1884    * Bug fixes in CM.
1885        - exceptions in user code are being passed through (i.e., reach top level)
1886        - more bugs in paranoia mode fixed
1887        - bug related to checking group owners fixed
1888    
1889    * New install.sh script that automagically fetches archive files:
1890      The new file config/srcarchiveurl must contain the URL of the
1891      (remote) directory that contains bin files (or other source archives).
1892      If install.sh does not find the archive locally, it tries to get
1893      it from that remote directory.
1894      This should simplify installation further:  For machines that have
1895      access to the internet, just fetch <version>-config.tgz, unpack it,
1896      edit config/targets, and go (run config/install.sh).  The script will
1897      fetch everything else that it might need all by itself.
1898    
1899      For CVS users, this mechanism is not relevant for source archives, but
1900      it is convenient for getting new sets of binfiles.
1901    
1902      Archives should be tar files compressed with either gzip, compress, or
1903      bzip2.  The script recognizes .tgz, .tar, tar.gz, tz, .tar.Z, and .tar.bz2.
1904    
1905    ----------------------------------------------------------------------
1906    Name: Matthias Blume
1907  Date: 2000/03/07 04:01:04  Date: 2000/03/07 04:01:04
1908  Tag: blume_main_v110_26_2  Tag: blume_main_v110_26_2
1909  Description:  Description:

Legend:
Removed from v.572  
changed lines
  Added in v.710

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