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 589, Fri Mar 31 16:14:36 2000 UTC revision 713, Mon Oct 23 23:38:38 2000 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Allen Leung
17    Date: 2000/10/23 19:31:00
18    Tag: leunga-20001023-demo-ra
19    
20    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
21    2. Test programs for the graph library updated
22    3. Some new MLRISC demo programs added
23    
24    ----------------------------------------------------------------------
25    Name: Matthias Blume
26    Date: 2000/08/31 22:15:00 JST
27    Tag: blume-20001017-errmsg
28    Description:
29    
30    More error message grief: Where there used to be no messages, there
31    now were some that had bogus error regions.  Fixed.
32    
33    ----------------------------------------------------------------------
34    Name: Matthias Blume
35    Date: 2000/08/31 17:30:00 JST
36    Tag: blume-20001017-v110p29p1
37    Description:
38    
39    I made a version 110.29.1 with new bootfiles.
40    
41    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
42              CM documentation changes and a small bugfix in CM's error reporting.
43    
44    ----------------------------------------------------------------------
45    Name: Lal George
46    Date: 2000/09/27 14:42:35 EDT
47    Tag: george-20000927-nodestatus
48    Description:
49    
50    Changed the type of the nodestatus, so that:
51    
52            SPILLED(~1)             is now SPILLED
53            SPILLED(m) where m>=0   is now MEMREG(m)
54            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
55    
56    ----------------------------------------------------------------------
57    Name: Matthias Blume
58    Date: 2000/09/07 14:45:00 JST
59    Tag: blume-20000907-cmerrmsg
60    Description:
61    
62    Small tweak to CM to avoid getting ML syntax error messages twice.
63    
64    ----------------------------------------------------------------------
65    Name: Matthias Blume
66    Date: 2000/08/31 18:00:00 JST
67    Tag: blume-20000831-cvsbootfiles
68    Description:
69    
70    New URL for boot files (because the 110.29 files on the BL server do
71    now work correctly with my updated install scripts for yacc and lex).
72    
73    ----------------------------------------------------------------------
74    Name: Matthias Blume
75    Date: 2000/08/08 12:33:00 JST
76    Tag: blume-20000808-manual
77    Description:
78    
79    Tiny update to CM manual.
80    
81    ----------------------------------------------------------------------
82    Name: Allen Leung
83    Date: 2000/08/7 19:31:00
84    Tag: leunga-20000807-a-whole-bunch-of-stuff
85    
86      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
87    and Mobdy.
88    
89    1.  x86
90    
91       a.  Fixes to peephole module by John and Dan.
92       b.  Assembly fix to SETcc by Allen.
93       c.  Fix to c-call by John.
94       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
95       e.  Instruction selection optimization to SETcc as suggested by John.
96    
97           For example,
98    
99            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
100    
101           should generate:
102    
103            MOVL a, x
104            SUBL b, x
105            SHRL 31, x
106    
107    2.  IR stuff
108    
109         A bunch of new DJ-graph related algorithms added.  These
110         speed up SSA construction.
111    
112    3.  SSA + Scheduling
113    
114         Added code for SSA and scheduling to the repository
115    
116    ----------------------------------------------------------------------
117    Name: Lal George
118    Date: 2000/07/27 11:53:14 EDT
119    
120    Tag: lal-20000727-linux-ppc
121    Description:
122    
123     Made changes to support Linux PPC.
124     p.s. I have confirmation that the 110.29 boot files work fine.
125    
126    ----------------------------------------------------------------------
127    Name: Matthias Blume
128    Date: 2000/07/27 17:40:00 JST
129    Tag: blume-20000727-scripts
130    Description:
131    
132    !!!! WARNING !!!!
133    You must recompile the runtime system!
134    !!!! WARNING !!!!
135    
136    This is basically another round of script-enhancements:
137    
138    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
139       and undefine CM preprocessor symbols.
140    
141    2. ml-build avoids generating a new heap image if it finds that the
142       existing one is still ok.  (The condition is that no ML file had to
143       be recompiled and all ML files are found to be older that the heap
144       file.)
145    
146       To make this work smoothly, I also hacked the runtime system as
147       well as SMLofNJ.SysInfo to get access to the heap image suffix
148       (.sparc-solaris, ...) that is currently being used.
149    
150       Moreover, the signature of CM.mk_standalone has changed.  See the
151       CM manual.
152    
153    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
154       CM manual for details.)
155    
156    4. More CM manual updates:
157        - all of the above has been documented.
158        - there is now a section describing the (CM-related) command line
159          arguments that are accepted by the "sml" command
160    
161    ----------------------------------------------------------------------
162    Name: Matthias Blume
163    Date: 2000/07/25 16:20:00 JST
164    Tag: blume-20000725-makedepend
165    Description:
166    
167    Added a script called ml-makedepend.  This can be used in makefiles
168    for Unix' make in a way very similar to the "makedepend" command for
169    C.
170    
171    The script internally uses function CM.sources.
172    
173    Synopsis:
174    
175        ml-makedepend [-f makefile] cmfile targetname
176    
177    The default for the makefile is "makefile" (or "Makefile" should
178    "makefile" not exist).
179    
180    ml-makedepend adds a cmfile/targetname-specific section to this
181    makefile (after removing the previous version of this section).  The
182    section contains a single dependency specification with targetname on
183    the LHS (targetname is an arbitrary name), and a list of files derived
184    from the cmfile on the RHS.  Some of the files on the RHS are
185    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
186    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
187    path names.  The makefile writer is responsible for making sure that
188    these variables have correct at the time "make" is invoked.
189    
190    ----------------------------------------------------------------------
191    Name: Matthias Blume
192    Date: 2000/07/22 23:30:00 JST
193    Tag: blume-20000722-urlupdate
194    Description:
195    
196    Changed BOOT and config/srcarchiveurl to point to BL server:
197    
198        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
199    
200    ----------------------------------------------------------------------
201    Name: Matthias Blume
202    Date: 2000/07/18 18:00:00 JST
203    Tag: blume-20000718-Version_110_29
204    Description:
205    
206    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
207    
208    2. Updated config/version to 110.29
209    
210    3. Updated config/srcarchiveurl
211    
212    3. New boot files!
213       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
214    
215    ----------------------------------------------------------------------
216    Name: Matthias Blume
217    Date: 2000/07/11 13:58:00 JST
218    Tag: blume-20000711-doctypo
219    Description:
220    
221    Fixed a few typos in CM manual.
222    
223    ----------------------------------------------------------------------
224    Name: Allen Leung
225    Date: 2000/06/15 00:38:00
226    Tag: leunga-20000704-sparc-x86
227    
228    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
229    2. fix to x86 RET bug [found by Dan Grossman]
230    3. sparc assembly bug fix for ticc instructions [found by Fermin]
231    
232       Affects c-- and moby only
233    
234    ----------------------------------------------------------------------
235    Name: Matthias Blume
236    Date: 2000/07/04 15:26:00
237    Tag: blume-20000704-trigger
238    Description:
239    
240    1. Improvements to CM manual.
241    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
242       of getting a back-trace.  The function, when called, raises an
243       internal exception which explicitly carries the full back-trace history,
244       so it is unaffected by any intervening handle-raise pairs ("trivial"
245       or not).  The interactive loop will print that history once it arrives
246       at top level.
247       Short of having all exceptions implicitly carry the full history, the
248       recommended way of using this facility is:
249         - compile your program with instrumentation "on"
250         - run it, when it raises an exception, look at the history
251         - if the history is "cut off" because of some handler, go and modify
252           your program so that it explicitly calls BTrace.trigger
253         - recompile (still instrumented), and rerun; look at the full history
254    
255    ----------------------------------------------------------------------
256    Name: Matthias Blume
257    Date: 2000/07/03 15:36:00 JST
258    Tag: blume-20000702-manual
259    Description:
260    
261    Small corrections and updates to CM manual.
262    
263    ----------------------------------------------------------------------
264    Name: Matthias Blume
265    Date: 2000/06/29 16:04:00 JST
266    Tag: blume-20000629-yacctool
267    Description:
268    
269    Changes:
270    
271    1. Class "mlyacc" now takes separate arguments to pass options to
272       generated .sml- and .sig-files independently.
273    2. Corresponding CM manual updates.
274    3. BTrace module now also reports call sites.  (However, for loop clusters
275       it only shows from where the cluster was entered.)  There are associated
276       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
277    
278    ----------------------------------------------------------------------
279    Name: Matthias Blume
280    Date: 2000/06/27 16:51:00 JST
281    Tag: blume-20000627-noweb
282    Description:
283    
284    Changes:
285    
286     1. Implemented "subdir" and "witness" options for noweb tool.
287        This caused some slight internal changes in CM's tool implementation.
288     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
289        some remaining issues from earlier path anchor changes.
290     3. Updated CM manual accordingly.
291    
292     4. Changed implementation of back-tracing so that I now consider it
293        ready for prime-time.
294    
295        In particular, you don't have to explicitly trigger the back-trace
296        anymore.  Instead, if you are running BTrace-instrumented code and
297        there is an uncaught exception (regardless of whether or not it was
298        raised in instrumented code), the top-level evalloop will print
299        the back-trace.
300    
301        Features:
302    
303          - Instrumented and uninstrumented code work together seemlessly.
304            (Of course, uninstrumented code is never mentioned in actual
305             back-traces.)
306    
307          - Asymptotic time- and space-complexity of instrumented code is
308            equal to that of uninstrumented code.  (This means that
309            tail-recursion is preserved by the instrumentation phase.)
310    
311          - Modules whose code has been instrumented in different sessions
312            work together without problem.
313    
314          - There is no penalty whatsoever on uninstrumented code.
315    
316          - There is no penalty on "raise" expressions, even in
317            instrumented code.
318    
319        A potential bug (or perhaps it is a feature, too):
320    
321          A back-trace reaches no further than the outermost instrumented
322          non-trivial "raise".  Here, a "trivial" raise is one that is the
323          sole RHS of a "handle" rule.  Thus, back-traces reach trough
324    
325               <exp> handle e => raise e
326    
327          and even
328    
329               <exp> handle Foo => raise Bar
330    
331          and, of course, through
332    
333               <exp> handle Foo => ...
334    
335         if the exception was not Foo.
336    
337         Back-traces always reach right through any un-instrumented code
338         including any of its "handle" expressions, trivial or not.
339    
340       To try this out, do the following:
341    
342         - Erase all existing binfiles for your program.
343           (You may keep binfiles for those modules where you think you
344            definitely don't need back-tracing.)
345         - Turn on back-trace instrumentation:
346              SMLofNJ.Internals.BTrace.mode (SOME true);
347         - Recompile your program.  (I.e., run "CM.make" or "use".)
348         - You may now turn instrumentation off again (if you want):
349              SMLofNJ.Internals.BTrace.mode (SOME false);
350         - Run your program as usual.  If it raises an exception that
351           reaches the interactive toplevel, then a back-trace will
352           automatically be printed.  After that, the toplevel loop
353           will print the exception history as usual.
354    
355    ----------------------------------------------------------------------
356    Name: Matthias Blume
357    Date: 2000/06/26 09:56:46 JST
358    Tag: blume-20000626-setup
359    Description:
360    
361    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
362          ML code before and after compiling a file (e.g., to set compiler
363          flags)
364    
365    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
366              - associated changes to btrace.sml (BTrace instrumentation pass)
367              - cleaner implementation of btimp.sml (BTrace tracing and report
368                module)
369    
370    CM manual: * new path encoding documented
371               * description of setup-parameter to "sml" added
372    
373    The biggest user-visible change to back-tracing is that it is no
374    longer necessary to compile all traced modules within the same
375    session.  (This was a real limitation.)
376    
377    ----------------------------------------------------------------------
378    Name: Matthias Blume
379    Date: 2000/06/24 12:40:00 JST
380    Tag: blume-20000624-startup
381    Description:
382    
383    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
384    bit too often -- to put it mildly. :)
385    
386    ----------------------------------------------------------------------
387    Name: Matthias Blume
388    Date: 2000/06/23 18:20:00 JST
389    Tag: blume-20000623-btrace
390    Description:
391    
392    This updates adds a backtrace facility to aid programmers in debugging
393    their programs.  This involves the following changes:
394    
395    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
396       keeping track of the current call stack.  When programs are compiled
397       in a special mode, the compiler will insert calls to these hooks
398       into the user program.
399       "Hook" means that it is possible for different implementations of
400       back-tracing to register themselves (at different times).
401    
402    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
403       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
404       It can be turned on using this call:
405         SMLofNJ.Internals.BTrace.mode (SOME true);
406       Turning it off again:
407         SMLofNJ.Internals.BTrace.mode (SOME false);
408       Querying the current status:
409         SMLofNJ.Internals.BTrace.mode NONE;
410       Annotated programs are about twice as big as normal ones, and they
411       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
412       where all hooks do nothing).  The slowdown with a plugin that is
413       actually useful (such as the one supplied by default) is even greater,
414       but in the case of the default plugin it is still only an constant
415       factor (amortized).
416    
417    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
418       with a sub-structure BTrace for controlling back-tracing.  In particular,
419       the above-mentioned function "mode" controls whether the annotation
420       phase is invoked by the compiler.  Another important function is
421       "trigger": when called it aborts the current execution and causes
422       the top-level loop to print a full back-trace.
423    
424    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
425       for back-tracing.  It keeps track of the dynamic call stack and in
426       addition to that it keeps a partial history at each "level" of that
427       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
428       d and b (at separate times, dynamically), then the report will show:
429    
430       GOTO   d
431             /c
432       GOTO  \b
433       CALL   a
434    
435       This shows that there was an initial non-tail call of a, then a
436       tail-call to b or c, looping behavior in a cluster of functions that
437       consist of b and c, and then a goto from that cluster (i.e., either from
438       b or from c) to d.
439    
440       Note that (depending on the user program) the amount of information
441       that the back-trace module has to keep track of at each level is bounded
442       by a constant.  Thus, the whole implementation has the same asymptotical
443       complexity as the original program (both in space and in time).
444    
445    5. compiler/TopLevel/interact/evalloop.sml has been modified to
446       handle the special exception SMLofNJ.Internals.BTrace.BTrace
447       which is raised by the "trigger" function mentioned above.
448    
449    Notes on usage:
450    
451    - Annotated code works well together with unannotated code:
452    Unannotated calls simply do not show up at all in the backtrace.
453    
454    - It is not a good idea to let modules that were annotated during
455    different sessions run at the same time.  This is because the compiler
456    chooses small integers to identify individual functions, and there
457    will be clashes if different modules were compiled in separate sessions.
458    (Nothing will crash, and you will even be told about the clashes, but
459    back-trace information will in general not be useful.)
460    
461    - Back-tracing can be confused by callcc and capture.
462    
463    - The only way of getting a back-trace right now is to explicitly
464    invoke the "trigger" function from your user program.  Eventually, we
465    should make every exception carry back-trace information (if
466    available).  But since this creates more overhead at "raise"-time
467    (similar to the current exnHistory overhead), I have not yet
468    implemented this.  (The implementation will be rather easy.)  With
469    exceptions carrying back-trace information, this facility will be even
470    more useful because users don't need to modify their programs...
471    
472    - While it is possible to compile the compiler with back-trace
473    annotations turned on (I did it to get some confidence in
474    correctness), you must make absolutely sure that core.sml and
475    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
476    be compiled with annotation because there is no core access yet, but
477    if you compile btimp.sml with annotation, then the system will go into
478    an infinite recursion and crash.)
479    Since CM currently does not know about BTrace, the only way to turn
480    annotations on and off for different modules of the compiler is to
481    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
482    this is awkward and clumsy.
483    
484    Sample sessions:
485    
486    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
487    - SMLofNJ.Internals.BTrace.mode (SOME true);
488    [autoloading]
489    [autoloading done]
490    val it = false : bool
491    - structure X = struct
492    -     fun main n = let
493    -         fun a (x, 0) = d x
494    -           | a (x, n) = b (x, n - 1)
495    -         and b (x, n) = c (x, n)
496    -         and c (x, n) = a (x, n)
497    -         and d x = e (x, 3)
498    -         and e (x, 0) = f x
499    -           | e (x, n) = e (x, n - 1)
500    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
501    -           | f n = n * g (n - 1)
502    -         and g n = a (n, 3)
503    -     in
504    -         f n
505    -     end
506    - end;
507    structure X : sig val main : int -> int end
508    - X.main 3;
509    *** BACK-TRACE ***
510    GOTO   stdIn:4.2-13.20: X.main[2].f
511    GOTO-( stdIn:4.2-13.20: X.main[2].e
512    GOTO   stdIn:4.2-13.20: X.main[2].d
513         / stdIn:4.2-13.20: X.main[2].a
514         | stdIn:4.2-13.20: X.main[2].b
515    GOTO-\ stdIn:4.2-13.20: X.main[2].c
516    CALL   stdIn:4.2-13.20: X.main[2].g
517    GOTO   stdIn:4.2-13.20: X.main[2].f
518    GOTO-( stdIn:4.2-13.20: X.main[2].e
519    GOTO   stdIn:4.2-13.20: X.main[2].d
520         / stdIn:4.2-13.20: X.main[2].a
521         | stdIn:4.2-13.20: X.main[2].b
522    GOTO-\ stdIn:4.2-13.20: X.main[2].c
523    CALL   stdIn:4.2-13.20: X.main[2].g
524    GOTO   stdIn:4.2-13.20: X.main[2].f
525    GOTO-( stdIn:4.2-13.20: X.main[2].e
526    GOTO   stdIn:4.2-13.20: X.main[2].d
527         / stdIn:4.2-13.20: X.main[2].a
528         | stdIn:4.2-13.20: X.main[2].b
529    GOTO-\ stdIn:4.2-13.20: X.main[2].c
530    CALL   stdIn:4.2-13.20: X.main[2].g
531    GOTO   stdIn:4.2-13.20: X.main[2].f
532    CALL   stdIn:2.15-17.4: X.main[2]
533    -
534    
535    (Note that because of a FLINt bug the above code currently does not
536    compile without BTrace turned on.)
537    
538    Here is another example, using my modified Tiger compiler:
539    
540    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
541    - SMLofNJ.Internals.BTrace.mode (SOME true);
542    [autoloading]
543    [autoloading done]
544    val it = false : bool
545    - CM.make "sources.cm";
546    [autoloading]
547    ...
548    [autoloading done]
549    [scanning sources.cm]
550    [parsing (sources.cm):parse.sml]
551    [creating directory CM/SKEL ...]
552    [parsing (sources.cm):tiger.lex.sml]
553    ...
554    [wrote CM/sparc-unix/semant.sml]
555    [compiling (sources.cm):main.sml]
556    [wrote CM/sparc-unix/main.sml]
557    [New bindings added.]
558    val it = true : bool
559    - Main.compile ("../testcases/merge.tig", "foo.out");
560    *** BACK-TRACE ***
561    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
562    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
563    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
564    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
565    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
566    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
567    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
568         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
569    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
570    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
571    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
572    CALL   main.sml:1.18-118.4: Main.compile[2]
573    -
574    
575    ----------------------------------------------------------------------
576    Name: Matthias Blumen
577    Date: 2000/06/21 18:00:00 JST
578    Tag: blume-20000621-manual
579    Description:
580    
581    CM manual update: Path environments documented.
582    
583    ----------------------------------------------------------------------
584    Name: Matthias Blume
585    Date: 2000/06/19 13:40:00
586    Tag: blume-20000619-manual
587    Description:
588    
589    CM manual and system/README update.  This only covers the fact that
590    there are no more implicit anchors.  (Path environments and the "bind"
591    option to "cm" have yet to be documented.)
592    
593    ----------------------------------------------------------------------
594    Name: Matthias Blume
595    Date: 2000/06/19 11:05:00 JST
596    Tag: blume-20000619-chdir-bugfix
597    Description:
598    
599    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
600    
601    ----------------------------------------------------------------------
602    Name: Matthias Blume
603    Date: 2000/06/18 22:00:10 JST
604    Tag: blume-20000618-implicit-anchors-really-gone
605    Description:
606    
607    I updates the previous HISTORY entry where I forgot to mention that
608    implicit anchors are no longer with us.
609    
610    The current update also gets rid of the (now useless) controller
611    CM.Control.implicit_anchors.
612    
613    ----------------------------------------------------------------------
614    Name: Matthias Blume
615    Date: 2000/06/16 17:30:00 JST
616    Tag: blume-20000616-anchorenv
617    Description:
618    
619    This patch implements the long anticipated (just kidding :) "anchor
620    environment" mechanism.  In the course of doing this, I also
621    re-implemented CM's internal "SrcPath" module from scratch.  The new
622    one should be more robust in certain boundary cases.  In any case, it
623    is a lot cleaner than its predecessor (IMHO).
624    
625    This time, although there is yet another boot file format change, I
626    kept the unpickler backward-compatible.  As a result, no new bootfiles
627    are necessary and bootstrapping is straightforward.  (You cannot read
628    new bootfiles into an old system, but the other way around is no
629    problem.)
630    
631    Visible changes:
632    
633    ** 0. Implicit path anchors (without the leading $-symbol) are no
634    longer recognized at all. This means that such path names are not
635    illegal either.  For example, the name basis.cm simply refers to a
636    local file called "basis.cm" (i.e, the name is an ordinary path
637    relative to .cm-files directory).  Or, to put it differently, only
638    names that start with $ are anchored paths.
639    
640    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
641    vanished.
642    
643    John (Reppy) had critizised this as soon as I originally proposed and
644    implemented it, but at that time I did not really deeply believe
645    him. :) Now I came full-circle because I need the $<singlearc> syntax
646    in another place where it cannot be seen as an abbreviation for
647    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
648    seems to mean (i.e., it "expands" into the corresponding anchor
649    value).
650    
651    However, when paths are used as members in CM description files, it
652    continues to be true that there must be at least another arc after the
653    anchor.  This is now enforced separately during semantic analysis
654    (i.e., from a lexical/syntactical point of view, the notation is ok.)
655    
656    ** 2. The "cm" class now accepts an option "bind".  The option's value
657    is a sub-option list of precisely two items -- one labeled "anchor"
658    and the other one labeled "value".  As you might expect, "anchor" is
659    used to specify an anchor name to be bound, and "value" specifies what
660    the anchor is being bound to.
661    
662    The value must be a directory name and can be given in either standard
663    syntax (including the possibility that it is itself an anchored path)
664    or native syntax.
665    
666    Examples:
667    
668       foo.cm (bind:(anchor:bar value:$mystuff/bar))
669       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
670    
671    and so on.
672    
673    The meaning of this is that the .cm-file will be processed with an
674    augmented anchor environment where the given anchor(s) is/are bound to
675    the given values(s).
676    
677    The rationale for having this feature is this: Suppose you are trying
678    to use two different (already stable) libraries a.cm and b.cm (that
679    you perhaps didn't write yourself).  Further, suppose each of these
680    two libraries internally uses its own auxiliary library $aux/lib.cm.
681    Normally you would now have a problem because the anchor "lib" can not
682    be bound to more than one value globally.  Therefore, the project that
683    uses both a.cm and b.cm must locally redirect the anchor to some other
684    place:
685    
686       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
687       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
688    
689    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
690    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
691    
692    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
693    you when you do so at the time of CM.stabilize).  Therefore, you can
694    also use an anchored path as the value:
695    
696      a.cm (bind:(anchor:lib value:$a-lib))
697      b.cm (bind:(anchor:lib value:$b-lib))
698    
699    Now you can globally configure (using the usual CM.Anchor.anchor or
700    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
701    itself is always locally bound, setting it globally is no longer
702    meaningful or necessary (but it does not hurt either).  In fact, "lib"
703    can still be used as a global anchor for separate purposes.  As a
704    matter of fact, one can locally define "lib" in terms of a global
705    "lib":
706    
707      a.cm (bind:(anchor:lib value:$lib/a))
708      b.cm (bind:(anchor:lib value:$lib/b))
709    
710    ** 3: The encoding of path names has changed.  This affects the way
711    path names are shown in CM's progress report and also the internal
712    protocol encoding used for parallel make.
713    
714    The encoding now uses one or more ':'-separated segments.  Each
715    segments corresponds to a file that has been specified relative to the
716    file given by its preceding segment.  The first segment is either
717    relative to the CWD, absolute, or anchored.  Each segment itself is
718    basically a Unix pathname; all segments but the first are relative.
719    
720    Example:
721    
722       $foo/bar/baz.cm:a/b/c.sml
723    
724    This path denotes the file bar/a/b/c.sml relative to the directory
725    denoted by anchor "foo".  Notice that the encoding also includes
726    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
727    paths are resolved relative to the .cm-files directory, so baz.cm must
728    be ignored to get the "real" pathname.
729    
730    To make this fact more obvious, CM puts the names of such "virtual
731    arcs" into parentheses when they appear in progress reports. (No
732    parentheses will appear in the internal protocol encoding.)  Thus,
733    what you really see is:
734    
735      $foo/bar/(baz.cm):a/b/c.sml
736    
737    I find this notation to be much more informative than before.
738    
739    Another new feature of the encoding is that special characters
740    including parentheses, colons, (back)slashes, and white space are
741    written as \ddd (where ddd is the decimal encoding of the character).
742    
743    *** The CM manual still needs to be updated.
744    
745    ----------------------------------------------------------------------
746    Name: Allen Leung
747    Date: 2000/06/15 00:38:00
748    Tag: leunga-20000615-x86-peephole
749    
750    x86 Peephole fix by Fermin.  Affects c-- and moby only.
751    
752    ----------------------------------------------------------------------
753    Name: Matthias Blume
754    Date: 2000/06/12 11:40:00
755    Tag: blume-20000612-parmakefix
756    Description:
757    
758    More cleanup after changing the file naming scheme: This time I
759    repaired the parallel make mechanism for CMB.make which I broke earlier.
760    
761    ----------------------------------------------------------------------
762    Name: Allen Leung
763    Date: 2000/06/09 01:25:00
764    Tag: leunga-20000609-various
765    
766    None of these things should affect normal SML/NJ operations
767    
768    1. Peephole improvements provided by Fermin (c--)
769    2. New annotation DEFUSE for adding extra dependence (moby)
770    3. New X86 LOCK instructions (moby)
771    4. New machine description language for reservation tables (scheduling)
772    5. Fixes to various optimization/analysis modules (branch chaining, dominator
773       trees etc.)
774    6. I've changed the CM files so that they can work with versions
775       110.0.6, 110.25 and 110.28
776    
777    ----------------------------------------------------------------------
778    Name: Matthias Blume
779    Date: 2000/06/09 12:40:00
780    Tag: blume-20000609-log
781    Description:
782    
783    - Removed all(?) remaining RCS Log entries from sources.
784    
785    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
786      anchored paths).
787    
788    ----------------------------------------------------------------------
789    Name: Matthias Blume
790    Date: 2000/06/07 17:00:00 JST
791    Tag: blume-20000607-no-implicit-anchors
792    Description:
793    
794    1. This update changes the default setting for
795    CM.Control.implicit_anchors from true to false.  This means that
796    implicit anchors are no longer permitted by default.  I also tried to
797    make sure that nothing else still relies on implicit anchors.
798    (This is the next step on the schedule towards a CM that does not even
799    have the notion of implicit anchors anymore.)
800    
801    2. More CM manual updates.
802    
803    3. I managed to track down and fix the pickling bug I mentioned last
804    time.  Because of the previously existing workaround, this entails no
805    immediate practical changes.
806    
807    ----------------------------------------------------------------------
808    Name: Matthias Blume
809    Date: 2000/06/06 11:15:00 JST
810    Tag: blume-20000606-lazierpickle
811    Description:
812    
813    !!!! NEW BOOT FILES !!!!
814    
815    * The main purpose of this update is to make library pickles lazier in
816    order to reduce the initial space penalty for autoloading a library.
817    As a result, it is now possible to have $smlnj/compiler.cm
818    pre-registered.  This should take care of the many complaints or
819    inquiries about missing structure Compiler.  This required changes to
820    CM's internal data structures and small tweaks to some algorithms.
821    
822    As a neat additional effect, it is no longer necessary (for the sake
823    of lean heap image files) to distinguish between a "minimal" CM and a
824    "full" CM.  Now, there is only one CM (i.e., the "full" version:
825    $smlnj/cm.cm aka $smlnj/cm/full.cm), and it is always available at the
826    interactive top level. ($smlnj/cm/minimal.cm is gone.)
827    
828    To make the life of compiler-hackers easier, "makeml" now also
829    pre-registers $smlnj/cmb.cm (aka $smlnj/cmb/current.cm).  In other
830    words, after you bootstrap a new sml for the first time, you will not
831    have to autoload $smlnj/cmb.cm again afterwards.  (The first time
832    around you will still have to do it, though.)
833    
834    * A second change consists of major updates to the CM manual.  There
835    are now several appendices with summary information and also a full
836    specification of the CM description file syntax.
837    
838    * In directory src/system I added the script "allcross".  This script
839    invokes sml and cross-compiles the compiler for all supported
840    architectures.  (Useful when providing a new set of boot files.)
841    
842    * There seems to be a latent bug in my "lazy pickles" mechanism.  I
843    added a small tweak to pickle-util.sml to work around this problem,
844    but it is not a proper fix yet.  I will investigate further.  (The
845    effect of the bug was an inflation of library pickle size.)
846    
847    * Version number increased to 110.28.1 (to avoid compatibility problems).
848    
849    ----------------------------------------------------------------------
850    Name: Allen Leung
851    Date: 2000/05/25 17:28 EDT
852    Tag: leunga-20000525-ra
853    Description:
854    
855      Fixed a bug in freezing phase of the register allocator.
856    
857    ----------------------------------------------------------------------
858    Name: Allen Leung
859    Date: 2000/05/15 22:53 EDT
860    Tag: leunga-20000515-alpha-x86-ra
861    Description:
862    
863      1. Alpha
864    
865          Slight cleanup.  Removed the instruction SGNXL
866    
867      2. X86
868    
869          Added the following instructions to the instruction set:
870    
871            ROLx, RORx,
872            BTx, BTSx, BTLx, BTRx,
873            XCHGx, and variants with the LOCK prefix
874    
875      3. Register Allocation
876    
877          The module ra-rewrite-with-renaming has been improved.
878    
879      These have no effect on SML/NJ.
880    
881    ----------------------------------------------------------------------
882    Name: Matthias Blume
883    Date: 2000/05/15 16:20:00 JST
884    Tag: blume-20000515-lightrebuild
885    Description:
886    
887    1. I added an alternative to "-rebuild" to "makeml".  The difference is
888       that prior to calling CMB.make' the CM-variable "LIGHT" will be
889       defined.  In effect, the command will not build any cross-compiler
890       backends and therefore finish more quickly.
891    
892       The "fixpt" script also takes a "-light" switch to be able to use
893       this new facility while compiling for a fixpoint.
894    
895    2. I replaced all mentions of anchored paths in group owner specifications
896       with simple relative paths (usually starting with "..").
897       The rationale is that a library's internal workings should not be
898       compromised by the lack of some anchor.  (An anchor is necessary
899       for someone who wants to refer to the library by an anchored path,
900       but it should not be necessary to build the same library in the first
901       place.)
902    
903    3. I changed the way CM's tool mechanism determines the shell command
904       string used for things like ml-yacc etc. so that it does not break
905       when CM.Control.implicit_anchors is turned off.
906    
907    ----------------------------------------------------------------------
908    Name: Matthias Blume
909    Date: 2000/05/12 18:20:00 JST
910    Tag: blume-20000512-ml-build
911    Description:
912    
913    Fixed a bug in config/_ml-build that prevented ml-yacc and ml-lex from
914    getting installed properly (by config/install.sh).
915    
916    ----------------------------------------------------------------------
917    Name: Matthias Blume
918    Date: 2000/05/12 17:30:00 JST
919    Tag: blume-20000512-anchors
920    Description:
921    
922    !!! NEW BOOT FILES !!!
923    
924    This change is in preparation of fading out support for "implicitly
925    anchored path names".  I went through all sources and used the
926    explicit (and relatively new) $-notation.  See system/README and the
927    CM manual for more info on this.
928    
929    I also modified the anchoring scheme for some things such as "smlnj",
930    "MLRISC", "cm", etc. to take advantage of the fact that explicit
931    anchors are more expressive: anchor name and first arc do not have to
932    coincide.  This entails the following user-visible change:
933    
934    You have to write $smlnj/foo/bar instead of smlnj/foo/bar.  In
935    particular, when you fire up sml with a command-line argument, say,
936    e.g.:
937    
938       sml '$smlnj/cmb.cm'
939    
940    At the ML toplevel prompt:
941    
942       CM.autoload "$smlnj/cmb.cm";
943    
944    There is also a new controller in CM.Control that can be used to turn
945    off all remaining support for implicit anchors by saying:
946    
947        CM.autoload "$smlnj/
948        #set CM.Control.implicit_anchors false;
949    
950    This causes CM to reject implicitly anchored paths.  This is (for the
951    time being) less permissive than the "final" version where there will
952    be no more such implicit anchors and relative paths will be just that:
953    relative.
954    
955    The next step (version after next version?) will be to make the
956    default for CM.Control.implicit_anchors false.  After the dust has
957    settled, I can then produce the "final" version of this...
958    
959    Note: Since bootstrapping is a bit tricky, I provided new boot files.
960    
961    ----------------------------------------------------------------------
962    Name: Matthias Blume
963    Date: 2000/05/11 16:30:00 JST
964    Tag: blume-20000511-sources
965    Description:
966    
967    The main change is that I added function CM.sources as a generalized
968    version of the earlier CM.makedepend.  This entails the following
969    additional changes:
970    
971      - CM.makedepend has been dropped.
972    
973      - CM manual has been updated.
974    
975      - TOOLS signature and API have been changed.
976    
977    ----------------------------------------------------------------------
978    Name: Allen Leung
979    Date: 2000/05/10 21:17 EDT
980    Tag: leunga-20000510-moby-c--ssa
981    Description:
982    
983      Various bug fixes and new features for C--, Moby and MLRISC optimizations.
984    None of these affect SML/NJ.
985    
986    1. Register Allocation
987    
988        a. A new ra spilling module (ra/ra-spill-with-renaming) is implemented.
989           This module tries to remove local (i.e. basic block level) redundancies
990           during spilling.
991    
992        b. A new framework for performing region based register allocation.
993           Not yet entirely functional.
994    
995    2. X86
996    
997       a. DefUse for POP was missing the stack pointer [found by Lal]
998       b. Reload for CALL was incorrect in X86Spill [found by John]
999       c. Various fixes in X86Spill so that it can be used correctly for
1000          the new spilling module.
1001    
1002    3. SSA/IR
1003    
1004       a. New module ir/dj-dataflow.sml implements elimination based
1005          data flow analysis.
1006    
1007    4. MLRiscGen
1008    
1009       a. Fix for gc type annotation
1010    
1011    5. MDGen
1012    
1013       Various fixes for machine description -> ml code translation.  For ssa
1014       only.
1015    
1016    ----------------------------------------------------------------------
1017    Name: Allen Leung
1018    Date: 2000/05/08 22:17 EDT
1019    Tag: leunga-20000508-labexp
1020    Description:
1021    
1022      Fermin has found a few assembly problems with constant expressions
1023      generated in LabelExp.  Mostly, the problems involve extra parentheses,
1024      which choke on dumb assemblers.  This is his fix.
1025    
1026    ----------------------------------------------------------------------
1027    Name: Dave MacQueen
1028    Date: 2000/04/09 14:00 EDT
1029    Tag: dbm-20000502-Version_110_28
1030    Description:
1031    
1032    1. Updated src/compiler/TopLevel/main/version.sml to version 110.28
1033    
1034    2. Updated config/version to 110.28
1035    
1036    3. Updated config/srcarchiveurl
1037    
1038    3. New boot files!
1039       ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.28/
1040    
1041    ----------------------------------------------------------------------
1042    Name: Matthias Blume
1043    Date: 2000/05/01 19:05:00 JST
1044    Tag: blume-20000501-noweb
1045    Description:
1046    
1047    A new noweb tool has been added.  The existing system is entirely
1048    unaffected by this, but some CM users have asked for renewed noweb
1049    support.  Everything is documented in the CM manual.
1050    
1051    New (plugin) libraries:
1052    
1053       noweb-tool.cm
1054       nw-ext.cm
1055    
1056    ----------------------------------------------------------------------
1057    Name: Dave MacQueen
1058    Date: 2000/04/30 12:40PM EDT
1059    Tag: dbm-20000430-bug_fixes
1060    Description:
1061    
1062    1. Fix for bug 1498
1063       smlnj/src/system/Basis/Implementation/Unsafe/object.sig
1064       smlnj/src/system/Basis/Implementation/Unsafe/object.sml
1065         added toRealArray function
1066       smlnj/src/compiler/MiscUtil/print/ppobj.sml
1067         added check for tag Obj.RealArray to array printing case in ppObj
1068    
1069    2. Fix for bug 1510
1070       smlnj/src/compiler/Semant/types/typesutil.sml
1071         fixed definition of dummyargs (used by equalTycon) so that
1072         dummy args are distinct types
1073    
1074    ----------------------------------------------------------------------
1075    Name: Matthias Blume
1076    Date: 2000/04/30 01:00:00 JST
1077    Tag: blume-20000430-versions
1078    Description:
1079    
1080    1. CM version numbering added.  This is an implementation of Lal's
1081       proposal for adding version numbers and version checking to .cm
1082       files.  Lal said that his proposal was just that -- a proposal.
1083       For the time being I went ahead and implemented it so that people
1084       can comment on it.  Everything is completely backward-compatible
1085       (except for the stable library format, i.e., new bootfiles!).
1086    
1087       As usual, see the CM manual for details.
1088    
1089    2. An alternative syntax for anchored paths has been implemented.
1090       Dave has recently voiced the same concerns that I had when I did
1091       this, so there should be some support.  My take is that eventually
1092       I will let support for the current syntax (where anchors are
1093       "implicit") fade out in favor of the new, explicit syntax.
1094       In order to be backward-compatible, both old and new syntax are
1095       currently supported.
1096    
1097       Again, see the CM manual for details.
1098    
1099    3. Parallel make is trying to be slightly smarter:  When the master
1100       process finds a "bottleneck", i.e., when there is only one
1101       compilation unit that can be compiled and everybody else is
1102       waiting on it, then it will simply compile it directly instead
1103       of clumsily telling one of the slaves to do it.
1104    
1105    4. Support for "unsharing" added.  This is necessary in order to be
1106       able to have two different versions of the same library running
1107       at the same time (e.g., for trying out a new MLRISC while still
1108       having the old MLRISC linked into the current compiler, etc.)
1109       See the CM manual.
1110    
1111    5. Simple "makedepend" functionality added for generating Makefile
1112       dependency information.  (This is rather crude at the moment.
1113       Expect some changes here in the future.)
1114    
1115    6. ".fun" added as a recognized suffix for ML files. Also documented
1116       explicitly in the manual that the fallback behavior (unknown suffix
1117       -> ML file) is not an official feature!
1118    
1119    7. Small changes to the pickler for stable libraries.
1120    
1121    8. Several internal changes to CM (for cleanup/improvement).
1122    
1123    
1124    !!!! NEW BINFILES !!!!
1125    
1126    ----------------------------------------------------------------------
1127    Name: Matthias Blume
1128    Date: 2000/04/28 17:30:00 JST
1129    Tag: blume-20000428-pathconfig
1130    Description:
1131    
1132    1. I changed config/install.sh to remove duplicate entries from the
1133       lib/pathconfig file at the end.  Moreover, the final version of
1134       lib/pathconfig is sorted alphabetically.  The same (sorting) is done
1135       in src/system/installml.
1136    
1137    2. The config/install.sh script now consistently uses relative
1138       pathnames in lib/pathconfig whenever the anchor is in the lib
1139       directory.  (So far this was true for the libraries that come
1140       pre-compiled and bundled as part of the bootfiles but not for
1141       libraries that are compiled by the script itself.)
1142    
1143    ----------------------------------------------------------------------
1144    Name: Matthias Blume
1145    Date: 2000/04/26 13:10:00 JST
1146    Tag: blume-20000426-fun_suffix
1147    Description:
1148    
1149    Added ".fun" as a recognized file name suffix (for ML code).
1150    
1151    ----------------------------------------------------------------------
1152    Name: Allen Leung
1153    Date: 2000/04/25 17:00:00 EST
1154    Tag: leunga-20000425-alpha-ra
1155    Description:
1156    
1157    1. Alpha
1158    
1159        PSEUDOARITH was missing in AlphaRewrite.  This causes an endless loop
1160    in C--.
1161    
1162    2. RA
1163    
1164       Added a flag "ra-dump-size" to print out the size of the flowgraph
1165       and the interference graph.
1166    
1167    ----------------------------------------------------------------------
1168    Name: Dave MacQueen
1169    Date: 2000/04/25/
1170    Tag: dbm-20000425-mlyacc_doc_examples
1171    Description:
1172      Updated mlyacc.tex sections 5 and 7 for SML '97 and CM.
1173      Updated all three examples in src/ml-yacc/examples to run
1174      under 110.* using CM.make.
1175    
1176    ----------------------------------------------------------------------
1177    Name: Allen Leung
1178    Date: 2000/04/20 23:04:00 EST
1179    Tag: leunga-20000420-ssa-c---stuff
1180    Description:
1181    
1182      This update synchronizes my repository with Yale's.  Most of these
1183    changes, however, do not affect SML/NJ at all (the RA is an exception).
1184    
1185    1. Register Allocator
1186    
1187       a. An improvement in the interference graph construction:
1188          Given a copy
1189    
1190                s <- t
1191    
1192          no interference edge between s and t is added for this definition of s.
1193    
1194       b. I've added two new spill heuristic modules that Fermin and I developed
1195          (in the new library RA.cm). These are unused in SML/NJ but maybe
1196          useful for others (Moby?)
1197    
1198    2. X86
1199    
1200       a. Various fixes in the backend provided by Fermin [C--] and Lal.
1201    
1202    3. Alpha
1203    
1204       a. Added the BSR instruction and code generation that goes with it [C--]
1205       b. Other fixes too numerous to recount provided by Fermin [C--]
1206    
1207    4. Regmaps
1208    
1209       a. The regmaps are not initialized with the identity physical bindings
1210          at creation time.  This is unneeded.
1211    
1212    5. MLRISC Optimizations
1213    
1214       a. The DJ-Graph module can now compute the iterated dominance frontiers
1215          intersects with liveness incrementally in linear time! Woohoo!
1216          This is now used in my new SSA construction algorithm.
1217    
1218       b. THe branch reorganization module is now smarter about linear chains of
1219          basic blocks.
1220    
1221    
1222    ----------------------------------------------------------------------
1223    Name: Matthias Blume
1224    Date: 2000/04/12 13:52:00 JST
1225    Tag: blume_main_v110p27_1
1226    Description:
1227    
1228    Changed install.sh script to handle archive files without version number
1229    and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
1230    name of the boot file archive.
1231    
1232    ----------------------------------------------------------------------
1233    Name: Dave MacQueen
1234    Date: 2000/04/09 14:00 EDT
1235    Tag: dbm-20000410-Version_110_27
1236    Description:
1237    
1238    1. Updated src/compiler/TopLevel/main/version.sml to version 110.27
1239    
1240    2. Updated src/config/version to 110.27
1241    
1242    3. New boot files!
1243    
1244    ----------------------------------------------------------------------
1245    Name: Allen Leung
1246    Date: 2000/04/09 19:09:00 EST
1247    Tag: leunga-20000409-misc
1248    Description:
1249    
1250    1.  Yet another fix for x86 assembly for idivl, imull, mull and friends.
1251    
1252    2.  Miscellaneous improvements to MLRISC (unused in sml/nj)
1253    
1254    ----------------------------------------------------------------------
1255    Name: Stefan
1256    Date: 2000/04/07 10:00:00 EDT
1257    Tag: monnier-20000406-branch-handling
1258    Description:
1259    
1260    Improved handling of branches (mostly those generated from
1261    polymorphic equality), removed switchoff and changed the
1262    default optimization settings (more cpsopt and less flintopt).
1263    
1264    ----------------------------------------------------------------------
1265    Name: Allen Leung
1266    Date: 2000/04/06 01:30:00 EST
1267    Tag: leunga-20000406-peephole-x86-SSA-2
1268    Description:
1269    
1270       Forgot a few files.
1271    
1272    ----------------------------------------------------------------------
1273    Name: Allen Leung
1274    Date: 2000/04/06 00:36:00 EST
1275    Tag: leunga-20000406-peephole-x86-SSA
1276    Description:
1277    
1278    1.  New Peephole code
1279    
1280    2.  Minor improvement to X86 instruction selection
1281    
1282    3.  Various fixes to SSA and machine description -> code translator
1283    
1284    ----------------------------------------------------------------------
1285    Name: Matthias Blume
1286    Date: 2000/04/05 12:30:00 JST
1287    Tag: blume_main_v110p26p2_3
1288    Description:
1289    
1290    This update just merges three minor cosmetic updates to CM's sources
1291    to get ready for the 110.27 code freeze on Friday.  No functionality
1292    has changed.
1293    
1294    ----------------------------------------------------------------------
1295    Name: Allen Leung
1296    Date: 2000/04/04 19:39:00 EST
1297    Tag: leunga-20000404-x86-asm
1298    Description:
1299    
1300    1.  Fixed a problem in X86 assembly.
1301    
1302        Things like
1303    
1304           jmp %eax
1305           jmp (%eax)
1306    
1307        should be output as
1308    
1309           jmp *%eax
1310           jmp *(%eax)
1311    
1312    2.  Assembly output
1313    
1314          Added a new flag
1315    
1316              "asm-indent-copies" (default to false)
1317    
1318          When this flag is on, parallel copies will be indented an extra level.
1319    
1320    ----------------------------------------------------------------------
1321    Name: Allen Leung
1322    Date: 2000/04/04 03:18:00 EST
1323    Tag: leunga-20000404-C--Moby
1324    Description:
1325    
1326        All of these fixes are related to C--, Moby, and my own optimization
1327        stuff; so they shouldn't affect SML/NJ.
1328    
1329    1.  X86
1330    
1331        Various fixes related floating point, and extensions.
1332    
1333    2.  Alpha
1334    
1335        Some extra patterns related to loads with signed/zero extension
1336        provided by Fermin.
1337    
1338    3.  Assembly
1339    
1340        When generating assembly, resolve the value of client defined constants,
1341        instead of generating symbolic values.  This is controlled by the
1342        new flag "asm-resolve-constants", which is default to true.
1343    
1344    4.  Machine Descriptions
1345    
1346        a. The precedence parser was slightly broken when parsing infixr symbols.
1347        b. The type generalizing code had the bound variables reversed, resulting
1348           in a problem during arity raising.
1349        c. Various fixes in machine descriptions.
1350    
1351    ----------------------------------------------------------------------
1352    Name: Matthias Blume
1353    Date: 2000/04/03 16:05:00 JST
1354    Tag: blume_main_v110p26p2_2
1355    Description:
1356    
1357    I eliminated coreEnv from compInfo.  Access to the "Core" structure is
1358    now done via the ordinary static environment that is context to each
1359    compilation unit.
1360    
1361    To this end, I arranged that instead of "structure Core" as "structure
1362    _Core" is bound in the pervasive environment.  Core access is done via
1363    _Core (which can never be accidentally rebound because _Core is not a
1364    legal surface-syntax symbol).
1365    
1366    The current solution is much cleaner because the core environment is
1367    now simply part of the pervasive environment which is part of every
1368    compilation unit's context anyway.  In particular, this eliminates all
1369    special-case handling that was necessary until now in order to deal
1370    with dynamic and symbolic parts of the core environment.
1371    
1372    Remaining hackery (to bind the "magic" symbol _Core) is localized in the
1373    compilation manager's bootstrap compiler (actually: in the "init group"
1374    handling).  See the comments in src/system/smlnj/init/init.cmi for
1375    more details.
1376    
1377    I also tried to track down all mentions of "Core" (as string argument
1378    to Symbol.strSymbol) in the compiler and replaced them with a
1379    reference to the new CoreSym.coreSym.  Seems cleaner since the actual
1380    name appears in one place only.
1381    
1382    Binfile and bootfile format have not changed, but the switchover from
1383    the old "init.cmi" to the new one is a bit tricky, so I supplied new
1384    bootfiles anyway.
1385    
1386    ----------------------------------------------------------------------
1387    Name: Allen Leung
1388    Date: 2000/04/02 21:17:00 EST
1389    Tag: leunga-20000402-mltree
1390    Description:
1391    
1392       1. Renamed the constructor CALL in MLTREE by popular demand.
1393       2. Added a bunch of files from my repository.  These are currently
1394          used by other non-SMLNJ backends.
1395    
1396    ----------------------------------------------------------------------
1397    Name: Allen Leung
1398    Date: 2000/03/31 21:15:00 EST
1399    Tag: leunga-20000331-aliasing
1400    Description:
1401    
1402    This update contains a rewritten (and hopefully more correct) module
1403    for extracting aliasing information from CPS.
1404    
1405       To turn on this feature:
1406    
1407            Compiler.Control.CG.memDisambiguate := true
1408    
1409       To pretty print the region information with assembly
1410    
1411           Compiler.Control.MLRISC.getFlag "asm-show-region" := true;
1412    
1413       To control how many levels of aliasing information are printed, use:
1414    
1415           Compiler.Control.MLRISC.getInt "points-to-show-level" := n
1416    
1417       The default of n is 3.
1418    
1419    ----------------------------------------------------------------------
1420  Name: David MacQueen  Name: David MacQueen
1421  Date: 2000/03/31 11:15:00 EST  Date: 2000/03/31 11:15:00 EST
1422  Tag: dbm-20000331-runtime_fix  Tag: dbm-20000331-runtime_fix
# Line 81  Line 1485 
1485     (specified in the .cm file at each instance where the tool's class is     (specified in the .cm file at each instance where the tool's class is
1486     used).     used).
1487    
1488     This was done to accomodate the new "make" and "shell" tools which     This was done to accommodate the new "make" and "shell" tools which
1489     facilitate fairly seemless hookup to portions of code managed using     facilitate fairly seamless hookup to portions of code managed using
1490     Makefiles or Shell scripts.     Makefiles or Shell scripts.
1491    
1492     There are no classes "shared" or "private" anymore.  Instead, the     There are no classes "shared" or "private" anymore.  Instead, the
# Line 94  Line 1498 
1498    
1499     All existing tools are described in the CM manual.     All existing tools are described in the CM manual.
1500    
1501     - Slightly better error handling.  (CM now surpresses many followup     - Slightly better error handling.  (CM now suppresses many followup
1502     error messages that tended to be more annoying than helpful.)     error messages that tended to be more annoying than helpful.)
1503    
1504  2. Major changes to the compiler's static environment data structures.  2. Major changes to the compiler's static environment data structures.
# Line 228  Line 1632 
1632    
1633       I've changed andl to testl in the floating point test sequence       I've changed andl to testl in the floating point test sequence
1634       whenever appropriate.  The Intel optimization guide states that       whenever appropriate.  The Intel optimization guide states that
1635       testl is perferable to andl.       testl is preferable to andl.
1636    
1637  7. RA (x86 only)  7. RA (x86 only)
1638    
# Line 410  Line 1814 
1814    
1815  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
1816  additional argument called "template" which is an optional string that  additional argument called "template" which is an optional string that
1817  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
1818  explanation.  explanation.
1819    
1820  2. A special-purpose tool can be "regisitered" by simply dropping the  2. A special-purpose tool can be "registered" by simply dropping the
1821  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
1822  directory where the .cm file lives that uses this tool.  (The  directory where the .cm file lives that uses this tool.  (The
1823  behavior/misfeature until now was to look for the tool description  behavior/misfeature until now was to look for the tool description
# Line 457  Line 1861 
1861  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
1862  <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,
1863  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
1864  perhaps got accidentially killed).  In this case, fixpt will quickly  perhaps got accidentally killed).  In this case, fixpt will quickly
1865  move through what exists before continuing where it left off earlier,  move through what exists before continuing where it left off earlier,
1866  and, thus, saves a lot of time.  and, thus, saves a lot of time.
1867    
# Line 507  Line 1911 
1911    it from that remote directory.    it from that remote directory.
1912    This should simplify installation further:  For machines that have    This should simplify installation further:  For machines that have
1913    access to the internet, just fetch <version>-config.tgz, unpack it,    access to the internet, just fetch <version>-config.tgz, unpack it,
1914    edit config/targets, and go (run config/install.sh).  The scipt will    edit config/targets, and go (run config/install.sh).  The script will
1915    fetch everything else that it might need all by itself.    fetch everything else that it might need all by itself.
1916    
1917    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.589  
changed lines
  Added in v.713

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