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 904, Mon Aug 20 19:50:05 2001 UTC revision 1130, Mon Mar 11 04:49:41 2002 UTC
# Line 8  Line 8 
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  Name:
11  Date:  Date: yyyy/mm/dd
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Allen Leung
17    Date: 2002/03/10 23:55:00 EST
18    Tag: leunga-20020310-x86-call
19    Description:
20    
21       Added machine generation for CALL instruction (relative displacement mode)
22    
23    ----------------------------------------------------------------------
24    Name: Matthias Blume
25    Date: 2002/03/08 16:05:00
26    Tag: blume-20020308-entrypoints
27    Description:
28    
29    Version number bumped to 110.39.1.  NEW BOOTFILES!
30    
31    Entrypoints: non-zero offset into a code object where execution should begin.
32    
33    - Added the notion of an entrypoint to CodeObj.
34    - Added reading/writing of entrypoint info to Binfile.
35    - Made runtime system bootloader aware of entrypoints.
36    - Use the address of the label of the first function given to mlriscGen
37      as the entrypoint.  This address is currently always 0, but it will
38      not be 0 once we turn on block placement.
39    - Removed the linkage cluster code (which was The Other Way(tm) of dealing
40      with entry points) from mlriscGen.
41    
42    ----------------------------------------------------------------------
43    Name: Allen Leung
44    Date: 2002/03/07 20:45:00 EST
45    Tag: leunga-20020307-x86-cmov
46    Description:
47    
48       Bug fixes for CMOVcc on x86.
49    
50       1. Added machine code generation for CMOVcc
51       2. CMOVcc is now generated in preference over SETcc on PentiumPro or above.
52       3. CMOVcc cannot have an immediate operand as argument.
53    
54    ----------------------------------------------------------------------
55    Name: Matthias Blume
56    Date: 2002/03/07 16:15:00 EST
57    Tag: blume-20020307-controls
58    Description:
59    
60    This is a very large but mostly boring patch which makes (almost)
61    every tuneable compiler knob (i.e., pretty much everything under
62    Control.* plus a few other things) configurable via both the command
63    line and environment variables in the style CM did its configuration
64    until now.
65    
66    Try starting sml with '-h' (or, if you are brave, '-H')
67    
68    To this end, I added a structure Controls : CONTROLS to smlnj-lib.cm which
69    implements the underlying generic mechanism.
70    
71    The interface to some of the existing such facilities has changed somewhat.
72    For example, the MLRiscControl module now provides mkFoo instead of getFoo.
73    (The getFoo interface is still there for backward-compatibility, but its
74    use is deprecated.)
75    
76    The ml-build script passes -Cxxx=yyy command-line arguments through so
77    that one can now twiddle the compiler settings when using this "batch"
78    compiler.
79    
80    TODO items:
81    
82    We should go through and throw out all controls that are no longer
83    connected to anything.  Moreover, we should go through and provide
84    meaningful (and correct!) documentation strings for those controls
85    that still are connected.
86    
87    Currently, multiple calls to Controls.new are accepted (only the first
88    has any effect).  Eventually we should make sure that every control
89    is being made (via Controls.new) exactly once.  Future access can then
90    be done using Controls.acc.
91    
92    Finally, it would probably be a good idea to use the getter-setter
93    interface to controls rather than ref cells.  For the time being, both
94    styles are provided by the Controls module, but getter-setter pairs are
95    better if thread-safety is of any concern because they can be wrapped.
96    
97    *****************************************
98    
99    One bug fix: The function blockPlacement in three of the MLRISC
100    backpatch files used to be hard-wired to one of two possibilities at
101    link time (according to the value of the placementFlag).  But (I
102    think) it should rather sense the flag every time.
103    
104    *****************************************
105    
106    Other assorted changes (by other people who did not supply a HISTORY entry):
107    
108    1. the cross-module inliner now works much better (Monnier)
109    2. representation of weights, frequencies, and probabilities in MLRISC
110       changed in preparation of using those for weighted block placement
111       (Reppy, George)
112    
113    ----------------------------------------------------------------------
114    Name: Lal George
115    Date: 2002/03/07 14:44:24 EST 2002
116    Tag: george-20020307-weighted-block-placement
117    
118    Tested the weighted block placement optimization on all architectures
119    (except the hppa) using AMPL to generate the block and edge frequencies.
120    Changes were required in the machine properties to correctly
121    categorize trap instructions. There is an MLRISC flag
122    "weighted-block-placement" that can be used to enable weighted block
123    placement, but this will be ineffective without block/edge
124    frequencies (coming soon).
125    
126    
127    ----------------------------------------------------------------------
128    Name: Lal George
129    Date: 2002/03/05 17:24:48 EST
130    Tag: george-20020305-linkage-cluster
131    
132    In order to support the block placement optimization, a new cluster
133    is generated as the very first cluster (called the linkage cluster).
134    It contains a single jump to the 'real' entry point for the compilation
135    unit. Block placement has no effect on the linkage cluster itself, but
136    all the other clusters  have full freedom in the manner in which they
137    reorder blocks or functions.
138    
139    On the x86 the typical linkage code that is generated is:
140       ----------------------
141            .align 2
142       L0:
143            addl    $L1-L0, 72(%esp)
144            jmp     L1
145    
146    
147            .align  2
148       L1:
149       ----------------------
150    
151    72(%esp) is the memory location for the stdlink register. This
152    must contain the address of the CPS function being called. In the
153    above example, it contains the address of  L0; before
154    calling L1 (the real entry point for the compilation unit), it
155    must contain the address for L1, and hence
156    
157            addl $L1-L0, 72(%esp)
158    
159    I have tested this on all architectures except the hppa.The increase
160    in code size is of course negligible
161    
162    ----------------------------------------------------------------------
163    Name: Allen Leung
164    Date: 2002/03/03 13:20:00 EST
165    Tag: leunga-20020303-mlrisc-tools
166    
167      Added #[ ... ] expressions to mlrisc tools
168    
169    ----------------------------------------------------------------------
170    Name: Matthias Blume
171    Date: 2002/02/27 12:29:00 EST
172    Tag: blume-20020227-cdebug
173    Description:
174    
175    - made types in structure C and C_Debug to be equal
176    - got rid of code duplication (c-int.sml vs. c-int-debug.sml)
177    - there no longer is a C_Int_Debug (C_Debug is directly derived from C)
178    
179    ----------------------------------------------------------------------
180    Name: Matthias Blume
181    Date: 2002/02/26 12:00:00 EST
182    Tag: blume-20020226-ffi
183    Description:
184    
185    1. Fixed a minor bug in CM's "noweb" tool:
186       If numbering is turned off, then truly don't number (i.e., do not
187       supply the -L option to noweb).  The previous behavior was to supply
188       -L'' -- which caused noweb to use the "default" line numbering scheme.
189       Thanks to Chris Richards for pointing this out (and supplying the fix).
190    
191    2. Once again, I reworked some aspects of the FFI:
192    
193       A. The incomplete/complete type business:
194    
195       - Signatures POINTER_TO_INCOMPLETE_TYPE and accompanying functors are
196         gone!
197       - ML types representing an incomplete type are now *equal* to
198         ML types representing their corresponding complete types (just like
199         in C).  This is still safe because ml-nlffigen will not generate
200         RTTI for incomplete types, nor will it generate functions that
201         require access to such RTTI.   But when ML code generated from both
202         incomplete and complete versions of the C type meet, the ML types
203         are trivially interoperable.
204    
205         NOTE:  These changes restore the full generality of the translation
206         (which was previously lost when I eliminated functorization)!
207    
208       B. Enum types:
209    
210       - Structure C now has a type constructor "enum" that is similar to
211         how the "su" constructor works.  However, "enum" is not a phantom
212         type because each "T enum" has values (and is isomorphic to
213         MLRep.Signed.int).
214       - There are generic access operations for enum objects (using
215         MLRep.Signed.int).
216       - ml-nlffigen will generate a structure E_foo for each "enum foo".
217         * The structure contains the definition of type "mlrep" (the ML-side
218         representation type of the enum).  Normally, mlrep is the same
219         as "MLRep.Signed.int", but if ml-nlffigen was invoked with "-ec",
220         then mlrep will be defined as a datatype -- thus facilitating
221         pattern matching on mlrep values.
222         ("-ec" will be suppressed if there are duplicate values in an
223          enumeration.)
224         * Constructors ("-ec") or values (no "-ec") e_xxx of type mlrep
225         will be generated for each C enum constant xxx.
226         * Conversion functions m2i and i2m convert between mlrep and
227         MLRep.Signed.int.  (Without "-ec", these functions are identities.)
228         * Coversion functions c and ml convert between mlrep and "tag enum".
229         * Access functions (get/set) fetch and store mlrep values.
230       - By default (unless ml-nlffigen was invoked with "-nocollect"), unnamed
231         enumerations are merged into one single enumeration represented by
232         structure E_'.
233    
234    ----------------------------------------------------------------------
235    Name: Allen Leung
236    Date: 2002/02/25 04:45:00 EST
237    Tag: leunga-20020225-cps-spill
238    
239    This is a new implementation of the CPS spill phase.
240    The new phase is in the new file compiler/CodeGen/cpscompile/spill-new.sml
241    In case of problems, replace it with the old file spill.sml
242    
243    The current compiler runs into some serious performance problems when
244    constructing a large record.  This can happen when we try to compile a
245    structure with many items.  Even a very simple structure like the following
246    makes the compiler slow down.
247    
248        structure Foo = struct
249           val x_1 = 0w1 : Word32.int
250           val x_2 = 0w2 : Word32.int
251           val x_3 = 0w3 : Word32.int
252           ...
253           val x_N = 0wN : Word32.int
254        end
255    
256    The following table shows the compile time, from N=1000 to N=4000,
257    with the old compiler:
258    
259    N
260    1000   CPS 100 spill                           0.04u  0.00s  0.00g
261           MLRISC ra                               0.06u  0.00s  0.05g
262              (spills = 0 reloads = 0)
263           TOTAL                                   0.63u  0.07s  0.21g
264    
265    1100   CPS 100 spill                           8.25u  0.32s  0.64g
266           MLRISC ra                               5.68u  0.59s  3.93g
267              (spills = 0 reloads = 0)
268           TOTAL                                   14.71u  0.99s  4.81g
269    
270    1500   CPS 100 spill                           58.55u  2.34s  1.74g
271           MLRISC ra                               5.54u  0.65s  3.91g
272              (spills = 543 reloads = 1082)
273           TOTAL                                   65.40u  3.13s  6.00g
274    
275    2000   CPS 100 spill                           126.69u  4.84s  3.08g
276           MLRISC ra                               0.80u  0.10s  0.55g
277              (spills = 42 reloads = 84)
278           TOTAL                                   129.42u  5.10s  4.13g
279    
280    3000   CPS 100 spill                           675.59u  19.03s  11.64g
281           MLRISC ra                               2.69u  0.27s  1.38g
282              (spills = 62 reloads = 124)
283           TOTAL                                   682.48u  19.61s  13.99g
284    
285    4000   CPS 100 spill                           2362.82u  56.28s  43.60g
286           MLRISC ra                               4.96u  0.27s  2.72g
287              (spills = 85 reloads = 170)
288           TOTAL                                   2375.26u  57.21s  48.00g
289    
290    As you can see the old cps spill module suffers from some serious
291    performance problem.  But since I cannot decipher the old code fully,
292    instead of patching the problems up, I'm reimplementing it
293    with a different algorithm.  The new code is more modular,
294    smaller when compiled, and substantially faster
295    (O(n log n) time and O(n) space).  Timing of the new spill module:
296    
297    4000  CPS 100 spill                           0.02u  0.00s  0.00g
298          MLRISC ra                               0.25u  0.02s  0.15g
299             (spills=1 reloads=3)
300          TOTAL                                   7.74u  0.34s  1.62g
301    
302    Implementation details:
303    
304    As far as I can tell, the purpose of the CPS spill module is to make sure the
305    number of live variables at any program point (the bandwidth)
306    does not exceed a certain limit, which is determined by the
307    size of the spill area.
308    
309    When the bandwidth is too large, we decrease the register pressure by
310    packing live variables into spill records.  How we achieve this is
311    completely different than what we did in the old code.
312    
313    First, there is something about the MLRiscGen code generator
314    that we should be aware of:
315    
316    o MLRiscGen performs code motion!
317    
318       In particular, it will move floating point computations and
319       address computations involving only the heap pointer to
320       their use sites (if there is only a single use).
321       What this means is that if we have a CPS record construction
322       statement
323    
324           RECORD(k,vl,w,e)
325    
326       we should never count the new record address w as live if w
327       has only one use (which is often the case).
328    
329       We should do something similar to floating point, but the transformation
330       there is much more complex, so I won't deal with that.
331    
332    Secondly, there are now two new cps primops at our disposal:
333    
334     1. rawrecord of record_kind option
335        This pure operator allocates some uninitialized storage from the heap.
336        There are two forms:
337    
338         rawrecord NONE [INT n]  allocates a tagless record of length n
339         rawrecord (SOME rk) [INT n] allocates a tagged record of length n
340                                     and initializes the tag.
341    
342     2. rawupdate of cty
343          rawupdate cty (v,i,x)
344          Assigns to x to the ith component of record v.
345          The storelist is not updated.
346    
347    We use these new primops for both spilling and increment record construction.
348    
349     1. Spilling.
350    
351        This is implemented with a linear scan algorithm (but generalized
352        to trees).  The algorithm will create a single spill record at the
353        beginning of the cps function and use rawupdate to spill to it,
354        and SELECT or SELp to reload from it.  So both spills and reloads
355        are fine-grain operations.  In contrast, in the old algorithm
356        "spills" have to be bundled together in records.
357    
358        Ideally, we should sink the spill record construction to where
359        it is needed.  We can even split the spill record into multiple ones
360        at the places where they are needed.  But CPS is not a good
361        representation for global code motion, so I'll keep it simple and
362        am not attempting this.
363    
364     2. Incremental record construction (aka record splitting).
365    
366        Long records with many component values which are simulatenously live
367        (recall that single use record addresses are not considered to
368         be live) are constructed with rawrecord and rawupdate.
369        We allocate space on the heap with rawrecord first, then gradually
370        fill it in with rawupdate.  This is the technique suggested to me
371        by Matthias.
372    
373        Some restrictions on when this is applicable:
374        1. It is not a VECTOR record.  The code generator currently does not handle
375           this case. VECTOR record uses double indirection like arrays.
376        2. All the record component values are defined in the same "basic block"
377           as the record constructor.  This is to prevent speculative
378           record construction.
379    
380    ----------------------------------------------------------------------
381    Name: Allen Leung
382    Date: 2002/02/22 01:02:00 EST
383    Tag: leunga-20020222-mlrisc-tools
384    
385    Minor bug fixes in the parser and rewriter
386    
387    ----------------------------------------------------------------------
388    Name: Allen Leung
389    Date: 2002/02/21 20:20:00 EST
390    Tag: leunga-20020221-peephole
391    
392    Regenerated the peephole files.  Some contained typos in the specification
393    and some didn't compile because of pretty printing bugs in the old version
394    of 'nowhere'.
395    
396    ----------------------------------------------------------------------
397    Name: Allen Leung
398    Date: 2002/02/19 20:20:00 EST
399    Tag: leunga-20020219-mlrisc-tools
400    Description:
401    
402       Minor bug fixes to the mlrisc-tools library:
403    
404       1.  Fixed up parsing colon suffixed keywords
405       2.  Added the ability to shut the error messages up
406       3.  Reimplemented the pretty printer and fixed up/improved
407           the pretty printing of handle and -> types.
408       4.  Fixed up generation of literal symbols in the nowhere tool.
409       5.  Added some SML keywords to to sml.sty
410    
411    ----------------------------------------------------------------------
412    Name: Matthias Blume
413    Date: 2002/02/19 16:20:00 EST
414    Tag: blume-20020219-cmffi
415    Description:
416    
417    A wild mix of changes, some minor, some major:
418    
419    * All C FFI-related libraries are now anchored under $c:
420        $/c.cm      --> $c/c.cm
421        $/c-int.cm  --> $c/internals/c-int.cm
422        $/memory.cm --> $c/memory/memory.cm
423    
424    * "make" tool (in CM) now treats its argument pathname slightly
425      differently:
426        1. If the native expansion is an absolute name, then before invoking
427           the "make" command on it, CM will apply OS.Path.mkRelative
428           (with relativeTo = OS.FileSys.getDir()) to it.
429        2. The argument will be passed through to subsequent phases of CM
430           processing without "going native".  In particular, if the argument
431           was an anchored path, then "make" will not lose track of that anchor.
432    
433    * Compiler backends now "know" their respective C calling conventions
434      instead of having to be told about it by ml-nlffigen.  This relieves
435      ml-nlffigen from one of its burdens.
436    
437    * The X86Backend has been split into X86CCallBackend and X86StdCallBackend.
438    
439    * Export C_DEBUG and C_Debug from $c/c.cm.
440    
441    * C type encoding in ml-nlffi-lib has been improved to model the conceptual
442      subtyping relationship between incomplete pointers and their complete
443      counterparts.  For this, ('t, 'c) ptr has been changed to 'o ptr --
444      with the convention of instantiating 'o with ('t, 'c) obj whenever
445      the pointer target type is complete.  In the incomplete case, 'o
446      will be instantiated with some "'c iobj" -- a type obtained by
447      using one of the functors PointerToIncompleteType or PointerToCompleteType.
448    
449      Operations that work on both incomplete and complete pointer types are
450      typed as taking an 'o ptr while operations that require the target to
451      be known are typed as taking some ('t, 'c) obj ptr.
452    
453      voidptr is now a bit "more concrete", namely "type voidptr = void ptr'"
454      where void is an eqtype without any values.  This makes it possible
455      to work on voidptr values using functions meant to operate on light
456      incomplete pointers.
457    
458    * As a result of the above, signature POINTER_TO_INCOMPLETE_TYPE has
459      been vastly simplified.
460    
461    ----------------------------------------------------------------------
462    Name: Matthias Blume
463    Date: 2002/02/19 10:48:00 EST
464    Tag: blume-20020219-pqfix
465    Description:
466    
467    Applied Chris Okasaki's bug fix for priority queues.
468    
469    ----------------------------------------------------------------------
470    Name: Matthias Blume
471    Date: 2002/02/15 17:05:00
472    Tag: Release_110_39
473    Description:
474    
475    Last-minute retagging is becoming a tradition... :-(
476    
477    This is the working release 110.39.
478    
479    ----------------------------------------------------------------------
480    Name: Matthias Blume
481    Date: 2002/02/15 16:00:00 EST
482    Tag: Release_110_39-orig
483    Description:
484    
485    Working release 110.39.  New bootfiles.
486    
487    (Update: There was a small bug in the installer so it wouldn't work
488    with all shells.  So I retagged. -Matthias)
489    
490    ----------------------------------------------------------------------
491    Name: Matthias Blume
492    Date: 2002/02/15 14:17:00 EST
493    Tag: blume-20020215-showbindings
494    Description:
495    
496    Added EnvRef.listBoundSymbols and CM.State.showBindings.  Especially
497    the latter can be useful for exploring what bindings are available at
498    the interactive prompt.  (The first function returns only the list
499    of symbols that are really bound, the second prints those but also the
500    ones that CM's autoloading mechanism knows about.)
501    
502    ----------------------------------------------------------------------
503    Name: Matthias Blume
504    Date: 2002/02/15 12:08:00 EST
505    Tag: blume-20020215-iptrs
506    Description:
507    
508    Two improvements to ml-nlffigen:
509    
510      1. Write files only if they do not exist or if their current contents
511         do not coincide with what's being written.  (That is, avoid messing
512         with the time stamps unless absolutely necessary.)
513    
514      2. Implement a "repository" mechanism for generated files related
515         to "incomplete pointer types".   See the README file for details.
516    
517    ----------------------------------------------------------------------
518    Name: Matthias Blume
519    Date: 2002/02/14 11:50:00 EST
520    Tag: blume-20020214-quote
521    Description:
522    
523    Added a type 't t_' to tag.sml (in ml-nlffi-lib.cm).  This is required
524    because of the new and improved tag generation scheme.  (Thanks to Allen
525    Leung for pointing it out.)
526    
527    ----------------------------------------------------------------------
528    Name: Lal George
529    Date: 2002/02/14 09:55:27 EST 2002
530    Tag: george-20020214-isabelle-bug
531    Description:
532    
533    Fixed the MLRISC bug sent by Markus Wenzel regarding the compilation
534    of Isabelle on the x86.
535    
536    From Allen:
537    -----------
538     I've found the problem:
539    
540         in ra-core.sml, I use the counter "blocked" to keep track of the
541         true number of elements in the freeze queue.  When the counter goes
542         to zero, I skip examining the queue.  But I've messed up the
543         bookkeeping in combine():
544    
545             else ();
546             case !ucol of
547               PSEUDO => (if !cntv > 0 then
548                     (if !cntu > 0 then blocked := !blocked - 1 else ();
549                                        ^^^^^^^^^^^^^^^^^^^^^^^
550                      moveu := mergeMoveList(!movev, !moveu)
551                     )
552                  else ();
553    
554         combine() is called to coalesce two nodes u and v.
555         I think I was thinking that if the move counts of u and v are both
556         greater than zero then after they are coalesced then one node is
557         removed from the freeze queue.  Apparently I was thinking that
558         both u and v are of low degree, but that's clearly not necessarily true.
559    
560    
561    02/12/2002:
562        Here's the patch.  HOL now compiles.
563    
564        I don't know how this impact on performance (compile
565        time or runtime).  This bug caused the RA (especially on the x86)
566        to go thru the potential spill phase when there are still nodes on the
567        freeze queue.
568    
569    
570    
571    
572    ----------------------------------------------------------------------
573    Name: Matthias Blume
574    Date: 2002/02/13 22:40:00 EST
575    Tag: blume-20020213-fptr-rtti
576    Description:
577    
578    Fixed a bug in ml-nlffigen that was introduced with one of the previous
579    updates.
580    
581    ----------------------------------------------------------------------
582    Name: Matthias Blume
583    Date: 2002/02/13 16:41:00 EST
584    Tag: blume-20020213-cmlpq
585    Description:
586    
587    Added new priority queue export symbols (which have just been added to
588    smlnj-lib.cm) to CML's version of smlnj-lib.cm.  (Otherwise CML would
589    not compile and the installer would choke.)
590    
591    ----------------------------------------------------------------------
592    Name: Matthias Blume
593    Date: 2002/02/13 16:15:00 EST
594    Tag: blume-20020213-various
595    Description:
596    
597    1. More tweaks to ml-nlffigen:
598    
599       - better internal datastructures (resulting in slight speedup)
600       - "-match" option requires exact match
601       - "localized" gensym counters (untagged structs/unions nested within
602         other structs/unions or within typedefs get a fresh counter; their
603         tag will be prefixed by a concatenation of their parents' tags)
604       - bug fixes (related to calculation of transitive closure of types
605         to be included in the output)
606    
607    2. Minor Basis updates:
608    
609       - added implementations for List.collate and Option.app
610    
611    ----------------------------------------------------------------------
612    Name: Matthias Blume
613    Date: 2002/02/11 15:55:00 EST
614    Tag: blume-20020211-gensym
615    Description:
616    
617    Added a "-gensym" option to command line of ml-nlffigen.  This can be
618    used to specify a "stem" -- a string that is inserted in all "gensym'd"
619    names (ML structure names that correspond to unnamed C structs, unions,
620    and enums), so that separate runs of ml-nlffigen do not clash.
621    
622    ----------------------------------------------------------------------
623    Name: Matthias Blume
624    Date: 2002/02/11 12:05:00 EST
625    Tag: blume-20020211-gensml
626    Description:
627    
628    A quick fix for a problem with GenSML (in the pgraph-util library):
629    Make generation of toplevel "local" optional.  (Strictly speaking,
630    signature definitions within "local" are not legal SML.)
631    
632    Other than that: updates to INSTALL and cm/TODO.
633    
634    ----------------------------------------------------------------------
635    Name: Matthias Blume
636    Date: 2002/02/08 15:00:00 EST
637    Tag: blume-20020208-uniquepid
638    Description:
639    
640    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
641    
642    1. The installer (config/install.sh) has gotten smarter:
643    
644         - Configuration options are a bit easier to specify now
645           (in config/targets).
646         - Bug in recognizing .tar.bz2 files fixed.
647         - Installer automatically resolves dependencies between
648           configuration options (e.g., if you ask for eXene, you will
649           also get cml -- regardless whether you asked for it or not).
650         - Installer can run in "quieter mode" by setting the environment
651           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
652           "completely silent", though.
653         - Build HashCons library as part of smlnj-lib.
654    
655    2. A new scheme for assigning persistent identifiers to compilation
656       units (and, by extension, to types etc.) has been put into place.
657       This fixes a long-standing bug where types and even dynamic values
658       can get internally confused, thereby compromising type safety
659       (abstraction) and dynamic correctness.  See
660    
661         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
662    
663       for an example of how things could go wrong until now.
664    
665       The downside of the new scheme is that pids are not quite as
666       persistent as they used to be: CM will generate a fresh pid
667       for every compilation unit that it thinks it sees for the first
668       time.  That means that if you compile starting from a clean, fresh
669       source tree at two different times, you end up with different
670       binaries.
671    
672       Cutoff recompilation, however, has not been compromised because
673       CM keeps pid information in special caches between runs.
674    
675    ----------------------------------------------------------------------
676    Name: Lal George
677    Date: 2002/02/07 15:34:13 EST 2002
678    Tag: <none>
679    Description:
680    
681    Compilers that generate assembly code may produce  global labels
682    whose value is resolved at link time. The various peephole optimization
683    modules did not take this in account.
684    
685    TODO. The Labels.addrOf function should really return an option
686    type so that clients are forced to deal with this issue, rather
687    than an exception being raised.
688    
689    ----------------------------------------------------------------------
690    Name: Lal George
691    Date: 2002/02/06 13:55:02 EST
692    Tag: george-20020206-ra-breakup
693    Description:
694    
695    1. A bug fix from Allen.
696    
697        A typo causes extra fstp %st(0)'s to be generated at compensation
698        edges, which might cause stack underflow traps at runtime.  This
699        occurs in fft where there are extraneous fstps right before the 'into'
700        trap instruction (in this case they are harmless since none of the
701        integers overflow.)
702    
703    2. Pulled out various utility modules that were embedded in the modules
704       of the register allocator. I need these modules for other purposes, but
705       they are not complete enough to put into a library (just yet).
706    ----------------------------------------------------------------------
707    Name: Matthias Blume
708    Date: 2002/01/31 16:05:00 EST
709    Tag: blume-20020131-sparc-ccalls
710    Description:
711    
712    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
713       of extra stack space by mistake.  Fixed.
714    
715    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
716    
717    ----------------------------------------------------------------------
718    Name: Allen Leung
719    Date: 2002/01/30
720    Tag: leunga-20020130-nowhere-bug-fix
721    Description:
722    
723       MLRISC bug fixes:
724       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
725       2. MachineInt.fromString was negating its value.
726    
727    ----------------------------------------------------------------------
728    Name: Matthias Blume
729    Date: 2002/01/29
730    Tag: blume-20020129-INSTALL
731    Description:
732    
733    - Added somewhat detailed installation instructions (file INSTALL).
734    - Fixed curl-detection bug in config/install.sh.
735    - It is now possible to select the URL getter using the URLGETTER
736      environment variable:
737    
738          not set / "unknown"      --> automatic detection (script tries wget,
739                                       curl, and lynx)
740          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
741                                       how to properly invoke them)
742          other                    --> use $URLGETTER directly, it must take
743                                       precisely two command-line arguments
744                                       (source URL and destination file name)
745    
746    ----------------------------------------------------------------------
747    Name: Matthias Blume
748    Date: 2002/01/28
749    Tag: blume-20020128-sparc-ccalls
750    Description:
751    
752    - Fixed problem with calculation of "used" registers in sparc-c-calls.
753    - Make use of the allocParam argument in sparc-c-calls.
754    
755    ----------------------------------------------------------------------
756    Name: Matthias Blume
757    Date: 2002/01/28
758    Tag: blume-20020128-allocParam
759    Description:
760    
761    John Reppy:  Changes c-calls API to accept client-callback for
762    allocating extra stack space.
763    me: Corresponding changes to mlriscGen (using a dummy argument that
764        does not change the current behavior).
765    
766    ----------------------------------------------------------------------
767    Name: Matthias Blume
768    Date: 2002/01/28 12:00:00
769    Tag: Release_110_38
770    Description:
771    
772    This time for real!!!
773    
774    ----------------------------------------------------------------------
775    Name: Matthias Blume
776    Date: 2002/01/28 10:56:00 EST
777    Tag: blume-20020128-retraction
778    Description:
779    
780    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
781       with blume-Release_110_38-retracted.)
782    
783    1. Fixed a problem with incorrect rounding modes in real64.sml.
784       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
785    
786    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
787       and enums fixed.  The naming of corresponding ML identifiers should
788       now be consistent again.
789    
790    ----------------------------------------------------------------------
791    Name: Allen Leung
792    Date: 2002/01/27
793    Tag: leunga-20020127-nowhere
794    Description:
795    
796       Added a target called nowhere in the configuration scripts.
797       Enabling this will build the MLRISC 'nowhere' tool (for translating
798       programs with where-clauses into legal SML code) during installation.
799    
800    ----------------------------------------------------------------------
801    Name: Matthias Blume
802    Date: 2002/01/25 21:27:00 EST
803    Tag: blume-Release_110_38-retracted
804    Description:
805    
806    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
807    
808    README will be added later.
809    
810    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
811    (Release_110_38) removed.  Reason: Last-minute bug fixes.
812    
813    ----------------------------------------------------------------------
814    Name: Matthias Blume
815    Date: 2002/01/25
816    Tag: blume-20020125-ffi
817    Description:
818    
819    A large number of tweaks and improvements to ml-nlffi-lib and
820    ml-nlffigen:
821    
822       - ML represenation types have been streamlined
823       - getter and setter functions work with concrete values, not abstract
824         ones where possible
825       - ml-nlffigen command line more flexible (see README file there)
826       - some bugs have been fixed (hopefully)
827    
828    ----------------------------------------------------------------------
829    Name: Lal George
830    Date: 2002/01/24
831    Tag: george-20020124-risc-ra-interface
832    Description:
833    
834       There is a dramatic simplification in the interface to the
835       register allocator for RISC architectures as a result of making
836       parallel copy instructions explicit.
837    
838    ----------------------------------------------------------------------
839    Name: Matthias Blume
840    Date: 2002/01/22
841    Tag: blume-20020122-x86-ccalls
842    Description:
843    
844    Bug fix for c-calls on x86 (having to do with how char- and
845    short-arguments are being handled).
846    
847    ----------------------------------------------------------------------
848    Name: Matthias Blume
849    Date: 2002/01/21
850    Tag: blume-20020121-ff
851    Description:
852    
853    Another day of fiddling with the FFI...
854    
855    1. Bug fix/workaround:  CKIT does not complain about negative array
856       dimensions, so ml-nlffigen has to guard itself against this possibility.
857       (Otherwise a negative dimension would send it into an infinite loop.)
858    
859    2. Some of the abstract types (light objects, light pointers, most "base"
860       types) in structure C are now eqtypes.
861    
862    3. Added constructors and test functions for NULL function pointers.
863    
864    ----------------------------------------------------------------------
865    Name: Matthias Blume
866    Date: 2002/01/18
867    Tag: blume-20020118-ready-for-new-release
868    Description:
869    
870    Made config/srcarchiveurl point to a new place.  (Will provide boot
871    files shortly.)
872    
873    Maybe we christen this to be 110.38?
874    
875    ----------------------------------------------------------------------
876    Name: Matthias Blume
877    Date: 2002/01/18
878    Tag: blume-20020118-more-ffifiddle
879    Description:
880    
881    Today's FFI fiddling:
882    
883      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
884        C.Set.* that use concrete (MLRep.*) arguments and results instead
885        of abstract ones.
886    
887      - Provided word-style bit operations etc. for "int" representation
888        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
889        and Long.
890    
891    ----------------------------------------------------------------------
892    Name: Matthias Blume
893    Date: 2002/01/18
894    Tag: blume-20020118-use-x86-fp
895    Description:
896    
897    Now that x86-fast-fp seems to be working, I turned it back on again
898    by default.  (Seems to work fine now, even with the FFI.)
899    
900    Other than that, I added some documentation about the FFI to
901    src/ml-nlffigen/README and updated the FFI test examples in
902    src/ml-nlffi-lib/Tests/*.
903    
904    ----------------------------------------------------------------------
905    Name: Allen Leung
906    Date: 2002/01/17
907    Tag: leunga-20020117-x86-fast-fp-call
908    Description:
909    
910       1. Fixed a problem with handling return fp values when x86's fast fp
911          mode is turned on.
912    
913       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
914          of %f32.
915    
916       3. Added a constructor INT32lit to the ast of MLRISC tools.
917    
918    ----------------------------------------------------------------------
919    Name: Matthias Blume
920    Date: 2002/01/16
921    Tag: blume-20020116-ffifiddle
922    Description:
923    
924    More fiddling with the FFI interface:
925    
926     - Make constness 'c instead of rw wherever possible.  This eliminates
927       the need for certain explicit coercions.  (However, due to ML's
928       value polymorphism, there will still be many cases where explicit
929       coercions are necessary.  Phantom types are not the whole answer
930       to modeling a subtyping relationship in ML.)
931    
932     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
933    
934     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
935       clumsy workaround for varargs problem.)
936    
937    ----------------------------------------------------------------------
938    Name: Lal George
939    Date: 2002/01/15
940    Tag: <none>
941    Description:
942    
943    1. Since COPY instructions are no longer native to the architecture,
944       a generic functor can be used to implement the expandCopies function.
945    
946    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
947       TEXT segment.
948    
949    ----------------------------------------------------------------------
950    Name: Matthias Blume
951    Date: 2002/01/15
952    Tag: blume-20020115-ffiupdates
953    Description:
954    
955    1. Fix for bug resulting in single-precision float values being returned
956       incorrectly from FFI calls.
957    
958    2. Small modifications to C FFI API:
959    
960        - memory-allocation routines return straight objects (no options)
961          and raise an exception in out-of-memory situations
962        - unsafe extensions to cast between function pointers and pointers
963          from/to ints
964        - added structure C_Debug as an alternative to structure C where
965          pointer-dereferencing (|*| and |*!) always check for null-pointers
966        - added open_lib' to DynLinkage;  open_lib' works like open_lib
967          but also takes a (possibly empty) list of existing library handles
968          that the current library depends on
969    
970    ----------------------------------------------------------------------
971    Name: Matthias Blume
972    Date: 2002/01/10
973    Tag: blume-20020110-newffigen
974    Description:
975    
976    1. Updates to portable graph code.
977    
978    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
979       more scalable now so that even huge interfaces such as the one
980       for GTK compile in finite time and space. :-)
981       See src/ml-nlffigen/README for details on what's new.
982    
983    ----------------------------------------------------------------------
984    Name: Lal George
985    Date: 2001/01/09 14:31:35 EST 2002
986    Tag: george-20011206-rm-native-copy
987    Description:
988    
989            Removed the native COPY and FCOPY instructions
990            from all the architectures and replaced it with the
991            explicit COPY instruction from the previous commit.
992    
993            It is now possible to simplify many of the optimizations
994            modules that manipulate copies. This has not been
995            done in this change.
996    
997    ----------------------------------------------------------------------
998    Name: Lal George
999    Date: 2001/12/06 16:50:13 EST 2001
1000    Tag: george-20011206-mlrisc-instruction
1001    Description:
1002    
1003    Changed the representation of instructions from being fully abstract
1004    to being partially concrete. That is to say:
1005    
1006      from
1007            type instruction
1008    
1009      to
1010            type instr                              (* machine instruction *)
1011    
1012            datatype instruction =
1013                LIVE of {regs: C.cellset, spilled: C.cellset}
1014              | KILL of {regs: C.cellset, spilled: C.cellset}
1015              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
1016              | ANNOTATION of {i: instruction, a: Annotations.annotation}
1017              | INSTR of instr
1018    
1019    This makes the handling of certain special instructions that appear on
1020    all architectures easier and uniform.
1021    
1022    LIVE and KILL say that a list of registers are live or killed at the
1023    program point where they appear. No spill code is generated when an
1024    element of the 'regs' field is spilled, but the register is moved to
1025    the 'spilled' (which is present, more for debugging than anything else).
1026    
1027    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
1028    We used to generate:
1029    
1030            DEFFREG f1
1031            f1 := f2 + f3
1032            trapb
1033    
1034    but now generate:
1035    
1036            f1 := f2 + f3
1037            trapb
1038            LIVE {regs=[f1,f2,f3], spilled=[]}
1039    
1040    Furthermore, the DEFFREG (hack) required that all floating point instruction
1041    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
1042    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
1043    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
1044    this architecture).
1045    
1046    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
1047    all the architectures. This will result in further simplification of the
1048    register allocator that must be aware of them for coalescing purposes, and
1049    will also simplify certain aspects of the machine description that provides
1050    callbacks related to parallel copies.
1051    
1052    ANNOTATION should be obvious, and now INSTR represents the honest to God
1053    machine instruction set!
1054    
1055    The <arch>/instructions/<arch>Instr.sml files define certain utility
1056    functions for making porting easier -- essentially converting upper case
1057    to lower case. All machine instructions (of type instr) are in upper case,
1058    and the lower case form generates an MLRISC instruction. For example on
1059    the alpha we have:
1060    
1061      datatype instr =
1062         LDA of {r:cell, b:cell, d:operand}
1063       | ...
1064    
1065      val lda : {r:cell, b:cell, d:operand} -> instruction
1066        ...
1067    
1068    where lda is just (INSTR o LDA), etc.
1069    
1070    ----------------------------------------------------------------------
1071    Name: Matthias Blume
1072    Date: 2001/11/22 21:40:00 EST
1073    Tag: Release_110_37
1074    Description:
1075    
1076    Release 110.37.  This time for real.
1077    
1078    ----------------------------------------------------------------------
1079    Name: Matthias Blume
1080    Date: 2001/11/21 16:35:00 EST
1081    Tag: blume-20011121-foot-in-mouth
1082    Description:
1083    
1084    Removed the "Release_110_37" tag because of a serious bug.
1085    This will be re-tagged once the bug is fixed.
1086    
1087    ----------------------------------------------------------------------
1088    Name: Matthias Blume
1089    Date: 2001/11/21 16:14:00 EST
1090    Tag: blume-20011121-forgottenfile
1091    Description:
1092    
1093    Forgot to add a file.  (Just a .tex-file -- part of
1094    the CM manual source.)
1095    
1096    ----------------------------------------------------------------------
1097    Name: Matthias Blume
1098    Date: 2001/11/21 16:10:00 EST
1099    Tag: blume-20011121-invalid_110_37
1100    Description:
1101    
1102    Note: I removed the original tag "Release_110_37" from this commit
1103          because we found a serious bug in all non-x86 backends.
1104          - Matthias
1105    
1106    1. Modifications to the SML/NJ code generator and to the runtime system
1107       so that code object name strings are directly inserted into code
1108       objects at code generation time.  The only business the runtime system
1109       has with this is now to read the name strings on occasions.
1110       (The encoding of the name string has also changed somewhat.)
1111    
1112    2. CM now implements a simple "set calculus" for specifying export lists.
1113       In particular, it is now possible to refer to the export lists of
1114       other libraries/groups/sources and form unions as well as differences.
1115       See the latest CM manual for details.
1116    
1117    3. An separate notion of "proxy" libraries has again be eliminated from
1118       CM's model.  (Proxy libraries are now simply a special case of using
1119       the export list calculus.)
1120    
1121    4. Some of the existing libraries now take advantage of the new set
1122       calculus.
1123       (Notice that not all libraries have been converted because some
1124       of the existing .cm-files are supposed to be backward compatible
1125       with 110.0.x.)
1126    
1127    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
1128       "General.exnMessage"!  The former relies on a certain hook to be
1129       initialized, and that often does not happen in the stand-alone case.)
1130    
1131    ----------------------------------------------------------------------
1132    Name: Lal George
1133    Date: 2001/11/21  13:56:18 EST
1134    Tag: george-2001121-pseudo-ops
1135    Description:
1136    
1137      Implemented a complete redesign of MLRISC pseudo-ops. Now there
1138      ought to never be any question of incompatabilities with
1139      pseudo-op syntax expected by host assemblers.
1140    
1141      For now, only modules supporting GAS syntax are implemented
1142      but more should follow, such as MASM, and vendor assembler
1143      syntax, e.g. IBM as, Sun as, etc.
1144    
1145    ----------------------------------------------------------------------
1146    Name: Matthias Blume
1147    Date: 2001/11/14 11:52:00 EST
1148    Tag: blume-20011114-srcname
1149    Description:
1150    
1151    1. Routed the name of the current source file to mlriscgen where it
1152       should be directly emitted into the code object.  (This last part
1153       is yet to be done.)
1154    
1155    2. Some cleanup of the pgraph code to make it match the proposal that
1156       I put out the other day.  (The proposal notwithstanding, things are
1157       still in flux here.)
1158    
1159    ----------------------------------------------------------------------
1160    Name: Lal George
1161    Date: 2001/11/14 09:44:04 EST
1162    Tag:
1163    Description:
1164    
1165      Fix for a backpatching bug reported by Allen.
1166    
1167      Because the boundary between short and long span-dependent
1168      instructions is +/- 128, there are an astounding number of
1169      span-dependent instructions whose size is over estimated.
1170    
1171      Allen came up with the idea of letting the size of span
1172      dependent instructions be non-monotonic, for a maxIter
1173      number of times, after which the size must be monotonically
1174      increasing.
1175    
1176      This table shows the number of span-dependent instructions
1177      whose size was over-estimated as a function of maxIter, for the
1178      file Parse/parse/ml.grm.sml:
1179    
1180         maxIter            # of instructions:
1181            10                      687
1182            20                      438
1183            30                      198
1184            40                        0
1185    
1186      In compiling the compiler, there is no significant difference in
1187      compilation speed between maxIter=10 and maxIter=40. Actually,
1188      my measurements showed that maxIter=40 was a tad faster than
1189      maxIter=10! Also 96% of the  files in the compiler reach a fix
1190      point within 13 iterations, so fixing maxIter at 40, while high,
1191      is okay.
1192    
1193    ----------------------------------------------------------------------
1194    Name: Matthias Blume
1195    Date: 2001/10/31 15:25:00 EST
1196    Tag: blume-20011031-pgraph
1197    Description:
1198    
1199    CKIT:
1200    * Changed the "Function" constructor of type Ast.ctype to carry optional
1201      argument identifiers.
1202    * Changed the return type of TypeUtil.getFunction accordingly.
1203    * Type equality ignores the argument names.
1204    * TypeUtil.composite tries to preserve argument names but gives up quickly
1205      if there is a mismatch.
1206    
1207    installation script:
1208    * attempts to use "curl" if available (unless "wget" is available as well)
1209    
1210    CM:
1211    * has an experimental implementation of "portable graphs" which I will
1212      soon propose as an implementation-independent library format
1213    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
1214    
1215    NLFFI-LIB:
1216    * some cleanup (all cosmetic)
1217    
1218    NLFFIGEN:
1219    * temporarily disabled the mechanism that suppresses ML output for
1220      C definitions whose identifiers start with an underscore character
1221    * generate val bindings for enum constants
1222    * user can request that only one style (light or heavy) is being used;
1223      default is to use both (command-line arguments: -heavy and -light)
1224    * fixed bug in handling of function types involving incomplete pointers
1225    * generate ML entry points that take record arguments (i.e., using
1226      named arguments) for C functions that have a prototype with named
1227      arguments
1228      (see changes to CKIT)
1229    
1230    ----------------------------------------------------------------------
1231    Name: Allen Leung
1232    Date: 2001/10/27 20:34:00 EDT
1233    Tag: leunga-20011027-x86-fast-fp-call
1234    Description:
1235    
1236       Fixed the bug described in blume-20010920-slowfp.
1237    
1238       The fix involves
1239          1. generating FCOPYs in FSTP in ia32-svid
1240          2. marking a CALL with the appropriate annotation
1241    
1242    ----------------------------------------------------------------------
1243    Name: Matthias Blume
1244    Date: 2001/10/16 11:32:00 EDT
1245    Tag: blume-20011016-netbsd
1246    Description:
1247    
1248    Underscore patch from Chris Richards (fixing problem with compiling
1249    runtime system under recent NetBSD).
1250    
1251    ----------------------------------------------------------------------
1252    Name: Allen Leung
1253    Date: 2001/10/12 17:18:32 EDT 2001
1254    Tag: leung-20011012-x86-printflowgraph
1255    Description:
1256    
1257    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
1258    
1259    ----------------------------------------------------------------------
1260    Name: Lal George
1261    Date: 2001/10/11 23:51:34 EDT
1262    Tag: george-20011011-too-many-instrs
1263    Description:
1264    
1265    The representation of a program point never expected to see more
1266    than 65536 instructions in a basic block!
1267    
1268    ----------------------------------------------------------------------
1269    Name: Lal George
1270    Date: 2001/10/09 09:41:37 EDT
1271    Tag: george-20011008-mlrisc-labels
1272    Description:
1273    
1274    Changed the machine description files to support printing of
1275    local and global labels in assembly code, based on host assembler
1276    conventions.
1277    
1278    ----------------------------------------------------------------------
1279    Name: Matthias Blume
1280    Date: 2001/09/25 15:25:00 EDT
1281    Tag: blume-20010925-exninfo
1282    Description:
1283    
1284    I provided a non-hook implementation of exnName (at the toplevel) and
1285    made the "dummy" implementation of exnMessage (at the toplevel) more
1286    useful: if nothing gets "hooked in", then at least you are going to
1287    see the exception name and a message indicating why you don't see more.
1288    
1289    [For the time being, programs that need exnMessage and want to use
1290    ml-build should either use General.exnMessage (strongly recommended) or
1291    refer to structure General at some other point so that CM sees a
1292    static dependency.]
1293    
1294    [Similar remarks go for "print" and "use":  If you want to use their
1295    functionality in stand-alone programs generated by ml-build, then use
1296    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
1297    
1298    ----------------------------------------------------------------------
1299    Name: Matthias Blume
1300    Date: 2001/09/20 17:28:00 EDT
1301    Tag: blume-20010920-slowfp
1302    Description:
1303    
1304    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
1305    
1306    ----------------------------------------------------------------------
1307    Name: Matthias Blume
1308    Date: 2001/09/20 17:20:00 EDT
1309    Tag: blume-20010920-canonicalpaths
1310    Description:
1311    
1312    0. Updated the BOOT file (something that I forgot to do earlier).
1313    
1314    1. Small internal change to CM so that it avoids "/../" in filenames
1315       as much as possible (but only where it is safe).
1316    
1317    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
1318       that arguments that contain delimiters are passed through correctly.
1319       This change also means that all "special" arguments of the form
1320       @SMLxxx... must come first.
1321    
1322    3. Changed install script to put relative anchor names for tool commands
1323       into pathconfig.
1324    
1325    ----------------------------------------------------------------------
1326    Name: Matthias Blume
1327    Date: 2001/09/18 15:35:00 EDT
1328    Tag: blume-20010918-readme11036
1329    Description:
1330    
1331    Added README files.
1332    
1333    ----------------------------------------------------------------------
1334    Name: Matthias Blume
1335    Date: 2001/09/18 11:45:00 EDT
1336    Tag: Release_110_36 (retag)
1337    Description:
1338    
1339    Fixed mistake in config/preloads. Retagged as 110.36.
1340    
1341    ----------------------------------------------------------------------
1342    Name: Matthias Blume
1343    Date: 2001/09/18 09:40:00 EDT
1344    Tag: Release_110_36_orig (tag changed)
1345    Description:
1346    
1347    New version (110.36).  New bootfiles.
1348    
1349    ----------------------------------------------------------------------
1350    Name: Matthias Blume
1351    Date: 2001/09/14 16:15:00 EDT
1352    Tag: blume-20010914-x86fastfp
1353    Description:
1354    
1355    John committed some changes that Allen made, in particular a (hopefully)
1356    correctly working version of the x86-fp module.
1357    
1358    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
1359    flag to "true".  Everything seems to compile to a fixpoint ok, and
1360    "mandelbrot" speeds up by about 15%.
1361    
1362    ----------------------------------------------------------------------
1363    Name: Matthias Blume
1364    Date: 2001/09/13 11:20:00 EDT
1365    Tag: blume-20010913-minimal
1366    Description:
1367    
1368    1. Stefan Monnier's patch to fix a miscompilation problem that
1369       was brought to light by John Reppy's work on Moby.
1370    
1371    2. Implemented a minimal "structure Compiler" that contains just
1372       "version" and "architecture".  The minimal version will be
1373       available when the full version is not.  This is for backward-
1374       compatibility with code that wants to test Compiler.version.
1375    
1376    ----------------------------------------------------------------------
1377    Name: Matthias Blume
1378    Date: 2001/08/28 14:03:00 EDT
1379    Tag: blume-20010828-ml-lex
1380    Description:
1381    
1382    Fix for bug 1581, received from Neophytos Michael.
1383    
1384    ----------------------------------------------------------------------
1385    Name: Matthias Blume
1386    Date: 2001/08/27 11:20:00 EDT
1387    Tag: blume-20010827-readme11035
1388    Description:
1389    
1390    Fleshed out the README file for 110.35.
1391    
1392    ----------------------------------------------------------------------
1393    Name: Matthias Blume
1394    Date: 2001/08/24 17:10:00 EDT
1395    Tag: Release_110_35
1396    Description:
1397    
1398    New version number (110.35).  New bootfiles.
1399    
1400    ----------------------------------------------------------------------
1401    Name: Lal George
1402    Date: 2001/08/24 13:47:18 EDT 2001
1403    Tag: george-20010824-MLRISC-graphs
1404    Description:
1405    
1406     removed clusters from MLRISC completely and replaced with graphs.
1407    
1408    ----------------------------------------------------------------------
1409    Name: Matthias Blume
1410    Date: 2001/08/23 17:50:00 EDT
1411    Tag: blume-20010823-toplevel
1412    Description:
1413    
1414    - some reorganization of the code that implements various kinds of
1415      environments in the compiler (static, dynamic, symbolic, combined)
1416    - re-implemented the EnvRef module so that evalStream works properly
1417      (if the stream contains references to "use", "CM.make", etc.)
1418    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
1419    
1420    ----------------------------------------------------------------------
1421  Name: Matthias Blume  Name: Matthias Blume
1422  Date: 2001/08/20 15:50 EDT  Date: 2001/08/20 15:50 EDT
1423  Tag: blume20010820-slipup  Tag: blume20010820-slipup
# Line 2895  Line 4300 
4300       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
4301       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
4302       Please, don't be too harsh on me for messing with this code a bit more       Please, don't be too harsh on me for messing with this code a bit more
4303       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
4304       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
4305       Dave's hands. :)       Dave's hands. :)
4306    

Legend:
Removed from v.904  
changed lines
  Added in v.1130

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