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

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

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