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 647, Tue May 16 02:53:02 2000 UTC revision 819, Mon May 7 18:39:08 2001 UTC
# Line 12  Line 12 
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14  ----------------------------------------------------------------------  ----------------------------------------------------------------------
15    Name: Matthias Blume
16    Date: 2001/05/07 14:40:00 EDT
17    Tag: blume-20010507-proxies
18    Description:
19    
20    I made into "proxy libraries" all libraries that qualify for such a
21    change.  (A qualifying library is a library that has another library or
22    groups as its sole member and repeats that member's export list
23    verbatim.  A proxy library avoids this repetition by omitting its export
24    list, effectively inheriting the list that its (only) member exports.
25    See the CM manual for more explanation.)
26    The main effect is that explicit export lists for these libraries
27    do not have to be kepts in sync, making maintenance a bit easier.
28    
29    I also added copyright notices to many .cm-files.
30    
31    Last but not least, I made a new set of bootfiles.
32    
33    ----------------------------------------------------------------------
34    Name: Matthias Blume
35    Date: 2001/05/04 17:00:00 EDT
36    Tag: blume-20010504-cm-lsplit
37    Description:
38    
39    0. John merged pending changes to $/smlnj-lib.cm
40    
41    1. Allen's previous change accidentally backed out of one of Lal's
42       earlier changes.  I undid this mistake (re-introducing Lal's change).
43    
44    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
45       within the compiler where applicable.  There is some code simplification
46       because of that.
47    
48    3. The "split" phase (in FLINT) is now part of the default list of phases.
49       Compiler.Control.LambdaSplitting.* can be used to globally control the
50       lambda-splitting (cross-module-inlining) engine.  In addition to that,
51       it can now also be controlled on a per-source basis: CM has been taught
52       a new tool parameter applicable to ML source files.
53    
54       - To turn lambda-splitting off completely:
55            local open Compiler.Control.LambdaSplitting in
56                val _ = set Off
57            end
58       - To make "no lambda-splitting" the global default (but allow per-source
59         overriding); this is the initial setting:
60            local open Compiler.Control.LambdaSplitting in
61                val _ = set (Default NONE)
62            end
63       - To make "lambda-splitting with aggressiveness a" the global default
64         (and allow per-source overriding):
65            local open Compiler.Control.LambdaSplitting in
66                val _ = set (Default (SOME a))
67            end
68    
69       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
70         write (in the respective .cm-file):
71            a.sml (lambdasplitting:off)
72       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
73            a.sml (lambdasplitting:on)
74       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
75         <a> is a decimal non-negative integer):
76            a.sml (lambdasplitting:<a>)
77       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
78            a.sml (lambdasplitting:infinity)
79       - To use the global default for a.sml:
80            a.sml (lambdasplitting:default)
81         or simply
82            a.sml
83    
84    ----------------------------------------------------------------------
85    Name: Allen Leung
86    Date: 2001/05/04 01:57:00 EDT
87    Tag: leunga-20010504-sync
88    Description:
89    
90      MLRISC features.
91    
92      1. Fix to CMPXCHG instructions.
93      2. Changed RA interface to allow annotations in callbacks.
94      3. Added a new method to the stream interface to allow annotations updates.
95    
96    ----------------------------------------------------------------------
97    Name: Matthias Blume
98    Date: 2001/05/01 11:45:00 EDT
99    Tag: blume-20010501-pcedittmp
100    Description:
101    
102    Changed install.sh to use the current working directory instead of
103    /usr/tmp for a temporary file (pcedittmp).  The previous choice
104    of /usr/tmp caused trouble with MacOS X because of file premission
105    problems.
106    
107    ----------------------------------------------------------------------
108    Name: Matthias Blume
109    Date: 2001/04/20 11:10:00 EDT
110    Tag: blume-20010420-inMLflag
111    Description:
112    
113     - added vp_limitPtrMask to vproc-state.h
114       (for use by the raw-C-calls mechanism to implement proper interrupt
115        handling)
116     - made the ML compiler aware of various data-structure offsets so it
117       can generate code for accessing the vp_inML flag and vp_limitPtrMask
118     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
119       raw C-calls
120    
121    ----------------------------------------------------------------------
122    Name: Lal George
123    Date: 2001/04/20 09:15:28 EDT
124    Tag: george-20010420-macosX
125    Description:
126    
127     - Changes to port to Mac OS X; Darwin.
128    
129     - In the process I found that sqrt was broken on the PPC, because the
130       fsqrt instruction is not implemented.
131    
132    ----------------------------------------------------------------------
133    Name: Matthias Blume
134    Date: 2001/04/18 12:45:00 EDT
135    Tag: blume-20010418-ccalls
136    Description:
137    
138     - fixed two off-by-4 errors in the x86-specific c-calls implementation
139       (this bug prevented structure arguments containing pointers from being
140        passed correctly)
141     - changed the raw-C-call code in mlriscGen.sml in such a way that
142       structure arguments are represented as a pointer to the beginning
143       of the structure (instead of having a series of synthesized arguments,
144       one for each structure member)
145    
146     - made makeml script's verbosity level configurable via environment
147       variable (MAKEML_VERBOSITY)
148    
149     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
150       in rawmem-x86.sml; we are now using the real thing
151    
152    ----------------------------------------------------------------------
153    Name: Matthias Blume
154    Date: 2001/03/22 16:25:00 EST
155    Tag: blume-20010322-bootfiles
156    Description:
157    
158    Created a new set of bootfiles (for your automatic installation convenience).
159    
160    ----------------------------------------------------------------------
161    Name: Matthias Blume
162    Date: 2001/03/22 15:10:00 EST
163    Tag: blume-20010322-rawmem-parcm
164    Description:
165    
166    1. All "raw memory access" primitives for the new FFI are implemented now
167       (at least on the x86).
168    2. Some further cleanup of CM's parallel make mechanism.
169    
170    ----------------------------------------------------------------------
171    Name: Matthias Blume
172    Date: 2001/03/19 17:53:00 EST
173    Tag: blume-20010319-parallel
174    Description:
175    
176    Parallel make (using compile servers) now works again.
177    
178    To this end, CM.stabilize and CMB.make have been modified to work in
179    two passes when compile servers are attached:
180       1. Compile everything, do not perform stabilization; this pass
181          uses compile servers
182       2. Stabilize everything; this pass does not use compile servers
183    If there are no compile servers, the two passes are combined into one
184    (as before).  Splitting the passes increases the inherent parallelism
185    in the dependency graph because the entire graph including all
186    libraries is available at the same time.  This, in turn, improves
187    server utilization.  The downside is that the master process will
188    have to do some extra work after compilation is done (because for
189    technical reasons it must re-read all the binfiles during stabilization).
190    
191    ----------------------------------------------------------------------
192    Name: Matthias Blume
193    Date: 2001/03/16 12:22:00 EST
194    Tag: blume-20010316-bootfiles
195    Description:
196    
197    Created a new set of bootfiles (for your automatic installation convenience).
198    
199    ----------------------------------------------------------------------
200    Name: Matthias Blume
201    Date: 2001/03/16 11:00:00 EST
202    Tag: blume-20010316-MLTREE-fixup
203    Description:
204    
205    This is a minor fixup for an (untagged) earlier commit by Allen.
206    (A file was missing).
207    
208    ----------------------------------------------------------------------
209    Name: Allen Leung
210    Date: Mon Mar  5 18:54:57 EST 2001
211    Tag: leunga-20010305-cut-support
212    
213    1. New support for alternative control-flow in MLTREE.
214       Currently we support
215    
216          FLOW_TO(CALL ...., [k1,...,kn])
217    
218       This is needed for 'cuts to' in C-- and try/handle-like constructs
219       in Moby
220    
221       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
222    
223    2. Register Allocator
224    
225       Changes in interface [from Fermin, John]
226    
227    3. Alpha 8-bit SLL support [Fermin]
228    
229    4. All architectures
230    
231       A new module (ClusterExpandCopies) for expanding parallel copies.
232    
233    ----------------------------------------------------------------------
234    Name: Allen Leung
235    Date: 2001/02/27 23:07:00 EST
236    Tag: leunga-20010227-minor-stuff
237    
238    1. Alpha bug fix for CMOVNE
239    2. Handle mltree COND(..,FCMP ...,...)
240    3. Bug fix in simplifier
241    
242    ----------------------------------------------------------------------
243    Name: Matthias Blume
244    Date: 2001/01/30 17:50:00 EST
245    Tag: blume-20010130-sync
246    Description:
247    
248    This is just a minor update to sync my devel branch with the main brach.
249    The only visible change is the addition of some README files.
250    
251    ----------------------------------------------------------------------
252    Name: Matthias Blume
253    Date: 2001/01/12 23:30:00 JST
254    Tag: blume-20010112-bootfiles
255    Description:
256    
257    Made a new set of bootfiles that goes with the current state of the
258    repository.
259    
260    ----------------------------------------------------------------------
261    Name: Matthias Blume
262    Date: 2001/01/12 21:20:00 JST
263    Tag: blume-20010112-sync
264    Description:
265    
266    I am just flushing out some minor changes that had accumulated in
267    my private branch in order to sync with the main tree.  (This is
268    mainly because I had CVS trouble when trying to merge _into_ my
269    private branch.)
270    
271    Most people should be completely unaffected by this.
272    
273    ----------------------------------------------------------------------
274    Name: Allen Leung
275    Date: Thu Jan 11 21:03:00 EST 2001
276    Tag: leunga-20010111-labexp=mltree
277    Description:
278    
279    1.  Removed the type LabelExp and replace it by MLTree.
280    2.  Rewritten mltree-simplify with the pattern matcher tool.
281    3.  There were some bugs in alpha code generator which would break
282        64-bit code generation.
283    4.  Redo the tools to generate code with the
284    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
285        are now generated by perl scripts.
286    
287    ----------------------------------------------------------------------
288    Name: Matthias Blume
289    Date: 2001/01/10 21:55:00 JST
290    Tag: blume-20010110-rcc
291    Description:
292    
293    The RCC stuff now seems to work (but only on the x86).
294    This required hacking of the c-calls interface (and -implementation) in
295    MLRISC.
296    
297    Normal compiler users should be unaffected.
298    
299    ----------------------------------------------------------------------
300    Name: Matthias Blume
301    Date: 2001/01/09 01:20:00 JST
302    Tag: blume-20010109-rcc
303    Description:
304    
305    This is a fairly big patch, flushing out a large number of pending
306    changes that I made to my development copy over the last couple of days.
307    
308    Of practical relevance at this moment is a workaround for a pickling
309    bug that Allen ran into the other day.  The cause of the bug itself is
310    still unknown and it might be hard to fix it properly, but the
311    workaround has some merits of its own (namely somewhat reducing pickling
312    overhead for certain libraries).  Therefore, I think this solution should
313    be satisfactory at this time.
314    
315    The rest of the changes (i.e., the vast majority) has to do with my
316    ongoing efforts of providing direct support for C function calls from
317    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
318    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
319    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
320    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
321    handle RCC.
322    
323    The last part (the changes to mlriscGen.sml) are still known to be
324    wrong on the x86 and not implemented on all other architectures.  But
325    the infrastructure is in place. I had to change a few functor
326    signatures in the backend to be able to route the CCalls interface
327    from MLRISC there, and I had to specialize the mltree type (on the
328    x86) to include the necessary extensions. (The extensions themselves
329    were already there and redy to go in MLRISC/x86).
330    
331    Everything should be very happy as soon as someone helps me with
332    mlriscGen.sml...
333    
334    In any case, nothing of this should matter to anyone as long as the
335    new primop is not being used (which is going to be the case unless you
336    find it where I hid it :). The rest of the compiler is completely
337    unaffected.
338    
339    ----------------------------------------------------------------------
340    Name: Matthias Blume
341    Date: 2001/01/05 00:30:00 JST
342    Tag: blume-20010105-primops
343    Description:
344    
345    Added some experimental support for work that I am doing right now.
346    These changes mostly concern added primops, but there is also a new
347    experimental C library in the runtime system (but currently not enabled
348    anywhere except on Linux/X86).
349    
350    In the course of adding primops (and playing with them), I discovered that
351    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
352    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
353    To recover, I made type information in INL_PRIM mandatory and changed
354    prim.sml as well as built-in.sml accordingly.  The InLine structure now
355    has complete, correct type information (i.e., no bottom types).
356    
357    Since all these changes mean that we need new binfiles, I also bumped the
358    version number to 110.32.1.
359    
360    ----------------------------------------------------------------------
361    Name: Matthias Blume
362    Date: 2000/12/30 22:10:00 JST
363    Tag: blume-20001230-various
364    Description:
365    
366    Added proxy libraries for MLRISC and let MLRISC libraries refer
367    to each other using path anchors.  (See CM manual for explanation.)
368    
369    Updated CM documentation.
370    
371    Fixed some bugs in CM.
372    
373    Implemented "proxy" libraries (= syntactic sugar for CM).
374    
375    Added "-quiet" option to makeml and changed runtime system accordingly.
376    
377    Added cleanup handler for exportML to reset timers and compiler stats.
378    
379    ----------------------------------------------------------------------
380    Name: Lal George
381    Date: 2000/12/22 22:22:58 EST 2000
382    Tag: Release_110_32
383    Description:
384    
385            Infinite precision used throughout MLRISC.
386            see MLRISC/mltree/machine-int.sig
387    
388    ----------------------------------------------------------------------
389    Name: Matthias Blume
390    Date: 2000/12/22 23:16:00 JST
391    Tag: blume-20001222-warn
392    Description:
393    
394    Corrected wording and formatting of some CM warning message which I
395    broke in my previous patch.
396    
397    ----------------------------------------------------------------------
398    Name: Matthias Blume
399    Date: 2000/12/22 21:20:00 JST
400    Tag: blume-20001222-anchorenv
401    Description:
402    
403    Fixed CM's handling of anchor environments in connection with CMB.make.
404    
405    ----------------------------------------------------------------------
406    Name: Matthias Blume
407    Date: 2000/12/22 13:15:00 JST
408    Tag: blume-20001222-cleanup
409    Description:
410    
411    Removed src/cm/ffi which does not (and did not) belong here.
412    
413    ----------------------------------------------------------------------
414    Name: Matthias Blume
415    Date: 2000/12/21 23:55:00 JST
416    Tag: blume-20001221-exn
417    Description:
418    
419    Probably most important: CM no longer silently swallows all exceptions
420    in the compiler.
421    Plus: some other minor CM changes.  For example, CM now reports some
422    sizes for generated binfiles (code, data, envpickle, lambdapickle).
423    
424    ----------------------------------------------------------------------
425    Name: Matthias Blume
426    Date: 2000/12/15 00:01:05 JST
427    Tag: blume-20001215-dirtool
428    Description:
429    
430    - "dir" tool added.
431    - improvements and cleanup to Tools structure
432    - documentation updates
433    
434    ----------------------------------------------------------------------
435    Name: Allen Leung
436    Date: Thu Dec 14 03:45:24 EST 2000
437    Description:
438    Tag:  leunga-20001214-int-inf
439    Description:
440    
441       In IntInf, added these standard functions, which are missing from our
442    implementation:
443    
444        andb : int * int -> int
445        xorb : int * int -> int
446        orb  : int * int -> int
447        notb : int -> int
448         <<   : int * word -> int
449        ~>>  : int * word -> int
450    
451       Not tested, I hope they are correct.
452    
453    ----------------------------------------------------------------------
454    Name: Allen Leung
455    Date: Fri Dec  8 19:23:26 EST 2000
456    Description:
457    Tag:  leunga-20001208-nowhere
458    Description:
459    
460      Slight improvements to the 'nowhere' tool to handle OR-patterns,
461    to generate better error messages etc.  Plus a brief manual.
462    
463    ----------------------------------------------------------------------
464    Name: Lal George
465    Date: 2000/12/08 09:54:02 EST 2000
466    Tag: Release_110_31
467    Description:
468    
469    - Version 110.31
470    ----------------------------------------------------------------------
471    Name: Allen Leung
472    Date: Thu Dec  7 22:01:04 EST 2000
473    Tag:  leunga-20001207-cell-monster-hack
474    Description:
475    
476    Major MLRISC internal changes.  Affect all clients.
477    Summary:
478    
479    1.  Type CELLS.cell = int is now replaced by a datatype.
480        As a result, the old regmap is now gone.  Almost all interfaces
481        in MLRISC change as a consequence.
482    
483    2.  A new brand version of machine description tool (v3.0) that generates
484        modules expecting the new interface.  The old version is removed.
485    
486    3.  The RA interface has been further abstracted into two new functors.
487        RISC_RA and X86RA.  These functors have much simpler interfaces.
488        [See also directory MLRISC/demo.]
489    
490    4.  Some other new source->source code generation tools are available:
491    
492        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
493        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
494           I use this tool to generate the peephole optimizers---with the new
495           cell type changes, peephole rules are becoming difficult to write
496           without conditional pattern matching.
497    
498    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
499        cover the entire MLRISC source tree so many things broke.
500    
501    6.  CM files have been moved to the subdirectory MLRISC/cm.
502        They are moved because there are a lot of them and they clutter up the
503        root dir.
504    
505    7.  More detailed documentation to come...
506    
507        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
508        a makeml -rebuild first.  This is because of other other
509        changes that Matthias has made (see below).
510    
511    
512    ----------------------------------------------------------------------
513    Name: Matthias Blume
514    Date: 2000/11/30 23:12:00 JST
515    Tag: blume-20001130-filereorg
516    Description:
517    
518    Some manual updates and some file reorganizations in CM.
519    
520    ----------------------------------------------------------------------
521    Name: Matthias Blume
522    Date: 2000/11/24 17:45:00 JST
523    Tag: blume-20001124-link
524    Description:
525    
526    Drastically improved link traversal code for the case that the dynamic
527    value was already loaded at bootstrap time.  As a result, CM and CMB
528    now both load blazingly fast -- even on a very slow machine.  Also,
529    memory consumption has been further reduced by this.
530    
531    Warning: The format of the PIDMAP file has changed.  THerefore, to
532    bootstrap you have to do this:
533    
534    1. Run CMB.make
535    2. Make a symbolic link for the boot directory:
536         ln -s sml.boot.ARCH-OS xxx
537    3. "Rebuild" the boot directory:
538         ./makeml -boot xxx -rebuild sml ; rm xxx
539    4. Boot normally:
540          ./makeml
541    
542    ----------------------------------------------------------------------
543    Name: Matthias Blume
544    Date: 2000/11/21 21:20:00 JST
545    Tag: blume-20001121-tools
546    Description:
547    
548    Continued hacking on autoloading problem -- with success this time.
549    Also changed tool-plugin mechanism.  See new CM manual.
550    
551    ----------------------------------------------------------------------
552    Name: Matthias Blume
553    Date: 2000/11/19 14:30:00 JST
554    Tag:  blume-20001119-autoload
555    Description:
556    
557    Some hacking to make autoloading faster.  Success for CMB, no success
558    so far for CM.  There is a reduced structure CM' that autoloads faster.
559    (This is a temporary, non-documented hack to be eliminated again when
560    the general problem is solved.)
561    
562    ----------------------------------------------------------------------
563    Name: Matthias Blume
564    Date: 2000/11/17 14:10:00 JST
565    Tag: blume-20001117-pickle-lib
566    Description:
567    
568    1. Eliminated comp-lib.cm
569    2. Made pickle-lib.cm
570    3. Eliminated all uses of intset.sml (from comp-lib.cm)
571    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
572       equivalent constructs from smlnj-lib.cm (INtHashTable).
573    5. Point 4. also goes for those uses of intmap.* in MLRISC.
574       Duplicated intmap modules thrown out.
575    6. Hunted down all duplicated SCC code and replaced it with
576       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
577    7. Rewrote Feedback module.
578    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
579       should be thrown out and equivalent modules from smlnj-lib.cm
580       should be used (IntRedBlackSet, IntListSet, ...).
581    
582    Confirmed that compiler compiles to fixpoint.
583    
584    ----------------------------------------------------------------------
585    Name: Allen Leung
586    Date: 2000/11/10 18:00:00
587    Tag: leunga-20001110-new-x86-fp
588    
589    A new x86 floating point code generator has been added.
590    By default this is turned off.  To turn this on, do:
591    
592        CM.autoload "$smlnj/compiler.cm";
593        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
594    
595    Changes:
596    
597    1.  Changed FTAN to FPTAN so that the assembly output is correct.
598    2.  Changed the extension callback for FTANGENT to generate:
599    
600              fptan
601              fstp  %st(0)
602        instead of
603              fptan
604              fstpl ftempmem
605    
606    3.  Numerous assembly fixes for x86.
607    
608    5.  Cleaned up the machine code output module x86/x86MC.sml and added
609        support for a whole bunch of instructions and addressing modes:
610    
611          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
612          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
613          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
614          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
615          fxch %st(n)
616          fld %st(n)
617          fst %st(n)
618          fst mem
619          fstp %st(n)
620          fucom %st(n)
621          fucomp %st(n)
622    
623        All these are now generated when the fast fp mode is turned on.
624    
625    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
626    
627    ----------------------------------------------------------------------
628    Name: Matthias Blume
629    Date: 2000/11/09 11:20:00 JST
630    Tag: blume-20001109-scc
631    Description:
632    
633    Eliminated some code duplication:
634    
635    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
636       (Otherwise the functor is useless.)
637    2. Used GraphSCCFn where SCCUtilFun was used previously.
638    3. Got rid of SCCUtilFun (in comp-lib.cm).
639    
640    ----------------------------------------------------------------------
641    Name: Lal George
642    Date: 2000/11/06 09:02:21 EST 2000
643    Tag: Release_110_30
644    Description:
645    
646    - Version 110.30
647    ----------------------------------------------------------------------
648    Name: Matthias Blume
649    Date: 2000/11/04 14:45:00
650    Tag: blume-20001104-mlbuild
651    Description:
652    
653    - Made ml-build faster on startup.
654    - Documentation fixes.
655    
656    ----------------------------------------------------------------------
657    Name: Matthias Blume
658    Date: 2000/11/02 17:00:00 JST
659    Tag: blume-20001102-condcomp
660    Description:
661    
662    - Small tweaks to pickler -- new BOOTFILES!
663    - Version bumped to 110.29.2.
664    - Added conditional compilation facility to init.cmi (see comment there).
665    ----------------------------------------------------------------------
666    Name: Allen Leung
667    Date: 2000/10/23 19:31:00
668    Tag: leunga-20001023-demo-ra
669    
670    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
671    2. Test programs for the graph library updated
672    3. Some new MLRISC demo programs added
673    
674    ----------------------------------------------------------------------
675    Name: Matthias Blume
676    Date: 2000/08/31 22:15:00 JST
677    Tag: blume-20001017-errmsg
678    Description:
679    
680    More error message grief: Where there used to be no messages, there
681    now were some that had bogus error regions.  Fixed.
682    
683    ----------------------------------------------------------------------
684    Name: Matthias Blume
685    Date: 2000/08/31 17:30:00 JST
686    Tag: blume-20001017-v110p29p1
687    Description:
688    
689    I made a version 110.29.1 with new bootfiles.
690    
691    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
692              CM documentation changes and a small bugfix in CM's error reporting.
693    
694    ----------------------------------------------------------------------
695    Name: Lal George
696    Date: 2000/09/27 14:42:35 EDT
697    Tag: george-20000927-nodestatus
698    Description:
699    
700    Changed the type of the nodestatus, so that:
701    
702            SPILLED(~1)             is now SPILLED
703            SPILLED(m) where m>=0   is now MEMREG(m)
704            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
705    
706    ----------------------------------------------------------------------
707    Name: Matthias Blume
708    Date: 2000/09/07 14:45:00 JST
709    Tag: blume-20000907-cmerrmsg
710    Description:
711    
712    Small tweak to CM to avoid getting ML syntax error messages twice.
713    
714    ----------------------------------------------------------------------
715    Name: Matthias Blume
716    Date: 2000/08/31 18:00:00 JST
717    Tag: blume-20000831-cvsbootfiles
718    Description:
719    
720    New URL for boot files (because the 110.29 files on the BL server do
721    now work correctly with my updated install scripts for yacc and lex).
722    
723    ----------------------------------------------------------------------
724    Name: Matthias Blume
725    Date: 2000/08/08 12:33:00 JST
726    Tag: blume-20000808-manual
727    Description:
728    
729    Tiny update to CM manual.
730    
731    ----------------------------------------------------------------------
732    Name: Allen Leung
733    Date: 2000/08/7 19:31:00
734    Tag: leunga-20000807-a-whole-bunch-of-stuff
735    
736      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
737    and Mobdy.
738    
739    1.  x86
740    
741       a.  Fixes to peephole module by John and Dan.
742       b.  Assembly fix to SETcc by Allen.
743       c.  Fix to c-call by John.
744       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
745       e.  Instruction selection optimization to SETcc as suggested by John.
746    
747           For example,
748    
749            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
750    
751           should generate:
752    
753            MOVL a, x
754            SUBL b, x
755            SHRL 31, x
756    
757    2.  IR stuff
758    
759         A bunch of new DJ-graph related algorithms added.  These
760         speed up SSA construction.
761    
762    3.  SSA + Scheduling
763    
764         Added code for SSA and scheduling to the repository
765    
766    ----------------------------------------------------------------------
767    Name: Lal George
768    Date: 2000/07/27 11:53:14 EDT
769    
770    Tag: lal-20000727-linux-ppc
771    Description:
772    
773     Made changes to support Linux PPC.
774     p.s. I have confirmation that the 110.29 boot files work fine.
775    
776    ----------------------------------------------------------------------
777    Name: Matthias Blume
778    Date: 2000/07/27 17:40:00 JST
779    Tag: blume-20000727-scripts
780    Description:
781    
782    !!!! WARNING !!!!
783    You must recompile the runtime system!
784    !!!! WARNING !!!!
785    
786    This is basically another round of script-enhancements:
787    
788    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
789       and undefine CM preprocessor symbols.
790    
791    2. ml-build avoids generating a new heap image if it finds that the
792       existing one is still ok.  (The condition is that no ML file had to
793       be recompiled and all ML files are found to be older that the heap
794       file.)
795    
796       To make this work smoothly, I also hacked the runtime system as
797       well as SMLofNJ.SysInfo to get access to the heap image suffix
798       (.sparc-solaris, ...) that is currently being used.
799    
800       Moreover, the signature of CM.mk_standalone has changed.  See the
801       CM manual.
802    
803    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
804       CM manual for details.)
805    
806    4. More CM manual updates:
807        - all of the above has been documented.
808        - there is now a section describing the (CM-related) command line
809          arguments that are accepted by the "sml" command
810    
811    ----------------------------------------------------------------------
812    Name: Matthias Blume
813    Date: 2000/07/25 16:20:00 JST
814    Tag: blume-20000725-makedepend
815    Description:
816    
817    Added a script called ml-makedepend.  This can be used in makefiles
818    for Unix' make in a way very similar to the "makedepend" command for
819    C.
820    
821    The script internally uses function CM.sources.
822    
823    Synopsis:
824    
825        ml-makedepend [-f makefile] cmfile targetname
826    
827    The default for the makefile is "makefile" (or "Makefile" should
828    "makefile" not exist).
829    
830    ml-makedepend adds a cmfile/targetname-specific section to this
831    makefile (after removing the previous version of this section).  The
832    section contains a single dependency specification with targetname on
833    the LHS (targetname is an arbitrary name), and a list of files derived
834    from the cmfile on the RHS.  Some of the files on the RHS are
835    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
836    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
837    path names.  The makefile writer is responsible for making sure that
838    these variables have correct at the time "make" is invoked.
839    
840    ----------------------------------------------------------------------
841    Name: Matthias Blume
842    Date: 2000/07/22 23:30:00 JST
843    Tag: blume-20000722-urlupdate
844    Description:
845    
846    Changed BOOT and config/srcarchiveurl to point to BL server:
847    
848        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
849    
850    ----------------------------------------------------------------------
851    Name: Matthias Blume
852    Date: 2000/07/18 18:00:00 JST
853    Tag: blume-20000718-Version_110_29
854    Description:
855    
856    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
857    
858    2. Updated config/version to 110.29
859    
860    3. Updated config/srcarchiveurl
861    
862    3. New boot files!
863       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
864    
865    ----------------------------------------------------------------------
866    Name: Matthias Blume
867    Date: 2000/07/11 13:58:00 JST
868    Tag: blume-20000711-doctypo
869    Description:
870    
871    Fixed a few typos in CM manual.
872    
873    ----------------------------------------------------------------------
874    Name: Allen Leung
875    Date: 2000/06/15 00:38:00
876    Tag: leunga-20000704-sparc-x86
877    
878    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
879    2. fix to x86 RET bug [found by Dan Grossman]
880    3. sparc assembly bug fix for ticc instructions [found by Fermin]
881    
882       Affects c-- and moby only
883    
884    ----------------------------------------------------------------------
885    Name: Matthias Blume
886    Date: 2000/07/04 15:26:00
887    Tag: blume-20000704-trigger
888    Description:
889    
890    1. Improvements to CM manual.
891    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
892       of getting a back-trace.  The function, when called, raises an
893       internal exception which explicitly carries the full back-trace history,
894       so it is unaffected by any intervening handle-raise pairs ("trivial"
895       or not).  The interactive loop will print that history once it arrives
896       at top level.
897       Short of having all exceptions implicitly carry the full history, the
898       recommended way of using this facility is:
899         - compile your program with instrumentation "on"
900         - run it, when it raises an exception, look at the history
901         - if the history is "cut off" because of some handler, go and modify
902           your program so that it explicitly calls BTrace.trigger
903         - recompile (still instrumented), and rerun; look at the full history
904    
905    ----------------------------------------------------------------------
906    Name: Matthias Blume
907    Date: 2000/07/03 15:36:00 JST
908    Tag: blume-20000702-manual
909    Description:
910    
911    Small corrections and updates to CM manual.
912    
913    ----------------------------------------------------------------------
914    Name: Matthias Blume
915    Date: 2000/06/29 16:04:00 JST
916    Tag: blume-20000629-yacctool
917    Description:
918    
919    Changes:
920    
921    1. Class "mlyacc" now takes separate arguments to pass options to
922       generated .sml- and .sig-files independently.
923    2. Corresponding CM manual updates.
924    3. BTrace module now also reports call sites.  (However, for loop clusters
925       it only shows from where the cluster was entered.)  There are associated
926       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
927    
928    ----------------------------------------------------------------------
929    Name: Matthias Blume
930    Date: 2000/06/27 16:51:00 JST
931    Tag: blume-20000627-noweb
932    Description:
933    
934    Changes:
935    
936     1. Implemented "subdir" and "witness" options for noweb tool.
937        This caused some slight internal changes in CM's tool implementation.
938     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
939        some remaining issues from earlier path anchor changes.
940     3. Updated CM manual accordingly.
941    
942     4. Changed implementation of back-tracing so that I now consider it
943        ready for prime-time.
944    
945        In particular, you don't have to explicitly trigger the back-trace
946        anymore.  Instead, if you are running BTrace-instrumented code and
947        there is an uncaught exception (regardless of whether or not it was
948        raised in instrumented code), the top-level evalloop will print
949        the back-trace.
950    
951        Features:
952    
953          - Instrumented and uninstrumented code work together seemlessly.
954            (Of course, uninstrumented code is never mentioned in actual
955             back-traces.)
956    
957          - Asymptotic time- and space-complexity of instrumented code is
958            equal to that of uninstrumented code.  (This means that
959            tail-recursion is preserved by the instrumentation phase.)
960    
961          - Modules whose code has been instrumented in different sessions
962            work together without problem.
963    
964          - There is no penalty whatsoever on uninstrumented code.
965    
966          - There is no penalty on "raise" expressions, even in
967            instrumented code.
968    
969        A potential bug (or perhaps it is a feature, too):
970    
971          A back-trace reaches no further than the outermost instrumented
972          non-trivial "raise".  Here, a "trivial" raise is one that is the
973          sole RHS of a "handle" rule.  Thus, back-traces reach trough
974    
975               <exp> handle e => raise e
976    
977          and even
978    
979               <exp> handle Foo => raise Bar
980    
981          and, of course, through
982    
983               <exp> handle Foo => ...
984    
985         if the exception was not Foo.
986    
987         Back-traces always reach right through any un-instrumented code
988         including any of its "handle" expressions, trivial or not.
989    
990       To try this out, do the following:
991    
992         - Erase all existing binfiles for your program.
993           (You may keep binfiles for those modules where you think you
994            definitely don't need back-tracing.)
995         - Turn on back-trace instrumentation:
996              SMLofNJ.Internals.BTrace.mode (SOME true);
997         - Recompile your program.  (I.e., run "CM.make" or "use".)
998         - You may now turn instrumentation off again (if you want):
999              SMLofNJ.Internals.BTrace.mode (SOME false);
1000         - Run your program as usual.  If it raises an exception that
1001           reaches the interactive toplevel, then a back-trace will
1002           automatically be printed.  After that, the toplevel loop
1003           will print the exception history as usual.
1004    
1005    ----------------------------------------------------------------------
1006    Name: Matthias Blume
1007    Date: 2000/06/26 09:56:46 JST
1008    Tag: blume-20000626-setup
1009    Description:
1010    
1011    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
1012          ML code before and after compiling a file (e.g., to set compiler
1013          flags)
1014    
1015    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
1016              - associated changes to btrace.sml (BTrace instrumentation pass)
1017              - cleaner implementation of btimp.sml (BTrace tracing and report
1018                module)
1019    
1020    CM manual: * new path encoding documented
1021               * description of setup-parameter to "sml" added
1022    
1023    The biggest user-visible change to back-tracing is that it is no
1024    longer necessary to compile all traced modules within the same
1025    session.  (This was a real limitation.)
1026    
1027    ----------------------------------------------------------------------
1028    Name: Matthias Blume
1029    Date: 2000/06/24 12:40:00 JST
1030    Tag: blume-20000624-startup
1031    Description:
1032    
1033    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
1034    bit too often -- to put it mildly. :)
1035    
1036    ----------------------------------------------------------------------
1037    Name: Matthias Blume
1038    Date: 2000/06/23 18:20:00 JST
1039    Tag: blume-20000623-btrace
1040    Description:
1041    
1042    This updates adds a backtrace facility to aid programmers in debugging
1043    their programs.  This involves the following changes:
1044    
1045    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
1046       keeping track of the current call stack.  When programs are compiled
1047       in a special mode, the compiler will insert calls to these hooks
1048       into the user program.
1049       "Hook" means that it is possible for different implementations of
1050       back-tracing to register themselves (at different times).
1051    
1052    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
1053       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
1054       It can be turned on using this call:
1055         SMLofNJ.Internals.BTrace.mode (SOME true);
1056       Turning it off again:
1057         SMLofNJ.Internals.BTrace.mode (SOME false);
1058       Querying the current status:
1059         SMLofNJ.Internals.BTrace.mode NONE;
1060       Annotated programs are about twice as big as normal ones, and they
1061       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
1062       where all hooks do nothing).  The slowdown with a plugin that is
1063       actually useful (such as the one supplied by default) is even greater,
1064       but in the case of the default plugin it is still only an constant
1065       factor (amortized).
1066    
1067    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
1068       with a sub-structure BTrace for controlling back-tracing.  In particular,
1069       the above-mentioned function "mode" controls whether the annotation
1070       phase is invoked by the compiler.  Another important function is
1071       "trigger": when called it aborts the current execution and causes
1072       the top-level loop to print a full back-trace.
1073    
1074    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
1075       for back-tracing.  It keeps track of the dynamic call stack and in
1076       addition to that it keeps a partial history at each "level" of that
1077       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
1078       d and b (at separate times, dynamically), then the report will show:
1079    
1080       GOTO   d
1081             /c
1082       GOTO  \b
1083       CALL   a
1084    
1085       This shows that there was an initial non-tail call of a, then a
1086       tail-call to b or c, looping behavior in a cluster of functions that
1087       consist of b and c, and then a goto from that cluster (i.e., either from
1088       b or from c) to d.
1089    
1090       Note that (depending on the user program) the amount of information
1091       that the back-trace module has to keep track of at each level is bounded
1092       by a constant.  Thus, the whole implementation has the same asymptotical
1093       complexity as the original program (both in space and in time).
1094    
1095    5. compiler/TopLevel/interact/evalloop.sml has been modified to
1096       handle the special exception SMLofNJ.Internals.BTrace.BTrace
1097       which is raised by the "trigger" function mentioned above.
1098    
1099    Notes on usage:
1100    
1101    - Annotated code works well together with unannotated code:
1102    Unannotated calls simply do not show up at all in the backtrace.
1103    
1104    - It is not a good idea to let modules that were annotated during
1105    different sessions run at the same time.  This is because the compiler
1106    chooses small integers to identify individual functions, and there
1107    will be clashes if different modules were compiled in separate sessions.
1108    (Nothing will crash, and you will even be told about the clashes, but
1109    back-trace information will in general not be useful.)
1110    
1111    - Back-tracing can be confused by callcc and capture.
1112    
1113    - The only way of getting a back-trace right now is to explicitly
1114    invoke the "trigger" function from your user program.  Eventually, we
1115    should make every exception carry back-trace information (if
1116    available).  But since this creates more overhead at "raise"-time
1117    (similar to the current exnHistory overhead), I have not yet
1118    implemented this.  (The implementation will be rather easy.)  With
1119    exceptions carrying back-trace information, this facility will be even
1120    more useful because users don't need to modify their programs...
1121    
1122    - While it is possible to compile the compiler with back-trace
1123    annotations turned on (I did it to get some confidence in
1124    correctness), you must make absolutely sure that core.sml and
1125    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
1126    be compiled with annotation because there is no core access yet, but
1127    if you compile btimp.sml with annotation, then the system will go into
1128    an infinite recursion and crash.)
1129    Since CM currently does not know about BTrace, the only way to turn
1130    annotations on and off for different modules of the compiler is to
1131    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
1132    this is awkward and clumsy.
1133    
1134    Sample sessions:
1135    
1136    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1137    - SMLofNJ.Internals.BTrace.mode (SOME true);
1138    [autoloading]
1139    [autoloading done]
1140    val it = false : bool
1141    - structure X = struct
1142    -     fun main n = let
1143    -         fun a (x, 0) = d x
1144    -           | a (x, n) = b (x, n - 1)
1145    -         and b (x, n) = c (x, n)
1146    -         and c (x, n) = a (x, n)
1147    -         and d x = e (x, 3)
1148    -         and e (x, 0) = f x
1149    -           | e (x, n) = e (x, n - 1)
1150    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
1151    -           | f n = n * g (n - 1)
1152    -         and g n = a (n, 3)
1153    -     in
1154    -         f n
1155    -     end
1156    - end;
1157    structure X : sig val main : int -> int end
1158    - X.main 3;
1159    *** BACK-TRACE ***
1160    GOTO   stdIn:4.2-13.20: X.main[2].f
1161    GOTO-( stdIn:4.2-13.20: X.main[2].e
1162    GOTO   stdIn:4.2-13.20: X.main[2].d
1163         / stdIn:4.2-13.20: X.main[2].a
1164         | stdIn:4.2-13.20: X.main[2].b
1165    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1166    CALL   stdIn:4.2-13.20: X.main[2].g
1167    GOTO   stdIn:4.2-13.20: X.main[2].f
1168    GOTO-( stdIn:4.2-13.20: X.main[2].e
1169    GOTO   stdIn:4.2-13.20: X.main[2].d
1170         / stdIn:4.2-13.20: X.main[2].a
1171         | stdIn:4.2-13.20: X.main[2].b
1172    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1173    CALL   stdIn:4.2-13.20: X.main[2].g
1174    GOTO   stdIn:4.2-13.20: X.main[2].f
1175    GOTO-( stdIn:4.2-13.20: X.main[2].e
1176    GOTO   stdIn:4.2-13.20: X.main[2].d
1177         / stdIn:4.2-13.20: X.main[2].a
1178         | stdIn:4.2-13.20: X.main[2].b
1179    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1180    CALL   stdIn:4.2-13.20: X.main[2].g
1181    GOTO   stdIn:4.2-13.20: X.main[2].f
1182    CALL   stdIn:2.15-17.4: X.main[2]
1183    -
1184    
1185    (Note that because of a FLINt bug the above code currently does not
1186    compile without BTrace turned on.)
1187    
1188    Here is another example, using my modified Tiger compiler:
1189    
1190    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1191    - SMLofNJ.Internals.BTrace.mode (SOME true);
1192    [autoloading]
1193    [autoloading done]
1194    val it = false : bool
1195    - CM.make "sources.cm";
1196    [autoloading]
1197    ...
1198    [autoloading done]
1199    [scanning sources.cm]
1200    [parsing (sources.cm):parse.sml]
1201    [creating directory CM/SKEL ...]
1202    [parsing (sources.cm):tiger.lex.sml]
1203    ...
1204    [wrote CM/sparc-unix/semant.sml]
1205    [compiling (sources.cm):main.sml]
1206    [wrote CM/sparc-unix/main.sml]
1207    [New bindings added.]
1208    val it = true : bool
1209    - Main.compile ("../testcases/merge.tig", "foo.out");
1210    *** BACK-TRACE ***
1211    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
1212    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1213    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1214    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1215    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1216    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1217    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
1218         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
1219    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
1220    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1221    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
1222    CALL   main.sml:1.18-118.4: Main.compile[2]
1223    -
1224    
1225    ----------------------------------------------------------------------
1226    Name: Matthias Blumen
1227    Date: 2000/06/21 18:00:00 JST
1228    Tag: blume-20000621-manual
1229    Description:
1230    
1231    CM manual update: Path environments documented.
1232    
1233    ----------------------------------------------------------------------
1234    Name: Matthias Blume
1235    Date: 2000/06/19 13:40:00
1236    Tag: blume-20000619-manual
1237    Description:
1238    
1239    CM manual and system/README update.  This only covers the fact that
1240    there are no more implicit anchors.  (Path environments and the "bind"
1241    option to "cm" have yet to be documented.)
1242    
1243    ----------------------------------------------------------------------
1244    Name: Matthias Blume
1245    Date: 2000/06/19 11:05:00 JST
1246    Tag: blume-20000619-chdir-bugfix
1247    Description:
1248    
1249    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
1250    
1251    ----------------------------------------------------------------------
1252    Name: Matthias Blume
1253    Date: 2000/06/18 22:00:10 JST
1254    Tag: blume-20000618-implicit-anchors-really-gone
1255    Description:
1256    
1257    I updates the previous HISTORY entry where I forgot to mention that
1258    implicit anchors are no longer with us.
1259    
1260    The current update also gets rid of the (now useless) controller
1261    CM.Control.implicit_anchors.
1262    
1263    ----------------------------------------------------------------------
1264    Name: Matthias Blume
1265    Date: 2000/06/16 17:30:00 JST
1266    Tag: blume-20000616-anchorenv
1267    Description:
1268    
1269    This patch implements the long anticipated (just kidding :) "anchor
1270    environment" mechanism.  In the course of doing this, I also
1271    re-implemented CM's internal "SrcPath" module from scratch.  The new
1272    one should be more robust in certain boundary cases.  In any case, it
1273    is a lot cleaner than its predecessor (IMHO).
1274    
1275    This time, although there is yet another boot file format change, I
1276    kept the unpickler backward-compatible.  As a result, no new bootfiles
1277    are necessary and bootstrapping is straightforward.  (You cannot read
1278    new bootfiles into an old system, but the other way around is no
1279    problem.)
1280    
1281    Visible changes:
1282    
1283    ** 0. Implicit path anchors (without the leading $-symbol) are no
1284    longer recognized at all. This means that such path names are not
1285    illegal either.  For example, the name basis.cm simply refers to a
1286    local file called "basis.cm" (i.e, the name is an ordinary path
1287    relative to .cm-files directory).  Or, to put it differently, only
1288    names that start with $ are anchored paths.
1289    
1290    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
1291    vanished.
1292    
1293    John (Reppy) had critizised this as soon as I originally proposed and
1294    implemented it, but at that time I did not really deeply believe
1295    him. :) Now I came full-circle because I need the $<singlearc> syntax
1296    in another place where it cannot be seen as an abbreviation for
1297    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
1298    seems to mean (i.e., it "expands" into the corresponding anchor
1299    value).
1300    
1301    However, when paths are used as members in CM description files, it
1302    continues to be true that there must be at least another arc after the
1303    anchor.  This is now enforced separately during semantic analysis
1304    (i.e., from a lexical/syntactical point of view, the notation is ok.)
1305    
1306    ** 2. The "cm" class now accepts an option "bind".  The option's value
1307    is a sub-option list of precisely two items -- one labeled "anchor"
1308    and the other one labeled "value".  As you might expect, "anchor" is
1309    used to specify an anchor name to be bound, and "value" specifies what
1310    the anchor is being bound to.
1311    
1312    The value must be a directory name and can be given in either standard
1313    syntax (including the possibility that it is itself an anchored path)
1314    or native syntax.
1315    
1316    Examples:
1317    
1318       foo.cm (bind:(anchor:bar value:$mystuff/bar))
1319       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
1320    
1321    and so on.
1322    
1323    The meaning of this is that the .cm-file will be processed with an
1324    augmented anchor environment where the given anchor(s) is/are bound to
1325    the given values(s).
1326    
1327    The rationale for having this feature is this: Suppose you are trying
1328    to use two different (already stable) libraries a.cm and b.cm (that
1329    you perhaps didn't write yourself).  Further, suppose each of these
1330    two libraries internally uses its own auxiliary library $aux/lib.cm.
1331    Normally you would now have a problem because the anchor "lib" can not
1332    be bound to more than one value globally.  Therefore, the project that
1333    uses both a.cm and b.cm must locally redirect the anchor to some other
1334    place:
1335    
1336       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
1337       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
1338    
1339    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
1340    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
1341    
1342    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
1343    you when you do so at the time of CM.stabilize).  Therefore, you can
1344    also use an anchored path as the value:
1345    
1346      a.cm (bind:(anchor:lib value:$a-lib))
1347      b.cm (bind:(anchor:lib value:$b-lib))
1348    
1349    Now you can globally configure (using the usual CM.Anchor.anchor or
1350    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
1351    itself is always locally bound, setting it globally is no longer
1352    meaningful or necessary (but it does not hurt either).  In fact, "lib"
1353    can still be used as a global anchor for separate purposes.  As a
1354    matter of fact, one can locally define "lib" in terms of a global
1355    "lib":
1356    
1357      a.cm (bind:(anchor:lib value:$lib/a))
1358      b.cm (bind:(anchor:lib value:$lib/b))
1359    
1360    ** 3: The encoding of path names has changed.  This affects the way
1361    path names are shown in CM's progress report and also the internal
1362    protocol encoding used for parallel make.
1363    
1364    The encoding now uses one or more ':'-separated segments.  Each
1365    segments corresponds to a file that has been specified relative to the
1366    file given by its preceding segment.  The first segment is either
1367    relative to the CWD, absolute, or anchored.  Each segment itself is
1368    basically a Unix pathname; all segments but the first are relative.
1369    
1370    Example:
1371    
1372       $foo/bar/baz.cm:a/b/c.sml
1373    
1374    This path denotes the file bar/a/b/c.sml relative to the directory
1375    denoted by anchor "foo".  Notice that the encoding also includes
1376    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
1377    paths are resolved relative to the .cm-files directory, so baz.cm must
1378    be ignored to get the "real" pathname.
1379    
1380    To make this fact more obvious, CM puts the names of such "virtual
1381    arcs" into parentheses when they appear in progress reports. (No
1382    parentheses will appear in the internal protocol encoding.)  Thus,
1383    what you really see is:
1384    
1385      $foo/bar/(baz.cm):a/b/c.sml
1386    
1387    I find this notation to be much more informative than before.
1388    
1389    Another new feature of the encoding is that special characters
1390    including parentheses, colons, (back)slashes, and white space are
1391    written as \ddd (where ddd is the decimal encoding of the character).
1392    
1393    *** The CM manual still needs to be updated.
1394    
1395    ----------------------------------------------------------------------
1396    Name: Allen Leung
1397    Date: 2000/06/15 00:38:00
1398    Tag: leunga-20000615-x86-peephole
1399    
1400    x86 Peephole fix by Fermin.  Affects c-- and moby only.
1401    
1402    ----------------------------------------------------------------------
1403    Name: Matthias Blume
1404    Date: 2000/06/12 11:40:00
1405    Tag: blume-20000612-parmakefix
1406    Description:
1407    
1408    More cleanup after changing the file naming scheme: This time I
1409    repaired the parallel make mechanism for CMB.make which I broke earlier.
1410    
1411    ----------------------------------------------------------------------
1412    Name: Allen Leung
1413    Date: 2000/06/09 01:25:00
1414    Tag: leunga-20000609-various
1415    
1416    None of these things should affect normal SML/NJ operations
1417    
1418    1. Peephole improvements provided by Fermin (c--)
1419    2. New annotation DEFUSE for adding extra dependence (moby)
1420    3. New X86 LOCK instructions (moby)
1421    4. New machine description language for reservation tables (scheduling)
1422    5. Fixes to various optimization/analysis modules (branch chaining, dominator
1423       trees etc.)
1424    6. I've changed the CM files so that they can work with versions
1425       110.0.6, 110.25 and 110.28
1426    
1427    ----------------------------------------------------------------------
1428    Name: Matthias Blume
1429    Date: 2000/06/09 12:40:00
1430    Tag: blume-20000609-log
1431    Description:
1432    
1433    - Removed all(?) remaining RCS Log entries from sources.
1434    
1435    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
1436      anchored paths).
1437    
1438    ----------------------------------------------------------------------
1439    Name: Matthias Blume
1440    Date: 2000/06/07 17:00:00 JST
1441    Tag: blume-20000607-no-implicit-anchors
1442    Description:
1443    
1444    1. This update changes the default setting for
1445    CM.Control.implicit_anchors from true to false.  This means that
1446    implicit anchors are no longer permitted by default.  I also tried to
1447    make sure that nothing else still relies on implicit anchors.
1448    (This is the next step on the schedule towards a CM that does not even
1449    have the notion of implicit anchors anymore.)
1450    
1451    2. More CM manual updates.
1452    
1453    3. I managed to track down and fix the pickling bug I mentioned last
1454    time.  Because of the previously existing workaround, this entails no
1455    immediate practical changes.
1456    
1457    ----------------------------------------------------------------------
1458    Name: Matthias Blume
1459    Date: 2000/06/06 11:15:00 JST
1460    Tag: blume-20000606-lazierpickle
1461    Description:
1462    
1463    !!!! NEW BOOT FILES !!!!
1464    
1465    * The main purpose of this update is to make library pickles lazier in
1466    order to reduce the initial space penalty for autoloading a library.
1467    As a result, it is now possible to have $smlnj/compiler.cm
1468    pre-registered.  This should take care of the many complaints or
1469    inquiries about missing structure Compiler.  This required changes to
1470    CM's internal data structures and small tweaks to some algorithms.
1471    
1472    As a neat additional effect, it is no longer necessary (for the sake
1473    of lean heap image files) to distinguish between a "minimal" CM and a
1474    "full" CM.  Now, there is only one CM (i.e., the "full" version:
1475    $smlnj/cm.cm aka $smlnj/cm/full.cm), and it is always available at the
1476    interactive top level. ($smlnj/cm/minimal.cm is gone.)
1477    
1478    To make the life of compiler-hackers easier, "makeml" now also
1479    pre-registers $smlnj/cmb.cm (aka $smlnj/cmb/current.cm).  In other
1480    words, after you bootstrap a new sml for the first time, you will not
1481    have to autoload $smlnj/cmb.cm again afterwards.  (The first time
1482    around you will still have to do it, though.)
1483    
1484    * A second change consists of major updates to the CM manual.  There
1485    are now several appendices with summary information and also a full
1486    specification of the CM description file syntax.
1487    
1488    * In directory src/system I added the script "allcross".  This script
1489    invokes sml and cross-compiles the compiler for all supported
1490    architectures.  (Useful when providing a new set of boot files.)
1491    
1492    * There seems to be a latent bug in my "lazy pickles" mechanism.  I
1493    added a small tweak to pickle-util.sml to work around this problem,
1494    but it is not a proper fix yet.  I will investigate further.  (The
1495    effect of the bug was an inflation of library pickle size.)
1496    
1497    * Version number increased to 110.28.1 (to avoid compatibility problems).
1498    
1499    ----------------------------------------------------------------------
1500    Name: Allen Leung
1501    Date: 2000/05/25 17:28 EDT
1502    Tag: leunga-20000525-ra
1503    Description:
1504    
1505      Fixed a bug in freezing phase of the register allocator.
1506    
1507    ----------------------------------------------------------------------
1508  Name: Allen Leung  Name: Allen Leung
1509  Date: 2000/05/15 22:53 EDT  Date: 2000/05/15 22:53 EDT
1510  Tag: leunga-20000515-alpha-x86-ra  Tag: leunga-20000515-alpha-x86-ra
# Line 494  Line 1987 
1987    
1988  3.  Assembly  3.  Assembly
1989    
1990      When generating assemby, resolve the value of client defined constants,      When generating assembly, resolve the value of client defined constants,
1991      instead of generating symbolic values.  This is controlled by the      instead of generating symbolic values.  This is controlled by the
1992      new flag "asm-resolve-constants", which is default to true.      new flag "asm-resolve-constants", which is default to true.
1993    
# Line 517  Line 2010 
2010    
2011  To this end, I arranged that instead of "structure Core" as "structure  To this end, I arranged that instead of "structure Core" as "structure
2012  _Core" is bound in the pervasive environment.  Core access is done via  _Core" is bound in the pervasive environment.  Core access is done via
2013  _Core (which can never be accidentially rebound because _Core is not a  _Core (which can never be accidentally rebound because _Core is not a
2014  legal surface-syntax symbol).  legal surface-syntax symbol).
2015    
2016  The current solution is much cleaner because the core environment is  The current solution is much cleaner because the core environment is
# Line 527  Line 2020 
2020  with dynamic and symbolic parts of the core environment.  with dynamic and symbolic parts of the core environment.
2021    
2022  Remaining hackery (to bind the "magic" symbol _Core) is localized in the  Remaining hackery (to bind the "magic" symbol _Core) is localized in the
2023  compilation mananger's bootstrap compiler (actually: in the "init group"  compilation manager's bootstrap compiler (actually: in the "init group"
2024  handling).  See the comments in src/system/smlnj/init/init.cmi for  handling).  See the comments in src/system/smlnj/init/init.cmi for
2025  more details.  more details.
2026    
# Line 642  Line 2135 
2135     (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
2136     used).     used).
2137    
2138     This was done to accomodate the new "make" and "shell" tools which     This was done to accommodate the new "make" and "shell" tools which
2139     facilitate fairly seemless hookup to portions of code managed using     facilitate fairly seamless hookup to portions of code managed using
2140     Makefiles or Shell scripts.     Makefiles or Shell scripts.
2141    
2142     There are no classes "shared" or "private" anymore.  Instead, the     There are no classes "shared" or "private" anymore.  Instead, the
# Line 655  Line 2148 
2148    
2149     All existing tools are described in the CM manual.     All existing tools are described in the CM manual.
2150    
2151     - Slightly better error handling.  (CM now surpresses many followup     - Slightly better error handling.  (CM now suppresses many followup
2152     error messages that tended to be more annoying than helpful.)     error messages that tended to be more annoying than helpful.)
2153    
2154  2. Major changes to the compiler's static environment data structures.  2. Major changes to the compiler's static environment data structures.
# Line 789  Line 2282 
2282    
2283       I've changed andl to testl in the floating point test sequence       I've changed andl to testl in the floating point test sequence
2284       whenever appropriate.  The Intel optimization guide states that       whenever appropriate.  The Intel optimization guide states that
2285       testl is perferable to andl.       testl is preferable to andl.
2286    
2287  7. RA (x86 only)  7. RA (x86 only)
2288    
# Line 971  Line 2464 
2464    
2465  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
2466  additional argument called "template" which is an optional string that  additional argument called "template" which is an optional string that
2467  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
2468  explanation.  explanation.
2469    
2470  2. A special-purpose tool can be "regisitered" by simply dropping the  2. A special-purpose tool can be "registered" by simply dropping the
2471  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
2472  directory where the .cm file lives that uses this tool.  (The  directory where the .cm file lives that uses this tool.  (The
2473  behavior/misfeature until now was to look for the tool description  behavior/misfeature until now was to look for the tool description
# Line 1018  Line 2511 
2511  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
2512  <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,
2513  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
2514  perhaps got accidentially killed).  In this case, fixpt will quickly  perhaps got accidentally killed).  In this case, fixpt will quickly
2515  move through what exists before continuing where it left off earlier,  move through what exists before continuing where it left off earlier,
2516  and, thus, saves a lot of time.  and, thus, saves a lot of time.
2517    
# Line 1068  Line 2561 
2561    it from that remote directory.    it from that remote directory.
2562    This should simplify installation further:  For machines that have    This should simplify installation further:  For machines that have
2563    access to the internet, just fetch <version>-config.tgz, unpack it,    access to the internet, just fetch <version>-config.tgz, unpack it,
2564    edit config/targets, and go (run config/install.sh).  The scipt will    edit config/targets, and go (run config/install.sh).  The script will
2565    fetch everything else that it might need all by itself.    fetch everything else that it might need all by itself.
2566    
2567    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.647  
changed lines
  Added in v.819

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