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 683, Wed Jul 5 00:42:19 2000 UTC revision 1058, Fri Feb 8 20:02:56 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: Matthias Blume
17    Date: 2002/02/08 15:00:00 EST
18    Tag: blume-20020208-uniquepid
19    Description:
20    
21    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
22    
23    1. The installer (config/install.sh) has gotten smarter:
24    
25         - Configuration options are a bit easier to specify now
26           (in config/targets).
27         - Bug in recognizing .tar.bz2 files fixed.
28         - Installer automatically resolves dependencies between
29           configuration options (e.g., if you ask for eXene, you will
30           also get cml -- regardless whether you asked for it or not).
31         - Installer can run in "quieter mode" by setting the environment
32           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
33           "completely silent", though.
34         - Build HashCons library as part of smlnj-lib.
35    
36    2. A new scheme for assigning persistent identifiers to compilation
37       units (and, by extension, to types etc.) has been put into place.
38       This fixes a long-standing bug where types and even dynamic values
39       can get internally confused, thereby compromising type safety
40       (abstraction) and dynamic correctness.  See
41    
42         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
43    
44       for an example of how things could go wrong until now.
45    
46       The downside of the new scheme is that pids are not quite as
47       persistent as they used to be: CM will generate a fresh pid
48       for every compilation unit that it thinks it sees for the first
49       time.  That means that if you compile starting from a clean, fresh
50       source tree at two different times, you end up with different
51       binaries.
52    
53       Cutoff recompilation, however, has not been compromised because
54       CM keeps pid information in special caches between runs.
55    
56    ----------------------------------------------------------------------
57    Name: Lal George
58    Date: 2002/02/07 15:34:13 EST 2002
59    Tag: <none>
60    Description:
61    
62    Compilers that generate assembly code may produce  global labels
63    whose value is resolved at link time. The various peephole optimization
64    modules did not take this in account.
65    
66    TODO. The Labels.addrOf function should really return an option
67    type so that clients are forced to deal with this issue, rather
68    than an exception being raised.
69    
70    ----------------------------------------------------------------------
71    Name: Lal George
72    Date: 2002/02/06 13:55:02 EST
73    Tag: george-20020206-ra-breakup
74    Description:
75    
76    1. A bug fix from Allen.
77    
78        A typo causes extra fstp %st(0)'s to be generated at compensation
79        edges, which might cause stack underflow traps at runtime.  This
80        occurs in fft where there are extraneous fstps right before the 'into'
81        trap instruction (in this case they are harmless since none of the
82        integers overflow.)
83    
84    2. Pulled out various utility modules that were embedded in the modules
85       of the register allocator. I need these modules for other purposes, but
86       they are not complete enough to put into a library (just yet).
87    ----------------------------------------------------------------------
88    Name: Matthias Blume
89    Date: 2002/01/31 16:05:00 EST
90    Tag: blume-20020131-sparc-ccalls
91    Description:
92    
93    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
94       of extra stack space by mistake.  Fixed.
95    
96    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
97    
98    ----------------------------------------------------------------------
99    Name: Allen Leung
100    Date: 2002/01/30
101    Tag: leunga-20020130-nowhere-bug-fix
102    Description:
103    
104       MLRISC bug fixes:
105       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
106       2. MachineInt.fromString was negating its value.
107    
108    ----------------------------------------------------------------------
109    Name: Matthias Blume
110    Date: 2002/01/29
111    Tag: blume-20020129-INSTALL
112    Description:
113    
114    - Added somewhat detailed installation instructions (file INSTALL).
115    - Fixed curl-detection bug in config/install.sh.
116    - It is now possible to select the URL getter using the URLGETTER
117      environment variable:
118    
119          not set / "unknown"      --> automatic detection (script tries wget,
120                                       curl, and lynx)
121          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
122                                       how to properly invoke them)
123          other                    --> use $URLGETTER directly, it must take
124                                       precisely two command-line arguments
125                                       (source URL and destination file name)
126    
127    ----------------------------------------------------------------------
128    Name: Matthias Blume
129    Date: 2002/01/28
130    Tag: blume-20020128-sparc-ccalls
131    Description:
132    
133    - Fixed problem with calculation of "used" registers in sparc-c-calls.
134    - Make use of the allocParam argument in sparc-c-calls.
135    
136    ----------------------------------------------------------------------
137    Name: Matthias Blume
138    Date: 2002/01/28
139    Tag: blume-20020128-allocParam
140    Description:
141    
142    John Reppy:  Changes c-calls API to accept client-callback for
143    allocating extra stack space.
144    me: Corresponding changes to mlriscGen (using a dummy argument that
145        does not change the current behavior).
146    
147    ----------------------------------------------------------------------
148    Name: Matthias Blume
149    Date: 2002/01/28 12:00:00
150    Tag: Release_110_38
151    Description:
152    
153    This time for real!!!
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume
157    Date: 2002/01/28 10:56:00 EST
158    Tag: blume-20020128-retraction
159    Description:
160    
161    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
162       with blume-Release_110_38-retracted.)
163    
164    1. Fixed a problem with incorrect rounding modes in real64.sml.
165       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
166    
167    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
168       and enums fixed.  The naming of corresponding ML identifiers should
169       now be consistent again.
170    
171    ----------------------------------------------------------------------
172    Name: Allen Leung
173    Date: 2002/01/27
174    Tag: leunga-20020127-nowhere
175    Description:
176    
177       Added a target called nowhere in the configuration scripts.
178       Enabling this will build the MLRISC 'nowhere' tool (for translating
179       programs with where-clauses into legal SML code) during installation.
180    
181    ----------------------------------------------------------------------
182    Name: Matthias Blume
183    Date: 2002/01/25 21:27:00 EST
184    Tag: blume-Release_110_38-retracted
185    Description:
186    
187    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
188    
189    README will be added later.
190    
191    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
192    (Release_110_38) removed.  Reason: Last-minute bug fixes.
193    
194    ----------------------------------------------------------------------
195    Name: Matthias Blume
196    Date: 2002/01/25
197    Tag: blume-20020125-ffi
198    Description:
199    
200    A large number of tweaks and improvements to ml-nlffi-lib and
201    ml-nlffigen:
202    
203       - ML represenation types have been streamlined
204       - getter and setter functions work with concrete values, not abstract
205         ones where possible
206       - ml-nlffigen command line more flexible (see README file there)
207       - some bugs have been fixed (hopefully)
208    
209    ----------------------------------------------------------------------
210    Name: Lal George
211    Date: 2002/01/24
212    Tag: george-20020124-risc-ra-interface
213    Description:
214    
215       There is a dramatic simplification in the interface to the
216       register allocator for RISC architectures as a result of making
217       parallel copy instructions explicit.
218    
219    ----------------------------------------------------------------------
220    Name: Matthias Blume
221    Date: 2002/01/22
222    Tag: blume-20020122-x86-ccalls
223    Description:
224    
225    Bug fix for c-calls on x86 (having to do with how char- and
226    short-arguments are being handled).
227    
228    ----------------------------------------------------------------------
229    Name: Matthias Blume
230    Date: 2002/01/21
231    Tag: blume-20020121-ff
232    Description:
233    
234    Another day of fiddling with the FFI...
235    
236    1. Bug fix/workaround:  CKIT does not complain about negative array
237       dimensions, so ml-nlffigen has to guard itself against this possibility.
238       (Otherwise a negative dimension would send it into an infinite loop.)
239    
240    2. Some of the abstract types (light objects, light pointers, most "base"
241       types) in structure C are now eqtypes.
242    
243    3. Added constructors and test functions for NULL function pointers.
244    
245    ----------------------------------------------------------------------
246    Name: Matthias Blume
247    Date: 2002/01/18
248    Tag: blume-20020118-ready-for-new-release
249    Description:
250    
251    Made config/srcarchiveurl point to a new place.  (Will provide boot
252    files shortly.)
253    
254    Maybe we christen this to be 110.38?
255    
256    ----------------------------------------------------------------------
257    Name: Matthias Blume
258    Date: 2002/01/18
259    Tag: blume-20020118-more-ffifiddle
260    Description:
261    
262    Today's FFI fiddling:
263    
264      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
265        C.Set.* that use concrete (MLRep.*) arguments and results instead
266        of abstract ones.
267    
268      - Provided word-style bit operations etc. for "int" representation
269        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
270        and Long.
271    
272    ----------------------------------------------------------------------
273    Name: Matthias Blume
274    Date: 2002/01/18
275    Tag: blume-20020118-use-x86-fp
276    Description:
277    
278    Now that x86-fast-fp seems to be working, I turned it back on again
279    by default.  (Seems to work fine now, even with the FFI.)
280    
281    Other than that, I added some documentation about the FFI to
282    src/ml-nlffigen/README and updated the FFI test examples in
283    src/ml-nlffi-lib/Tests/*.
284    
285    ----------------------------------------------------------------------
286    Name: Allen Leung
287    Date: 2002/01/17
288    Tag: leunga-20020117-x86-fast-fp-call
289    Description:
290    
291       1. Fixed a problem with handling return fp values when x86's fast fp
292          mode is turned on.
293    
294       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
295          of %f32.
296    
297       3. Added a constructor INT32lit to the ast of MLRISC tools.
298    
299    ----------------------------------------------------------------------
300    Name: Matthias Blume
301    Date: 2002/01/16
302    Tag: blume-20020116-ffifiddle
303    Description:
304    
305    More fiddling with the FFI interface:
306    
307     - Make constness 'c instead of rw wherever possible.  This eliminates
308       the need for certain explicit coercions.  (However, due to ML's
309       value polymorphism, there will still be many cases where explicit
310       coercions are necessary.  Phantom types are not the whole answer
311       to modeling a subtyping relationship in ML.)
312    
313     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
314    
315     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
316       clumsy workaround for varargs problem.)
317    
318    ----------------------------------------------------------------------
319    Name: Lal George
320    Date: 2002/01/15
321    Tag: <none>
322    Description:
323    
324    1. Since COPY instructions are no longer native to the architecture,
325       a generic functor can be used to implement the expandCopies function.
326    
327    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
328       TEXT segment.
329    
330    ----------------------------------------------------------------------
331    Name: Matthias Blume
332    Date: 2002/01/15
333    Tag: blume-20020115-ffiupdates
334    Description:
335    
336    1. Fix for bug resulting in single-precision float values being returned
337       incorrectly from FFI calls.
338    
339    2. Small modifications to C FFI API:
340    
341        - memory-allocation routines return straight objects (no options)
342          and raise an exception in out-of-memory situations
343        - unsafe extensions to cast between function pointers and pointers
344          from/to ints
345        - added structure C_Debug as an alternative to structure C where
346          pointer-dereferencing (|*| and |*!) always check for null-pointers
347        - added open_lib' to DynLinkage;  open_lib' works like open_lib
348          but also takes a (possibly empty) list of existing library handles
349          that the current library depends on
350    
351    ----------------------------------------------------------------------
352    Name: Matthias Blume
353    Date: 2002/01/10
354    Tag: blume-20020110-newffigen
355    Description:
356    
357    1. Updates to portable graph code.
358    
359    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
360       more scalable now so that even huge interfaces such as the one
361       for GTK compile in finite time and space. :-)
362       See src/ml-nlffigen/README for details on what's new.
363    
364    ----------------------------------------------------------------------
365    Name: Lal George
366    Date: 2001/01/09 14:31:35 EST 2002
367    Tag: george-20011206-rm-native-copy
368    Description:
369    
370            Removed the native COPY and FCOPY instructions
371            from all the architectures and replaced it with the
372            explicit COPY instruction from the previous commit.
373    
374            It is now possible to simplify many of the optimizations
375            modules that manipulate copies. This has not been
376            done in this change.
377    
378    ----------------------------------------------------------------------
379    Name: Lal George
380    Date: 2001/12/06 16:50:13 EST 2001
381    Tag: george-20011206-mlrisc-instruction
382    Description:
383    
384    Changed the representation of instructions from being fully abstract
385    to being partially concrete. That is to say:
386    
387      from
388            type instruction
389    
390      to
391            type instr                              (* machine instruction *)
392    
393            datatype instruction =
394                LIVE of {regs: C.cellset, spilled: C.cellset}
395              | KILL of {regs: C.cellset, spilled: C.cellset}
396              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
397              | ANNOTATION of {i: instruction, a: Annotations.annotation}
398              | INSTR of instr
399    
400    This makes the handling of certain special instructions that appear on
401    all architectures easier and uniform.
402    
403    LIVE and KILL say that a list of registers are live or killed at the
404    program point where they appear. No spill code is generated when an
405    element of the 'regs' field is spilled, but the register is moved to
406    the 'spilled' (which is present, more for debugging than anything else).
407    
408    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
409    We used to generate:
410    
411            DEFFREG f1
412            f1 := f2 + f3
413            trapb
414    
415    but now generate:
416    
417            f1 := f2 + f3
418            trapb
419            LIVE {regs=[f1,f2,f3], spilled=[]}
420    
421    Furthermore, the DEFFREG (hack) required that all floating point instruction
422    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
423    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
424    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
425    this architecture).
426    
427    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
428    all the architectures. This will result in further simplification of the
429    register allocator that must be aware of them for coalescing purposes, and
430    will also simplify certain aspects of the machine description that provides
431    callbacks related to parallel copies.
432    
433    ANNOTATION should be obvious, and now INSTR represents the honest to God
434    machine instruction set!
435    
436    The <arch>/instructions/<arch>Instr.sml files define certain utility
437    functions for making porting easier -- essentially converting upper case
438    to lower case. All machine instructions (of type instr) are in upper case,
439    and the lower case form generates an MLRISC instruction. For example on
440    the alpha we have:
441    
442      datatype instr =
443         LDA of {r:cell, b:cell, d:operand}
444       | ...
445    
446      val lda : {r:cell, b:cell, d:operand} -> instruction
447        ...
448    
449    where lda is just (INSTR o LDA), etc.
450    
451    ----------------------------------------------------------------------
452    Name: Matthias Blume
453    Date: 2001/11/22 21:40:00 EST
454    Tag: Release_110_37
455    Description:
456    
457    Release 110.37.  This time for real.
458    
459    ----------------------------------------------------------------------
460    Name: Matthias Blume
461    Date: 2001/11/21 16:35:00 EST
462    Tag: blume-20011121-foot-in-mouth
463    Description:
464    
465    Removed the "Release_110_37" tag because of a serious bug.
466    This will be re-tagged once the bug is fixed.
467    
468    ----------------------------------------------------------------------
469    Name: Matthias Blume
470    Date: 2001/11/21 16:14:00 EST
471    Tag: blume-20011121-forgottenfile
472    Description:
473    
474    Forgot to add a file.  (Just a .tex-file -- part of
475    the CM manual source.)
476    
477    ----------------------------------------------------------------------
478    Name: Matthias Blume
479    Date: 2001/11/21 16:10:00 EST
480    Tag: blume-20011121-invalid_110_37
481    Description:
482    
483    Note: I removed the original tag "Release_110_37" from this commit
484          because we found a serious bug in all non-x86 backends.
485          - Matthias
486    
487    1. Modifications to the SML/NJ code generator and to the runtime system
488       so that code object name strings are directly inserted into code
489       objects at code generation time.  The only business the runtime system
490       has with this is now to read the name strings on occasions.
491       (The encoding of the name string has also changed somewhat.)
492    
493    2. CM now implements a simple "set calculus" for specifying export lists.
494       In particular, it is now possible to refer to the export lists of
495       other libraries/groups/sources and form unions as well as differences.
496       See the latest CM manual for details.
497    
498    3. An separate notion of "proxy" libraries has again be eliminated from
499       CM's model.  (Proxy libraries are now simply a special case of using
500       the export list calculus.)
501    
502    4. Some of the existing libraries now take advantage of the new set
503       calculus.
504       (Notice that not all libraries have been converted because some
505       of the existing .cm-files are supposed to be backward compatible
506       with 110.0.x.)
507    
508    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
509       "General.exnMessage"!  The former relies on a certain hook to be
510       initialized, and that often does not happen in the stand-alone case.)
511    
512    ----------------------------------------------------------------------
513    Name: Lal George
514    Date: 2001/11/21  13:56:18 EST
515    Tag: george-2001121-pseudo-ops
516    Description:
517    
518      Implemented a complete redesign of MLRISC pseudo-ops. Now there
519      ought to never be any question of incompatabilities with
520      pseudo-op syntax expected by host assemblers.
521    
522      For now, only modules supporting GAS syntax are implemented
523      but more should follow, such as MASM, and vendor assembler
524      syntax, e.g. IBM as, Sun as, etc.
525    
526    ----------------------------------------------------------------------
527    Name: Matthias Blume
528    Date: 2001/11/14 11:52:00 EST
529    Tag: blume-20011114-srcname
530    Description:
531    
532    1. Routed the name of the current source file to mlriscgen where it
533       should be directly emitted into the code object.  (This last part
534       is yet to be done.)
535    
536    2. Some cleanup of the pgraph code to make it match the proposal that
537       I put out the other day.  (The proposal notwithstanding, things are
538       still in flux here.)
539    
540    ----------------------------------------------------------------------
541    Name: Lal George
542    Date: 2001/11/14 09:44:04 EST
543    Tag:
544    Description:
545    
546      Fix for a backpatching bug reported by Allen.
547    
548      Because the boundary between short and long span-dependent
549      instructions is +/- 128, there are an astounding number of
550      span-dependent instructions whose size is over estimated.
551    
552      Allen came up with the idea of letting the size of span
553      dependent instructions be non-monotonic, for a maxIter
554      number of times, after which the size must be monotonically
555      increasing.
556    
557      This table shows the number of span-dependent instructions
558      whose size was over-estimated as a function of maxIter, for the
559      file Parse/parse/ml.grm.sml:
560    
561         maxIter            # of instructions:
562            10                      687
563            20                      438
564            30                      198
565            40                        0
566    
567      In compiling the compiler, there is no significant difference in
568      compilation speed between maxIter=10 and maxIter=40. Actually,
569      my measurements showed that maxIter=40 was a tad faster than
570      maxIter=10! Also 96% of the  files in the compiler reach a fix
571      point within 13 iterations, so fixing maxIter at 40, while high,
572      is okay.
573    
574    ----------------------------------------------------------------------
575    Name: Matthias Blume
576    Date: 2001/10/31 15:25:00 EST
577    Tag: blume-20011031-pgraph
578    Description:
579    
580    CKIT:
581    * Changed the "Function" constructor of type Ast.ctype to carry optional
582      argument identifiers.
583    * Changed the return type of TypeUtil.getFunction accordingly.
584    * Type equality ignores the argument names.
585    * TypeUtil.composite tries to preserve argument names but gives up quickly
586      if there is a mismatch.
587    
588    installation script:
589    * attempts to use "curl" if available (unless "wget" is available as well)
590    
591    CM:
592    * has an experimental implementation of "portable graphs" which I will
593      soon propose as an implementation-independent library format
594    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
595    
596    NLFFI-LIB:
597    * some cleanup (all cosmetic)
598    
599    NLFFIGEN:
600    * temporarily disabled the mechanism that suppresses ML output for
601      C definitions whose identifiers start with an underscore character
602    * generate val bindings for enum constants
603    * user can request that only one style (light or heavy) is being used;
604      default is to use both (command-line arguments: -heavy and -light)
605    * fixed bug in handling of function types involving incomplete pointers
606    * generate ML entry points that take record arguments (i.e., using
607      named arguments) for C functions that have a prototype with named
608      arguments
609      (see changes to CKIT)
610    
611    ----------------------------------------------------------------------
612    Name: Allen Leung
613    Date: 2001/10/27 20:34:00 EDT
614    Tag: leunga-20011027-x86-fast-fp-call
615    Description:
616    
617       Fixed the bug described in blume-20010920-slowfp.
618    
619       The fix involves
620          1. generating FCOPYs in FSTP in ia32-svid
621          2. marking a CALL with the appropriate annotation
622    
623    ----------------------------------------------------------------------
624    Name: Matthias Blume
625    Date: 2001/10/16 11:32:00 EDT
626    Tag: blume-20011016-netbsd
627    Description:
628    
629    Underscore patch from Chris Richards (fixing problem with compiling
630    runtime system under recent NetBSD).
631    
632    ----------------------------------------------------------------------
633    Name: Allen Leung
634    Date: 2001/10/12 17:18:32 EDT 2001
635    Tag: leung-20011012-x86-printflowgraph
636    Description:
637    
638    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
639    
640    ----------------------------------------------------------------------
641    Name: Lal George
642    Date: 2001/10/11 23:51:34 EDT
643    Tag: george-20011011-too-many-instrs
644    Description:
645    
646    The representation of a program point never expected to see more
647    than 65536 instructions in a basic block!
648    
649    ----------------------------------------------------------------------
650    Name: Lal George
651    Date: 2001/10/09 09:41:37 EDT
652    Tag: george-20011008-mlrisc-labels
653    Description:
654    
655    Changed the machine description files to support printing of
656    local and global labels in assembly code, based on host assembler
657    conventions.
658    
659    ----------------------------------------------------------------------
660    Name: Matthias Blume
661    Date: 2001/09/25 15:25:00 EDT
662    Tag: blume-20010925-exninfo
663    Description:
664    
665    I provided a non-hook implementation of exnName (at the toplevel) and
666    made the "dummy" implementation of exnMessage (at the toplevel) more
667    useful: if nothing gets "hooked in", then at least you are going to
668    see the exception name and a message indicating why you don't see more.
669    
670    [For the time being, programs that need exnMessage and want to use
671    ml-build should either use General.exnMessage (strongly recommended) or
672    refer to structure General at some other point so that CM sees a
673    static dependency.]
674    
675    [Similar remarks go for "print" and "use":  If you want to use their
676    functionality in stand-alone programs generated by ml-build, then use
677    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
678    
679    ----------------------------------------------------------------------
680    Name: Matthias Blume
681    Date: 2001/09/20 17:28:00 EDT
682    Tag: blume-20010920-slowfp
683    Description:
684    
685    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
686    
687    ----------------------------------------------------------------------
688    Name: Matthias Blume
689    Date: 2001/09/20 17:20:00 EDT
690    Tag: blume-20010920-canonicalpaths
691    Description:
692    
693    0. Updated the BOOT file (something that I forgot to do earlier).
694    
695    1. Small internal change to CM so that it avoids "/../" in filenames
696       as much as possible (but only where it is safe).
697    
698    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
699       that arguments that contain delimiters are passed through correctly.
700       This change also means that all "special" arguments of the form
701       @SMLxxx... must come first.
702    
703    3. Changed install script to put relative anchor names for tool commands
704       into pathconfig.
705    
706    ----------------------------------------------------------------------
707    Name: Matthias Blume
708    Date: 2001/09/18 15:35:00 EDT
709    Tag: blume-20010918-readme11036
710    Description:
711    
712    Added README files.
713    
714    ----------------------------------------------------------------------
715    Name: Matthias Blume
716    Date: 2001/09/18 11:45:00 EDT
717    Tag: Release_110_36 (retag)
718    Description:
719    
720    Fixed mistake in config/preloads. Retagged as 110.36.
721    
722    ----------------------------------------------------------------------
723    Name: Matthias Blume
724    Date: 2001/09/18 09:40:00 EDT
725    Tag: Release_110_36_orig (tag changed)
726    Description:
727    
728    New version (110.36).  New bootfiles.
729    
730    ----------------------------------------------------------------------
731    Name: Matthias Blume
732    Date: 2001/09/14 16:15:00 EDT
733    Tag: blume-20010914-x86fastfp
734    Description:
735    
736    John committed some changes that Allen made, in particular a (hopefully)
737    correctly working version of the x86-fp module.
738    
739    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
740    flag to "true".  Everything seems to compile to a fixpoint ok, and
741    "mandelbrot" speeds up by about 15%.
742    
743    ----------------------------------------------------------------------
744    Name: Matthias Blume
745    Date: 2001/09/13 11:20:00 EDT
746    Tag: blume-20010913-minimal
747    Description:
748    
749    1. Stefan Monnier's patch to fix a miscompilation problem that
750       was brought to light by John Reppy's work on Moby.
751    
752    2. Implemented a minimal "structure Compiler" that contains just
753       "version" and "architecture".  The minimal version will be
754       available when the full version is not.  This is for backward-
755       compatibility with code that wants to test Compiler.version.
756    
757    ----------------------------------------------------------------------
758    Name: Matthias Blume
759    Date: 2001/08/28 14:03:00 EDT
760    Tag: blume-20010828-ml-lex
761    Description:
762    
763    Fix for bug 1581, received from Neophytos Michael.
764    
765    ----------------------------------------------------------------------
766    Name: Matthias Blume
767    Date: 2001/08/27 11:20:00 EDT
768    Tag: blume-20010827-readme11035
769    Description:
770    
771    Fleshed out the README file for 110.35.
772    
773    ----------------------------------------------------------------------
774    Name: Matthias Blume
775    Date: 2001/08/24 17:10:00 EDT
776    Tag: Release_110_35
777    Description:
778    
779    New version number (110.35).  New bootfiles.
780    
781    ----------------------------------------------------------------------
782    Name: Lal George
783    Date: 2001/08/24 13:47:18 EDT 2001
784    Tag: george-20010824-MLRISC-graphs
785    Description:
786    
787     removed clusters from MLRISC completely and replaced with graphs.
788    
789    ----------------------------------------------------------------------
790    Name: Matthias Blume
791    Date: 2001/08/23 17:50:00 EDT
792    Tag: blume-20010823-toplevel
793    Description:
794    
795    - some reorganization of the code that implements various kinds of
796      environments in the compiler (static, dynamic, symbolic, combined)
797    - re-implemented the EnvRef module so that evalStream works properly
798      (if the stream contains references to "use", "CM.make", etc.)
799    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
800    
801    ----------------------------------------------------------------------
802    Name: Matthias Blume
803    Date: 2001/08/20 15:50 EDT
804    Tag: blume20010820-slipup
805    Description:
806    
807    I forgot to commit a few files.  Here they are...
808    
809    ----------------------------------------------------------------------
810    Name: Matthias Blume
811    Date: 2001/08/20 15:35:00 EDT
812    Tag: blume-20010820-debugprof
813    Description:
814    
815    !!!! NEW BOOTFILES !!!!
816    
817    This is another round of reorganizing the compiler sources.  This
818    time the main goal was to factor out all the "instrumentation"
819    passes (for profiling and backtracing) into their own library.
820    The difficulty was to do it in such a way that it does not depend
821    on elaborate.cm but only on elabdata.cm.
822    
823    Therefore there have been further changes to both elaborate.cm and
824    elabdata.cm -- more "generic" things have been moved from the former
825    to the latter.  As a result, I was forced to split the assignment
826    of numbers indicating "primtyc"s into two portions: SML-generic and
827    SML/NJ-specific.  Since it would have been awkward to maintain,
828    I bit the bullet and actually _changed_ the mapping between these
829    numbers and primtycs.  The bottom line of this is that you need
830    a new set of bin- and bootfiles.
831    
832    I have built new bootfiles for all architectures, so doing a fresh
833    checkout and config/install.sh should be all you need.
834    
835    The newly created library's name is
836    
837        $smlnj/viscomp/debugprof.cm
838    
839    and its sources live under
840    
841        src/compiler/DebugProf
842    
843    ----------------------------------------------------------------------
844    Name: Matthias Blume
845    Date: 2001/08/15 17:15:00 EDT
846    Tag: blume-20010815-compreorg
847    Description:
848    
849    This is a first cut at reorganizing the CM libraries that make up the
850    core of the compiler.  The idea is to separate out pieces that could
851    be used independently by tools, e.g., the parser, the typechecker, etc.
852    
853    The current status is a step in this direction, but it is not quite
854    satisfactory yet.  Expect more changes in the future.
855    
856    Here is the current (new) organization...
857    
858        What used to be $smlnj/viscomp/core.cm is now divided into
859        six CM libraries:
860    
861             $smlnj/viscomp/basics.cm
862                           /parser.cm
863                           /elabdata.cm
864                           /elaborate.cm
865                           /execute.cm
866                           /core.cm
867    
868        The CM files for these libraries live under src/system/smlnj/viscomp.
869        All these libraries are proxy libraries that contain precisely
870        one CM library component.  Here are the locations of the components
871        (all within the src/compiler tree):
872    
873             Basics/basics.cm
874             Parse/parser.cm
875             ElabData/elabdata.cm
876             Elaborator/elaborate.cm
877             Execution/execute.cm
878             core.cm
879    
880         [This organization is the same that has been used already
881         for a while for the architecture-specific parts of the visible
882         compiler and for the old version of core.cm.]
883    
884         As you will notice, many source files have been moved from their
885         respective original locations to a new home in one of the above
886         subtrees.
887    
888         The division of labor between the new libraries is the following:
889    
890             basics.cm:
891                - Simple, basic definitions that pertain to many (or all) of
892                  the other libraries.
893             parser.cm:
894                - The SML parser, producing output of type Ast.dec.
895                - The type family for Ast is also defined and exported here.
896             elabdata.cm:
897                - The datatypes that describe input and output of the elaborator.
898                  This includes types, absyn, and static environments.
899             elaborator.cm:
900                - The SML/NJ type checker and elaborator.
901                  This maps an Ast.dec (with a given static environment) to
902                  an Absyn.dec (with a new static environment).
903                - This libraries implements certain modules that used to be
904                  structures as functors (to remove dependencies on FLINT).
905             execute.cm:
906                - Everything having to do with executing binary code objects.
907                - Dynamic environments.
908             core.cm:
909                - SML/NJ-specific instantiations of the elaborator and MLRISC.
910                - Top-level modules.
911                - FLINT (this should eventually become its own library)
912    
913    Notes:
914    
915    I am not 100% happy with the way I separated the elaborator (and its
916    data structures) from FLINT.  Two instances of the same problem:
917    
918        1. Data structures contain certain fields that carry FLINT-specific
919           information.  I hacked around this using exn and the property list
920           module from smlnj-lib.  But the fact that there are middle-end
921           specific fields around at all is a bit annoying.
922    
923        2. The elaborator calculates certain FLINT-related information.  I tried
924           to make this as abstract as I could using functorization, but, again,
925           the fact that the elaborator has to perform calculations on behalf
926           of the middle-end at all is not nice.
927    
928        3. Having to used exn and property lists is unfortunate because it
929           weakens type checking.  The other alternative (parameterizing
930           nearly *everything*) is not appealing, though.
931    
932    I removed the "rebinding =" warning hack because due to the new organization
933    it was awkward to maintain it.  As a result, the compiler now issues some of
934    these warnings when compiling init.cmi during bootstrap compilation. On
935    the plus side, you also get a warning when you do, for example:
936       val op = = Int32.+
937    which was not the case up to now.
938    
939    I placed "assign" and "deref" into the _Core structure so that the
940    code that deals with the "lazy" keyword can find them there.  This
941    removes the need for having access to the primitive environment
942    during elaboration.
943    
944    ----------------------------------------------------------------------
945    Name: Matthias Blume
946    Date: 2001/08/13
947    Tag: blume-20010813-closures
948    Description:
949    
950    This fix was sent to us by Zhong Shao.  It is supposed to improve the
951    performance of certain loops by avoiding needless closure allocation.
952    
953    ----------------------------------------------------------------------
954    Name: Lal George
955    Date: 2001/07/31 10:03:23 EDT 2001
956    Tag: george-20010731-x86-fmalloc
957    Description: Fixed bug in x86 calls
958    
959        There was a bug where call instructions would mysteriously
960        vanish. The call instruction had to be one that returned
961        a floating point value.
962    
963    ----------------------------------------------------------------------
964    Name: Lal George
965    Date: 2001/07/19 16:36:29 EDT 2001
966    Tag: george-20010719-simple-cells
967    Description:
968    
969    I have dramatically simplified the interface for CELLS in MLRISC.
970    
971    In summary, the cells interface is broken up into three parts:
972    
973      1. CellsBasis : CELLS_BASIS
974    
975            CellsBasis is a top level structure and common for all
976            architectures.  it contains the definitions of basic datatypes
977            and utility  functions over these types.
978    
979      2. functor Cells() : CELLS
980    
981            Cells generates an interface for CELLS that incorporates the
982            specific resources on the target architecture, such as the
983            presence of special register classes, their number and size,
984            and various useful substructures.
985    
986      3. <ARCH>CELLS
987    
988            e.g. SparcCells: SPARCCELLS
989    
990            <ARCH>CELLS usually contains additional bindings for special
991            registers  on the architecture, such as:
992    
993                    val r0 : cell           (* register zero *)
994                    val y : cell            (* Y register *)
995                    val psr : cell          (* processor status register *)
996                    ...
997    
998            The structure returned by applying the Cells functor is opened
999            in this interface.
1000    
1001    The main implication of all this is that the datatypes for cells is
1002    split between CellsBasis and CELLS -- a fairly simple change for user
1003    code.
1004    
1005    In the old scheme the CELLS interface had a definitional binding of
1006    the form:
1007    
1008            signature CELLS = sig
1009    
1010               structure CellsBasis = CellsBasis
1011    
1012               ...
1013    
1014            end
1015    
1016    With all the sharing constraints that goes on in MLRISC, this old
1017    design  quickly leads to errors such as:
1018    
1019            "structure definition spec inside of sharing ... "
1020    
1021    
1022    and appears to require an unacceptable amount of sharing and where
1023    constraint hackery.
1024    
1025    I think this error message (the interaction of definitional specs and
1026    sharing) requires more explanation on our web page.
1027    
1028    ----------------------------------------------------------------------
1029    Name: Matthias Blume
1030    Date: 2001/07/19 15:00:00 EDT
1031    Tag: blume-20010719-libreorg
1032    Description:
1033    
1034    This update puts together a fairly extensive but straightforward change
1035    to the way the libraries that implement the interactive system are
1036    organized:
1037    
1038       The biggest change is the elimination of structure Compiler.  As a
1039       replacement for this structure, there is now a CM library
1040       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
1041       that exports all the substructures of the original structure Compiler
1042       directly.  So instead of saying Compiler.Foo.bar one now simply
1043       says Foo.bar.  (The CM libraries actually export a collection of
1044       structures that is richer than the collection of substructures of
1045       structure Compiler.)
1046    
1047       To make the transition smooth, there is a separate library called
1048       $smlnj/compiler/compiler.cm which puts together and exports the
1049       original structure Compiler (or at least something very close to it).
1050    
1051       There are five members of the original structure Compiler
1052       that are not exported directly but which instead became members
1053       of a new structure Backend (described by signature BACKEND).  These are:
1054       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
1055       Interact (: INTERACT), structure Machine (: MACHINE), and val
1056       architecture (: string).
1057    
1058       Structure Compiler.Version has become structure CompilerVersion.
1059    
1060       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
1061       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
1062       or x86, respectively.
1063       Each of these exports the same frontend structures that
1064       $smlnj/compiler.cm exports.  But they do not have a structure Backend
1065       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
1066       Hppa, PPC, Sparc, or X86, respectively.
1067    
1068       Library $smlnj/compiler/all.cm exports the union of the exports of
1069       $smlnj/compiler/<arch>.cm
1070    
1071       There are no structures <Arch>Compiler anymore, use
1072       $smlnj/compiler/<arch>.cm instead.
1073    
1074       Library host-compiler-0.cm is gone.  Instead, the internal library
1075       that instantiates CM is now called cm0.cm.  Selection of the host
1076       compiler (backend) is no longer done here but. (Responsibility for it
1077       now lies with $smlnj/compiler/current.cm.  This seems to be more
1078       logical.)
1079    
1080       Many individual files have been moved or renamed.  Some files have
1081       been split into multiple files, and some "dead" files have been deleted.
1082    
1083    Aside from these changes to library organization, there are also changes
1084    to the way the code itself is organized:
1085    
1086       Structure Binfile has been re-implemented in such a way that it no
1087       longer needs any knowledge of the compiler.  It exclusively deals
1088       with the details of binfile layout.  It no longer invokes the
1089       compiler (for the purpose of creating new prospective binfile
1090       content), and it no longer has any knowledge of how to interpret
1091       pickles.
1092    
1093       Structure Compile (: COMPILE) has been stripped down to the bare
1094       essentials of compilation.  It no longer deals with linking/execution.
1095       The interface has been cleaned up considerably.
1096    
1097       Utility routines for dealing with linking and execution have been
1098       moved into their own substructures.
1099    
1100       (The ultimate goal of these changes is to provide a light-weight
1101       binfile loader/linker (at least for, e.g., stable libraries) that
1102       does not require CM or the compiler to be present.)
1103    
1104    CM documentation has been updated to reflect the changes to library
1105    organization.
1106    
1107    ----------------------------------------------------------------------
1108    Name: Matthias Blume
1109    Date: 2001/07/10 17:30:00 EDT
1110    Tag: Release_110_34
1111    Description:
1112    
1113    Minor tweak to 110.34 (re-tagged):
1114    
1115      - README.html file added to CVS repository
1116      - runtime compiles properly under FreeBSD 3.X and 4.X
1117    
1118    ----------------------------------------------------------------------
1119    Name: Matthias Blume
1120    Date: 2001/07/10 17:30:00 EDT
1121    Tag: Release_110_34
1122    Description:
1123    
1124    New version number (110.34). New bootfiles.
1125    
1126    ----------------------------------------------------------------------
1127    Name: Matthias Blume
1128    Date: 2001/07/09 16:00:00 EDT
1129    Tag: blume-20010709-more-varargs
1130    Description:
1131    
1132    I changed the handling of varargs in ml-nlffigen again:
1133    The ellipsis ... will now simply be ignored (with an accompanying warning).
1134    
1135    The immediate effect is that you can actually call a varargs function
1136    from ML -- but you can't actually supply any arguments beyond the ones
1137    specified explicitly.  (For example, you can call printf with its format
1138    string, but you cannot pass additional arguments.)
1139    
1140    This behavior is only marginally more useful than the one before, but
1141    it has the advantage that a function or, more importantly, a function
1142    type never gets dropped on the floor, thus avoiding follow-up problems with
1143    other types that refer to the offending one.
1144    
1145    ----------------------------------------------------------------------
1146    Name: Matthias Blume
1147    Date: 2001/07/09 11:25:00 EDT
1148    Tag: blume-20010709-varargs
1149    Description:
1150    
1151    1. ckit-lib.cm now exports structure Error
1152    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
1153       with a warning accompanied by a source location.  Moreover, it
1154       merely skips the offending function or type and proceeds with the
1155       rest of its work.u  As a result, one can safely feed C code containing
1156       "..." to ml-nlffigen.
1157    3. There are some internal improvements to CM, providing slightly
1158       more general string substitutions in the tools subsystem.
1159    
1160    ----------------------------------------------------------------------
1161    Name: Matthias Blume
1162    Date: 2001/06/27 15:10:00 EDT
1163    Tag: blume-20010627-concur
1164    Description:
1165    
1166    Fixed a small bug in CM's handling of parallel compilation.
1167    (You could observe the bug by Control-C-interrupting an ordinary
1168    CMB.make or CM.stabilize and then attaching some compile servers.
1169    The result was that all of a sudden the previously interrupted
1170    compilation would continue on its own.  This was because of
1171    an over-optimization: CM did not bother to clean out certain queues
1172    when no servers were attached "anyway", resulting in the contents
1173    of these queues to grab control when new servers did get attached.)
1174    
1175    There is also another minor update to the CM manual.
1176    
1177    ----------------------------------------------------------------------
1178    Name: Matthias Blume
1179    Date: 2001/06/26 16:15:00 EDT
1180    Tag: blume-20010626-cmdoc
1181    Description:
1182    
1183    Minor typo fixed in CM manual (syntax diagram for libraries).
1184    
1185    ----------------------------------------------------------------------
1186    Name: Matthias Blume
1187    Date: 2001/06/25 22:55:00 EDT
1188    Tag: blume-20010625-x86pc
1189    Description:
1190    
1191    Fixed a nasty bug in the X86 assembly code that caused signal
1192    handlers to fail (crash) randomly.
1193    
1194    ----------------------------------------------------------------------
1195    Name: Matthias Blume
1196    Date: 2001/06/25 12:05:00 EDT
1197    Tag: blume-20010625-nlffigen
1198    Description:
1199    
1200    This update fixes a number of minor bugs in ml-nlffigen as reported by
1201    Nick Carter <nbc@andrew.cmu.edu>.
1202    
1203      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
1204      2. Default names for generated files are now derived from the name of
1205         the C file *without its directory*.  In particular, this causes generated
1206         files to be placed locally even if the C file is in some system directory.
1207      3. Default names for generated signatures and structures are also derived
1208         from the C file name without its directory.  This avoids silly things
1209         like "structure GL/GL".
1210         (Other silly names are still possible because ml-nlffigen does not do
1211          a thorough check of whether generated names are legal ML identifiers.
1212          When in doubt, use command line arguments to force particular names.)
1213    
1214    ----------------------------------------------------------------------
1215    Name: Matthias Blume
1216    Date: 2001/06/21 12:25:00 EDT
1217    Tag: blume-20010621-eXene
1218    Description:
1219    
1220    eXene now compiles and (sort of) works again.
1221    
1222    The library name (for version > 110.33) is $/eXene.cm.
1223    
1224    I also added an new example in src/eXene/examples/nbody.  See the
1225    README file there for details.
1226    
1227    ----------------------------------------------------------------------
1228    Name: Matthias Blume
1229    Date: 2001/06/20 16:40:00 EDT
1230    Tag: blume-20010620-cml
1231    Description:
1232    
1233    CML now compiles and works again.
1234    
1235    Libraries (for version > 110.33):
1236    
1237      $cml/cml.cm            Main CML library.
1238      $cml/basis.cm          CML's version of $/basis.cm.
1239      $cml/cml-internal.cm   Internal helper library.
1240      $cml/core-cml.cm       Internal helper library.
1241      $cml-lib/trace-cml.cm  Tracing facility.
1242      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
1243    
1244    The installer (config/install.sh) has been taught how to properly
1245    install this stuff.
1246    
1247    ----------------------------------------------------------------------
1248    Name: Matthias Blume
1249    Date: 2001/06/19 17:55:00 EDT
1250    Tag: blume-20010619-instantiate
1251    Description:
1252    
1253    This un-breaks the fix for bug 1432.
1254    (The bug was originally fixed in 110.9 but I broke it again some
1255    time after that.)
1256    
1257    ----------------------------------------------------------------------
1258    Name: Matthias Blume
1259    Date: 2001/06/19 17:25:00 EDT
1260    Tag: blume-20010619-signals
1261    Description:
1262    
1263    This should (hopefully) fix the long-standing signal handling bug.
1264    (The runtime system was constructing a continuation record with an
1265    incorrect descriptor which would cause the GC to drop data on the floor...)
1266    
1267    ----------------------------------------------------------------------
1268    Name: Matthias Blume
1269    Date: 2001/06/15 15:05:00 EDT
1270    Tag: blume-20010615-moresparc
1271    Description:
1272    
1273    Here is a short late-hour update related to Sparc c-calls:
1274    
1275     -- made handling of double-word arguments a bit smarter
1276    
1277     -- instruction selection phase tries to collapse certain clumsily
1278        constructed ML-Trees; typical example:
1279    
1280            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
1281    
1282        This currently has no further impact on SML/NJ since mlriscGen does
1283        not seem to generate such patterns in the first place, and c-calls
1284        (which did generate them in the beginning) has meanwhile been fixed
1285        so as to avoid them as well.
1286    
1287    ----------------------------------------------------------------------
1288    Name: Matthias Blume
1289    Date: 2001/06/15 15:05:00 EDT
1290    Tag: blume-20010615-sparc
1291    Description:
1292    
1293    The purpose of this update is to provide an implementation of NLFFI
1294    on Sparc machines.
1295    
1296    Here are the changes in detail:
1297    
1298       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
1299       the Sparc implementation of the c-calls API.
1300       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
1301       for accessing the ML frame.  Thus, we have a real frame pointer and
1302       can freely modify %sp without need for an omit-frame-ptr phase.
1303       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
1304       this case.
1305       * ml-nlffigen has been taught to produce code for different architectures
1306       and calling conventions.
1307       * In a way similar to what was done in the x86 case, the Sparc
1308       backend uses its own specific extension to mltree.  (For example,
1309       it needs to be able to generate UNIMP instructions which are part
1310       of the calling convention.)
1311       * ml-nlffi-lib was reorganized to make it more modular (in particular,
1312       to make it easier to plug in new machine- and os-dependent parts).
1313    
1314    There are some other fairly unrelated bug fixes and cleanups as well:
1315    
1316       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
1317       that they properly share their libraries with existing SML/NJ libraries.
1318       * I fixed a minor cosmetic bug in CM, supressing certain spurious
1319       follow-up error messages.
1320       * Updates to CM/CMB documentation.
1321    
1322    TODO items:
1323    
1324       * MLRISC should use a different register as its asmTemp on the Sparc.
1325         (The current %o2 is a really bad choice because it is part of the
1326         calling conventions, so things might interfere in unexpected ways.)
1327    
1328    ----------------------------------------------------------------------
1329    Name: Matthias Blume
1330    Date: 2001/06/07
1331    Tag: blume-20010607-calls
1332    Description:
1333    
1334    A number of internal changes related to C calls and calling conventions:
1335    
1336    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
1337       number of bytes popped implicitly (by the callee).  In most cases
1338       this field is 0 but on x86/win32 it is some non-zero value.  This
1339       is information provided for the benefit of the "omit-frameptr" pass.
1340    2. The CALL instruction on the x86 carries a similar "pops" field.
1341       The instruction selection phase copies its value from the ML-Tree
1342       CALL statement.
1343    3. On all other architectures, the instruction selection phase checks
1344       whether "pops=0" and complains if not.
1345    4. The c-calls implementation for x86 now accepts two calling conventions:
1346       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
1347       up after the call and pops is set to 0.  For "stdcall", the caller
1348       does nothing, leaving the cleanup to the callee; pops is set to
1349       the number of bytes that were pushed onto the stack.
1350    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
1351       distinguish between "ccall" and "stdcall".
1352    6. The UNIMP instruction has been added to the supported Sparc instruction
1353       set. (This is needed for implementing the official C calling convention
1354       on this architecture.)
1355    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
1356       work with the latest CM.
1357    
1358    ----------------------------------------------------------------------
1359    Name: Matthias Blume
1360    Date: 2001/06/05 15:10:00 EDT
1361    Tag: blume-20010605-cm-index
1362    Description:
1363    
1364    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
1365    
1366    1. CM can now generate "index files".  These are human-readable files
1367       that list on a per-.cm-file basis each toplevel symbol defined or
1368       imported.  The location of the index file for
1369       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
1370       To enable index-file generation, set CM.Control.generate_index to true
1371       or export an environment-symbol: export CM_GENERATE_INDEX=true.
1372    
1373       The CM manual has been updated accordingly.
1374    
1375    2. I made some slight modifications to the c-calls API in MLRISC.
1376    
1377         a) There is now a callback to support saving/restoring of
1378            dedicated but caller-save registers around the actual call
1379            instruction.
1380         b) One can optionally specify a comment-annotation for the
1381            call instruction.
1382    
1383    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
1384       (For example, the comment annotation shows the C prototype of
1385        the function being called.)
1386    
1387    ----------------------------------------------------------------------
1388    Name: Matthias Blume
1389    Date: 2001/06/01 13:30:00 EDT
1390    Tag: blume-20010601-nlffi-cleanup
1391    Description:
1392    
1393    This is mostly a cleanup of MLFFI stuff:
1394    
1395       - some signature files have been put into a more exposed place
1396       - the ugly 'f type parameter is gone (simplifies types tremendously!)
1397       - ml-nlffigen changed accordingly
1398       - tutorial updated
1399    
1400    Other changes:
1401    
1402       - author's affiliation in CM manual(s) updated
1403       - some more recognized keywords added to Allen's sml.sty
1404    
1405    ----------------------------------------------------------------------
1406    Name: Matthias Blume
1407    Date: 2001/05/25 15:30:00 EDT
1408    Tag: blume-20010525-iptr
1409    Description:
1410    
1411      - put the official 110.33-README (as it appears on the ftp server) under
1412        CVS
1413      - fixed a small bug related to incomplete pointer types in
1414        ml-nlffigen
1415      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
1416        (it does not need the 'f type parameter)
1417    
1418    ----------------------------------------------------------------------
1419    Name: Matthias Blume
1420    Date: 2001/05/23 14:30:00 EDT
1421    Tag: Release_110_33
1422    Description:
1423    
1424    New version number (110.33).  New bootfiles.
1425    
1426    ----------------------------------------------------------------------
1427    Name: Matthias Blume
1428    Date: 2001/05/22 18:06:00 EDT
1429    Tag: blume-20010522-targets
1430    Description:
1431    
1432    Made install.sh use file config/targets.customized if it exists, falling
1433    back to config/targets if it doesn't.  This way one can have a customized
1434    version of the targets file without touching the "real thing", thus
1435    eliminating the constant fear of accidentally checking something bogus
1436    back into the CVS repository...  (File config/targets.customized must
1437    not be added to the repository!)
1438    
1439    ----------------------------------------------------------------------
1440    Name: Matthias Blume
1441    Date: 2001/05/22 16:30:00 EDT
1442    Tag: blume-20010522-minitut
1443    Description:
1444    
1445    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
1446       struct returns.
1447    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
1448       incomplete, preliminary documentation for NLFFI.
1449    
1450    ----------------------------------------------------------------------
1451    Name: Matthias Blume
1452    Date: 2001/05/14 11:30:00 EDT
1453    Tag: blume-20010514-script
1454    Description:
1455    
1456    Some bugs in install script fixed.
1457    
1458    In addition to that I also made a slight change to the NLFFI API:
1459    Functors generated by ml-nlffigen now take the dynamic library as a
1460    straight functor argument, not as a suspended one.  (The original
1461    functor code used to force the suspension right away anyway, so there
1462    was nothing gained by this complication of the interface.)
1463    
1464    ----------------------------------------------------------------------
1465    Name: Matthias Blume
1466    Date: 2001/05/11 14:35:00 EDT
1467    Tag: blume-20010511-ml-nlffi
1468    Description:
1469    
1470    I finally took the plunge and added my new FFI code to the main
1471    repository.  For x86-linux it is now ready for prime-time.
1472    
1473    There are two new subdirectories of "src":
1474    
1475      - ml-nlffi-lib:
1476           The utility library for programs using the FFI interface.
1477           Here is the implementation of $/c.cm and its associated low-level
1478           partners $/c-int.cm and $/memory.cm.
1479      - ml-nlffigen:
1480           A stand-alone program for generating ML glue code from C source
1481           code.
1482    
1483    Building ml-nlffigen requires $/ckit-lib.cm.
1484    
1485    The config/install.sh script has been updates to do the Right Thing
1486    (hopefully).
1487    
1488    Notice that the source tree for the C-Kit will not be put under "src"
1489    but directly under the installation root directory.  (This is the
1490    structure that currently exists on the CVS server when you check out
1491    module "sml".)  Fortunately, config/install.sh knows about this oddity.
1492    
1493    Bugs: No documentation yet.
1494    
1495    ----------------------------------------------------------------------
1496    Name: Matthias Blume
1497    Date: 2001/05/09 16:35:00 EDT
1498    Tag: blume-20010509-cpscontract
1499    Description:
1500    
1501    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
1502    wrapper/unwrapper elimination did not decrement usage counts and some
1503    dead variables got overlooked by the dead-up logic.)
1504    
1505    ----------------------------------------------------------------------
1506    Name: Lal George
1507    Date: 2001/05/08  17:26:09 EDT
1508    Tag: george-20010508-omit-frameptr
1509    Description:
1510    
1511    Changes to implement the omit-frame-pointer optimization to support
1512    raw C calls. For now, there is only support on the Intel x86, but
1513    other architectures will follow as more experience is gained with this.
1514    
1515    
1516    ----------------------------------------------------------------------
1517    Name: Matthias Blume
1518    Date: 2001/05/07 14:40:00 EDT
1519    Tag: blume-20010507-proxies
1520    Description:
1521    
1522    I made into "proxy libraries" all libraries that qualify for such a
1523    change.  (A qualifying library is a library that has another library or
1524    groups as its sole member and repeats that member's export list
1525    verbatim.  A proxy library avoids this repetition by omitting its export
1526    list, effectively inheriting the list that its (only) member exports.
1527    See the CM manual for more explanation.)
1528    The main effect is that explicit export lists for these libraries
1529    do not have to be kepts in sync, making maintenance a bit easier.
1530    
1531    I also added copyright notices to many .cm-files.
1532    
1533    Last but not least, I made a new set of bootfiles.
1534    
1535    ----------------------------------------------------------------------
1536    Name: Matthias Blume
1537    Date: 2001/05/04 17:00:00 EDT
1538    Tag: blume-20010504-cm-lsplit
1539    Description:
1540    
1541    0. John merged pending changes to $/smlnj-lib.cm
1542    
1543    1. Allen's previous change accidentally backed out of one of Lal's
1544       earlier changes.  I undid this mistake (re-introducing Lal's change).
1545    
1546    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
1547       within the compiler where applicable.  There is some code simplification
1548       because of that.
1549    
1550    3. The "split" phase (in FLINT) is now part of the default list of phases.
1551       Compiler.Control.LambdaSplitting.* can be used to globally control the
1552       lambda-splitting (cross-module-inlining) engine.  In addition to that,
1553       it can now also be controlled on a per-source basis: CM has been taught
1554       a new tool parameter applicable to ML source files.
1555    
1556       - To turn lambda-splitting off completely:
1557            local open Compiler.Control.LambdaSplitting in
1558                val _ = set Off
1559            end
1560       - To make "no lambda-splitting" the global default (but allow per-source
1561         overriding); this is the initial setting:
1562            local open Compiler.Control.LambdaSplitting in
1563                val _ = set (Default NONE)
1564            end
1565       - To make "lambda-splitting with aggressiveness a" the global default
1566         (and allow per-source overriding):
1567            local open Compiler.Control.LambdaSplitting in
1568                val _ = set (Default (SOME a))
1569            end
1570    
1571       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
1572         write (in the respective .cm-file):
1573            a.sml (lambdasplitting:off)
1574       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
1575            a.sml (lambdasplitting:on)
1576       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
1577         <a> is a decimal non-negative integer):
1578            a.sml (lambdasplitting:<a>)
1579       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
1580            a.sml (lambdasplitting:infinity)
1581       - To use the global default for a.sml:
1582            a.sml (lambdasplitting:default)
1583         or simply
1584            a.sml
1585    
1586    ----------------------------------------------------------------------
1587    Name: Allen Leung
1588    Date: 2001/05/04 01:57:00 EDT
1589    Tag: leunga-20010504-sync
1590    Description:
1591    
1592      MLRISC features.
1593    
1594      1. Fix to CMPXCHG instructions.
1595      2. Changed RA interface to allow annotations in callbacks.
1596      3. Added a new method to the stream interface to allow annotations updates.
1597    
1598    ----------------------------------------------------------------------
1599    Name: Matthias Blume
1600    Date: 2001/05/01 11:45:00 EDT
1601    Tag: blume-20010501-pcedittmp
1602    Description:
1603    
1604    Changed install.sh to use the current working directory instead of
1605    /usr/tmp for a temporary file (pcedittmp).  The previous choice
1606    of /usr/tmp caused trouble with MacOS X because of file premission
1607    problems.
1608    
1609    ----------------------------------------------------------------------
1610    Name: Matthias Blume
1611    Date: 2001/04/20 11:10:00 EDT
1612    Tag: blume-20010420-inMLflag
1613    Description:
1614    
1615     - added vp_limitPtrMask to vproc-state.h
1616       (for use by the raw-C-calls mechanism to implement proper interrupt
1617        handling)
1618     - made the ML compiler aware of various data-structure offsets so it
1619       can generate code for accessing the vp_inML flag and vp_limitPtrMask
1620     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
1621       raw C-calls
1622    
1623    ----------------------------------------------------------------------
1624    Name: Lal George
1625    Date: 2001/04/20 09:15:28 EDT
1626    Tag: george-20010420-macosX
1627    Description:
1628    
1629     - Changes to port to Mac OS X; Darwin.
1630    
1631     - In the process I found that sqrt was broken on the PPC, because the
1632       fsqrt instruction is not implemented.
1633    
1634    ----------------------------------------------------------------------
1635    Name: Matthias Blume
1636    Date: 2001/04/18 12:45:00 EDT
1637    Tag: blume-20010418-ccalls
1638    Description:
1639    
1640     - fixed two off-by-4 errors in the x86-specific c-calls implementation
1641       (this bug prevented structure arguments containing pointers from being
1642        passed correctly)
1643     - changed the raw-C-call code in mlriscGen.sml in such a way that
1644       structure arguments are represented as a pointer to the beginning
1645       of the structure (instead of having a series of synthesized arguments,
1646       one for each structure member)
1647    
1648     - made makeml script's verbosity level configurable via environment
1649       variable (MAKEML_VERBOSITY)
1650    
1651     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
1652       in rawmem-x86.sml; we are now using the real thing
1653    
1654    ----------------------------------------------------------------------
1655    Name: Matthias Blume
1656    Date: 2001/03/22 16:25:00 EST
1657    Tag: blume-20010322-bootfiles
1658    Description:
1659    
1660    Created a new set of bootfiles (for your automatic installation convenience).
1661    
1662    ----------------------------------------------------------------------
1663    Name: Matthias Blume
1664    Date: 2001/03/22 15:10:00 EST
1665    Tag: blume-20010322-rawmem-parcm
1666    Description:
1667    
1668    1. All "raw memory access" primitives for the new FFI are implemented now
1669       (at least on the x86).
1670    2. Some further cleanup of CM's parallel make mechanism.
1671    
1672    ----------------------------------------------------------------------
1673    Name: Matthias Blume
1674    Date: 2001/03/19 17:53:00 EST
1675    Tag: blume-20010319-parallel
1676    Description:
1677    
1678    Parallel make (using compile servers) now works again.
1679    
1680    To this end, CM.stabilize and CMB.make have been modified to work in
1681    two passes when compile servers are attached:
1682       1. Compile everything, do not perform stabilization; this pass
1683          uses compile servers
1684       2. Stabilize everything; this pass does not use compile servers
1685    If there are no compile servers, the two passes are combined into one
1686    (as before).  Splitting the passes increases the inherent parallelism
1687    in the dependency graph because the entire graph including all
1688    libraries is available at the same time.  This, in turn, improves
1689    server utilization.  The downside is that the master process will
1690    have to do some extra work after compilation is done (because for
1691    technical reasons it must re-read all the binfiles during stabilization).
1692    
1693    ----------------------------------------------------------------------
1694    Name: Matthias Blume
1695    Date: 2001/03/16 12:22:00 EST
1696    Tag: blume-20010316-bootfiles
1697    Description:
1698    
1699    Created a new set of bootfiles (for your automatic installation convenience).
1700    
1701    ----------------------------------------------------------------------
1702    Name: Matthias Blume
1703    Date: 2001/03/16 11:00:00 EST
1704    Tag: blume-20010316-MLTREE-fixup
1705    Description:
1706    
1707    This is a minor fixup for an (untagged) earlier commit by Allen.
1708    (A file was missing).
1709    
1710    ----------------------------------------------------------------------
1711    Name: Allen Leung
1712    Date: Mon Mar  5 18:54:57 EST 2001
1713    Tag: leunga-20010305-cut-support
1714    
1715    1. New support for alternative control-flow in MLTREE.
1716       Currently we support
1717    
1718          FLOW_TO(CALL ...., [k1,...,kn])
1719    
1720       This is needed for 'cuts to' in C-- and try/handle-like constructs
1721       in Moby
1722    
1723       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
1724    
1725    2. Register Allocator
1726    
1727       Changes in interface [from Fermin, John]
1728    
1729    3. Alpha 8-bit SLL support [Fermin]
1730    
1731    4. All architectures
1732    
1733       A new module (ClusterExpandCopies) for expanding parallel copies.
1734    
1735    ----------------------------------------------------------------------
1736    Name: Allen Leung
1737    Date: 2001/02/27 23:07:00 EST
1738    Tag: leunga-20010227-minor-stuff
1739    
1740    1. Alpha bug fix for CMOVNE
1741    2. Handle mltree COND(..,FCMP ...,...)
1742    3. Bug fix in simplifier
1743    
1744    ----------------------------------------------------------------------
1745    Name: Matthias Blume
1746    Date: 2001/01/30 17:50:00 EST
1747    Tag: blume-20010130-sync
1748    Description:
1749    
1750    This is just a minor update to sync my devel branch with the main brach.
1751    The only visible change is the addition of some README files.
1752    
1753    ----------------------------------------------------------------------
1754    Name: Matthias Blume
1755    Date: 2001/01/12 23:30:00 JST
1756    Tag: blume-20010112-bootfiles
1757    Description:
1758    
1759    Made a new set of bootfiles that goes with the current state of the
1760    repository.
1761    
1762    ----------------------------------------------------------------------
1763    Name: Matthias Blume
1764    Date: 2001/01/12 21:20:00 JST
1765    Tag: blume-20010112-sync
1766    Description:
1767    
1768    I am just flushing out some minor changes that had accumulated in
1769    my private branch in order to sync with the main tree.  (This is
1770    mainly because I had CVS trouble when trying to merge _into_ my
1771    private branch.)
1772    
1773    Most people should be completely unaffected by this.
1774    
1775    ----------------------------------------------------------------------
1776    Name: Allen Leung
1777    Date: Thu Jan 11 21:03:00 EST 2001
1778    Tag: leunga-20010111-labexp=mltree
1779    Description:
1780    
1781    1.  Removed the type LabelExp and replace it by MLTree.
1782    2.  Rewritten mltree-simplify with the pattern matcher tool.
1783    3.  There were some bugs in alpha code generator which would break
1784        64-bit code generation.
1785    4.  Redo the tools to generate code with the
1786    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
1787        are now generated by perl scripts.
1788    
1789    ----------------------------------------------------------------------
1790    Name: Matthias Blume
1791    Date: 2001/01/10 21:55:00 JST
1792    Tag: blume-20010110-rcc
1793    Description:
1794    
1795    The RCC stuff now seems to work (but only on the x86).
1796    This required hacking of the c-calls interface (and -implementation) in
1797    MLRISC.
1798    
1799    Normal compiler users should be unaffected.
1800    
1801    ----------------------------------------------------------------------
1802    Name: Matthias Blume
1803    Date: 2001/01/09 01:20:00 JST
1804    Tag: blume-20010109-rcc
1805    Description:
1806    
1807    This is a fairly big patch, flushing out a large number of pending
1808    changes that I made to my development copy over the last couple of days.
1809    
1810    Of practical relevance at this moment is a workaround for a pickling
1811    bug that Allen ran into the other day.  The cause of the bug itself is
1812    still unknown and it might be hard to fix it properly, but the
1813    workaround has some merits of its own (namely somewhat reducing pickling
1814    overhead for certain libraries).  Therefore, I think this solution should
1815    be satisfactory at this time.
1816    
1817    The rest of the changes (i.e., the vast majority) has to do with my
1818    ongoing efforts of providing direct support for C function calls from
1819    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
1820    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
1821    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
1822    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
1823    handle RCC.
1824    
1825    The last part (the changes to mlriscGen.sml) are still known to be
1826    wrong on the x86 and not implemented on all other architectures.  But
1827    the infrastructure is in place. I had to change a few functor
1828    signatures in the backend to be able to route the CCalls interface
1829    from MLRISC there, and I had to specialize the mltree type (on the
1830    x86) to include the necessary extensions. (The extensions themselves
1831    were already there and redy to go in MLRISC/x86).
1832    
1833    Everything should be very happy as soon as someone helps me with
1834    mlriscGen.sml...
1835    
1836    In any case, nothing of this should matter to anyone as long as the
1837    new primop is not being used (which is going to be the case unless you
1838    find it where I hid it :). The rest of the compiler is completely
1839    unaffected.
1840    
1841    ----------------------------------------------------------------------
1842    Name: Matthias Blume
1843    Date: 2001/01/05 00:30:00 JST
1844    Tag: blume-20010105-primops
1845    Description:
1846    
1847    Added some experimental support for work that I am doing right now.
1848    These changes mostly concern added primops, but there is also a new
1849    experimental C library in the runtime system (but currently not enabled
1850    anywhere except on Linux/X86).
1851    
1852    In the course of adding primops (and playing with them), I discovered that
1853    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
1854    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
1855    To recover, I made type information in INL_PRIM mandatory and changed
1856    prim.sml as well as built-in.sml accordingly.  The InLine structure now
1857    has complete, correct type information (i.e., no bottom types).
1858    
1859    Since all these changes mean that we need new binfiles, I also bumped the
1860    version number to 110.32.1.
1861    
1862    ----------------------------------------------------------------------
1863    Name: Matthias Blume
1864    Date: 2000/12/30 22:10:00 JST
1865    Tag: blume-20001230-various
1866    Description:
1867    
1868    Added proxy libraries for MLRISC and let MLRISC libraries refer
1869    to each other using path anchors.  (See CM manual for explanation.)
1870    
1871    Updated CM documentation.
1872    
1873    Fixed some bugs in CM.
1874    
1875    Implemented "proxy" libraries (= syntactic sugar for CM).
1876    
1877    Added "-quiet" option to makeml and changed runtime system accordingly.
1878    
1879    Added cleanup handler for exportML to reset timers and compiler stats.
1880    
1881    ----------------------------------------------------------------------
1882    Name: Lal George
1883    Date: 2000/12/22 22:22:58 EST 2000
1884    Tag: Release_110_32
1885    Description:
1886    
1887            Infinite precision used throughout MLRISC.
1888            see MLRISC/mltree/machine-int.sig
1889    
1890    ----------------------------------------------------------------------
1891    Name: Matthias Blume
1892    Date: 2000/12/22 23:16:00 JST
1893    Tag: blume-20001222-warn
1894    Description:
1895    
1896    Corrected wording and formatting of some CM warning message which I
1897    broke in my previous patch.
1898    
1899    ----------------------------------------------------------------------
1900    Name: Matthias Blume
1901    Date: 2000/12/22 21:20:00 JST
1902    Tag: blume-20001222-anchorenv
1903    Description:
1904    
1905    Fixed CM's handling of anchor environments in connection with CMB.make.
1906    
1907    ----------------------------------------------------------------------
1908    Name: Matthias Blume
1909    Date: 2000/12/22 13:15:00 JST
1910    Tag: blume-20001222-cleanup
1911    Description:
1912    
1913    Removed src/cm/ffi which does not (and did not) belong here.
1914    
1915    ----------------------------------------------------------------------
1916    Name: Matthias Blume
1917    Date: 2000/12/21 23:55:00 JST
1918    Tag: blume-20001221-exn
1919    Description:
1920    
1921    Probably most important: CM no longer silently swallows all exceptions
1922    in the compiler.
1923    Plus: some other minor CM changes.  For example, CM now reports some
1924    sizes for generated binfiles (code, data, envpickle, lambdapickle).
1925    
1926    ----------------------------------------------------------------------
1927    Name: Matthias Blume
1928    Date: 2000/12/15 00:01:05 JST
1929    Tag: blume-20001215-dirtool
1930    Description:
1931    
1932    - "dir" tool added.
1933    - improvements and cleanup to Tools structure
1934    - documentation updates
1935    
1936    ----------------------------------------------------------------------
1937    Name: Allen Leung
1938    Date: Thu Dec 14 03:45:24 EST 2000
1939    Description:
1940    Tag:  leunga-20001214-int-inf
1941    Description:
1942    
1943       In IntInf, added these standard functions, which are missing from our
1944    implementation:
1945    
1946        andb : int * int -> int
1947        xorb : int * int -> int
1948        orb  : int * int -> int
1949        notb : int -> int
1950         <<   : int * word -> int
1951        ~>>  : int * word -> int
1952    
1953       Not tested, I hope they are correct.
1954    
1955    ----------------------------------------------------------------------
1956    Name: Allen Leung
1957    Date: Fri Dec  8 19:23:26 EST 2000
1958    Description:
1959    Tag:  leunga-20001208-nowhere
1960    Description:
1961    
1962      Slight improvements to the 'nowhere' tool to handle OR-patterns,
1963    to generate better error messages etc.  Plus a brief manual.
1964    
1965    ----------------------------------------------------------------------
1966    Name: Lal George
1967    Date: 2000/12/08 09:54:02 EST 2000
1968    Tag: Release_110_31
1969    Description:
1970    
1971    - Version 110.31
1972    ----------------------------------------------------------------------
1973    Name: Allen Leung
1974    Date: Thu Dec  7 22:01:04 EST 2000
1975    Tag:  leunga-20001207-cell-monster-hack
1976    Description:
1977    
1978    Major MLRISC internal changes.  Affect all clients.
1979    Summary:
1980    
1981    1.  Type CELLS.cell = int is now replaced by a datatype.
1982        As a result, the old regmap is now gone.  Almost all interfaces
1983        in MLRISC change as a consequence.
1984    
1985    2.  A new brand version of machine description tool (v3.0) that generates
1986        modules expecting the new interface.  The old version is removed.
1987    
1988    3.  The RA interface has been further abstracted into two new functors.
1989        RISC_RA and X86RA.  These functors have much simpler interfaces.
1990        [See also directory MLRISC/demo.]
1991    
1992    4.  Some other new source->source code generation tools are available:
1993    
1994        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
1995        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
1996           I use this tool to generate the peephole optimizers---with the new
1997           cell type changes, peephole rules are becoming difficult to write
1998           without conditional pattern matching.
1999    
2000    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
2001        cover the entire MLRISC source tree so many things broke.
2002    
2003    6.  CM files have been moved to the subdirectory MLRISC/cm.
2004        They are moved because there are a lot of them and they clutter up the
2005        root dir.
2006    
2007    7.  More detailed documentation to come...
2008    
2009        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
2010        a makeml -rebuild first.  This is because of other other
2011        changes that Matthias has made (see below).
2012    
2013    
2014    ----------------------------------------------------------------------
2015    Name: Matthias Blume
2016    Date: 2000/11/30 23:12:00 JST
2017    Tag: blume-20001130-filereorg
2018    Description:
2019    
2020    Some manual updates and some file reorganizations in CM.
2021    
2022    ----------------------------------------------------------------------
2023    Name: Matthias Blume
2024    Date: 2000/11/24 17:45:00 JST
2025    Tag: blume-20001124-link
2026    Description:
2027    
2028    Drastically improved link traversal code for the case that the dynamic
2029    value was already loaded at bootstrap time.  As a result, CM and CMB
2030    now both load blazingly fast -- even on a very slow machine.  Also,
2031    memory consumption has been further reduced by this.
2032    
2033    Warning: The format of the PIDMAP file has changed.  THerefore, to
2034    bootstrap you have to do this:
2035    
2036    1. Run CMB.make
2037    2. Make a symbolic link for the boot directory:
2038         ln -s sml.boot.ARCH-OS xxx
2039    3. "Rebuild" the boot directory:
2040         ./makeml -boot xxx -rebuild sml ; rm xxx
2041    4. Boot normally:
2042          ./makeml
2043    
2044    ----------------------------------------------------------------------
2045    Name: Matthias Blume
2046    Date: 2000/11/21 21:20:00 JST
2047    Tag: blume-20001121-tools
2048    Description:
2049    
2050    Continued hacking on autoloading problem -- with success this time.
2051    Also changed tool-plugin mechanism.  See new CM manual.
2052    
2053    ----------------------------------------------------------------------
2054    Name: Matthias Blume
2055    Date: 2000/11/19 14:30:00 JST
2056    Tag:  blume-20001119-autoload
2057    Description:
2058    
2059    Some hacking to make autoloading faster.  Success for CMB, no success
2060    so far for CM.  There is a reduced structure CM' that autoloads faster.
2061    (This is a temporary, non-documented hack to be eliminated again when
2062    the general problem is solved.)
2063    
2064    ----------------------------------------------------------------------
2065    Name: Matthias Blume
2066    Date: 2000/11/17 14:10:00 JST
2067    Tag: blume-20001117-pickle-lib
2068    Description:
2069    
2070    1. Eliminated comp-lib.cm
2071    2. Made pickle-lib.cm
2072    3. Eliminated all uses of intset.sml (from comp-lib.cm)
2073    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
2074       equivalent constructs from smlnj-lib.cm (INtHashTable).
2075    5. Point 4. also goes for those uses of intmap.* in MLRISC.
2076       Duplicated intmap modules thrown out.
2077    6. Hunted down all duplicated SCC code and replaced it with
2078       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
2079    7. Rewrote Feedback module.
2080    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
2081       should be thrown out and equivalent modules from smlnj-lib.cm
2082       should be used (IntRedBlackSet, IntListSet, ...).
2083    
2084    Confirmed that compiler compiles to fixpoint.
2085    
2086    ----------------------------------------------------------------------
2087    Name: Allen Leung
2088    Date: 2000/11/10 18:00:00
2089    Tag: leunga-20001110-new-x86-fp
2090    
2091    A new x86 floating point code generator has been added.
2092    By default this is turned off.  To turn this on, do:
2093    
2094        CM.autoload "$smlnj/compiler.cm";
2095        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
2096    
2097    Changes:
2098    
2099    1.  Changed FTAN to FPTAN so that the assembly output is correct.
2100    2.  Changed the extension callback for FTANGENT to generate:
2101    
2102              fptan
2103              fstp  %st(0)
2104        instead of
2105              fptan
2106              fstpl ftempmem
2107    
2108    3.  Numerous assembly fixes for x86.
2109    
2110    5.  Cleaned up the machine code output module x86/x86MC.sml and added
2111        support for a whole bunch of instructions and addressing modes:
2112    
2113          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
2114          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
2115          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
2116          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
2117          fxch %st(n)
2118          fld %st(n)
2119          fst %st(n)
2120          fst mem
2121          fstp %st(n)
2122          fucom %st(n)
2123          fucomp %st(n)
2124    
2125        All these are now generated when the fast fp mode is turned on.
2126    
2127    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
2128    
2129    ----------------------------------------------------------------------
2130    Name: Matthias Blume
2131    Date: 2000/11/09 11:20:00 JST
2132    Tag: blume-20001109-scc
2133    Description:
2134    
2135    Eliminated some code duplication:
2136    
2137    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
2138       (Otherwise the functor is useless.)
2139    2. Used GraphSCCFn where SCCUtilFun was used previously.
2140    3. Got rid of SCCUtilFun (in comp-lib.cm).
2141    
2142    ----------------------------------------------------------------------
2143    Name: Lal George
2144    Date: 2000/11/06 09:02:21 EST 2000
2145    Tag: Release_110_30
2146    Description:
2147    
2148    - Version 110.30
2149    ----------------------------------------------------------------------
2150    Name: Matthias Blume
2151    Date: 2000/11/04 14:45:00
2152    Tag: blume-20001104-mlbuild
2153    Description:
2154    
2155    - Made ml-build faster on startup.
2156    - Documentation fixes.
2157    
2158    ----------------------------------------------------------------------
2159    Name: Matthias Blume
2160    Date: 2000/11/02 17:00:00 JST
2161    Tag: blume-20001102-condcomp
2162    Description:
2163    
2164    - Small tweaks to pickler -- new BOOTFILES!
2165    - Version bumped to 110.29.2.
2166    - Added conditional compilation facility to init.cmi (see comment there).
2167    ----------------------------------------------------------------------
2168    Name: Allen Leung
2169    Date: 2000/10/23 19:31:00
2170    Tag: leunga-20001023-demo-ra
2171    
2172    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
2173    2. Test programs for the graph library updated
2174    3. Some new MLRISC demo programs added
2175    
2176    ----------------------------------------------------------------------
2177    Name: Matthias Blume
2178    Date: 2000/08/31 22:15:00 JST
2179    Tag: blume-20001017-errmsg
2180    Description:
2181    
2182    More error message grief: Where there used to be no messages, there
2183    now were some that had bogus error regions.  Fixed.
2184    
2185    ----------------------------------------------------------------------
2186    Name: Matthias Blume
2187    Date: 2000/08/31 17:30:00 JST
2188    Tag: blume-20001017-v110p29p1
2189    Description:
2190    
2191    I made a version 110.29.1 with new bootfiles.
2192    
2193    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
2194              CM documentation changes and a small bugfix in CM's error reporting.
2195    
2196    ----------------------------------------------------------------------
2197    Name: Lal George
2198    Date: 2000/09/27 14:42:35 EDT
2199    Tag: george-20000927-nodestatus
2200    Description:
2201    
2202    Changed the type of the nodestatus, so that:
2203    
2204            SPILLED(~1)             is now SPILLED
2205            SPILLED(m) where m>=0   is now MEMREG(m)
2206            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
2207    
2208    ----------------------------------------------------------------------
2209    Name: Matthias Blume
2210    Date: 2000/09/07 14:45:00 JST
2211    Tag: blume-20000907-cmerrmsg
2212    Description:
2213    
2214    Small tweak to CM to avoid getting ML syntax error messages twice.
2215    
2216    ----------------------------------------------------------------------
2217    Name: Matthias Blume
2218    Date: 2000/08/31 18:00:00 JST
2219    Tag: blume-20000831-cvsbootfiles
2220    Description:
2221    
2222    New URL for boot files (because the 110.29 files on the BL server do
2223    now work correctly with my updated install scripts for yacc and lex).
2224    
2225    ----------------------------------------------------------------------
2226    Name: Matthias Blume
2227    Date: 2000/08/08 12:33:00 JST
2228    Tag: blume-20000808-manual
2229    Description:
2230    
2231    Tiny update to CM manual.
2232    
2233    ----------------------------------------------------------------------
2234    Name: Allen Leung
2235    Date: 2000/08/7 19:31:00
2236    Tag: leunga-20000807-a-whole-bunch-of-stuff
2237    
2238      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
2239    and Mobdy.
2240    
2241    1.  x86
2242    
2243       a.  Fixes to peephole module by John and Dan.
2244       b.  Assembly fix to SETcc by Allen.
2245       c.  Fix to c-call by John.
2246       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
2247       e.  Instruction selection optimization to SETcc as suggested by John.
2248    
2249           For example,
2250    
2251            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
2252    
2253           should generate:
2254    
2255            MOVL a, x
2256            SUBL b, x
2257            SHRL 31, x
2258    
2259    2.  IR stuff
2260    
2261         A bunch of new DJ-graph related algorithms added.  These
2262         speed up SSA construction.
2263    
2264    3.  SSA + Scheduling
2265    
2266         Added code for SSA and scheduling to the repository
2267    
2268    ----------------------------------------------------------------------
2269    Name: Lal George
2270    Date: 2000/07/27 11:53:14 EDT
2271    
2272    Tag: lal-20000727-linux-ppc
2273    Description:
2274    
2275     Made changes to support Linux PPC.
2276     p.s. I have confirmation that the 110.29 boot files work fine.
2277    
2278    ----------------------------------------------------------------------
2279    Name: Matthias Blume
2280    Date: 2000/07/27 17:40:00 JST
2281    Tag: blume-20000727-scripts
2282    Description:
2283    
2284    !!!! WARNING !!!!
2285    You must recompile the runtime system!
2286    !!!! WARNING !!!!
2287    
2288    This is basically another round of script-enhancements:
2289    
2290    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
2291       and undefine CM preprocessor symbols.
2292    
2293    2. ml-build avoids generating a new heap image if it finds that the
2294       existing one is still ok.  (The condition is that no ML file had to
2295       be recompiled and all ML files are found to be older that the heap
2296       file.)
2297    
2298       To make this work smoothly, I also hacked the runtime system as
2299       well as SMLofNJ.SysInfo to get access to the heap image suffix
2300       (.sparc-solaris, ...) that is currently being used.
2301    
2302       Moreover, the signature of CM.mk_standalone has changed.  See the
2303       CM manual.
2304    
2305    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
2306       CM manual for details.)
2307    
2308    4. More CM manual updates:
2309        - all of the above has been documented.
2310        - there is now a section describing the (CM-related) command line
2311          arguments that are accepted by the "sml" command
2312    
2313    ----------------------------------------------------------------------
2314    Name: Matthias Blume
2315    Date: 2000/07/25 16:20:00 JST
2316    Tag: blume-20000725-makedepend
2317    Description:
2318    
2319    Added a script called ml-makedepend.  This can be used in makefiles
2320    for Unix' make in a way very similar to the "makedepend" command for
2321    C.
2322    
2323    The script internally uses function CM.sources.
2324    
2325    Synopsis:
2326    
2327        ml-makedepend [-f makefile] cmfile targetname
2328    
2329    The default for the makefile is "makefile" (or "Makefile" should
2330    "makefile" not exist).
2331    
2332    ml-makedepend adds a cmfile/targetname-specific section to this
2333    makefile (after removing the previous version of this section).  The
2334    section contains a single dependency specification with targetname on
2335    the LHS (targetname is an arbitrary name), and a list of files derived
2336    from the cmfile on the RHS.  Some of the files on the RHS are
2337    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
2338    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
2339    path names.  The makefile writer is responsible for making sure that
2340    these variables have correct at the time "make" is invoked.
2341    
2342    ----------------------------------------------------------------------
2343    Name: Matthias Blume
2344    Date: 2000/07/22 23:30:00 JST
2345    Tag: blume-20000722-urlupdate
2346    Description:
2347    
2348    Changed BOOT and config/srcarchiveurl to point to BL server:
2349    
2350        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
2351    
2352    ----------------------------------------------------------------------
2353    Name: Matthias Blume
2354    Date: 2000/07/18 18:00:00 JST
2355    Tag: blume-20000718-Version_110_29
2356    Description:
2357    
2358    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
2359    
2360    2. Updated config/version to 110.29
2361    
2362    3. Updated config/srcarchiveurl
2363    
2364    3. New boot files!
2365       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
2366    
2367    ----------------------------------------------------------------------
2368    Name: Matthias Blume
2369    Date: 2000/07/11 13:58:00 JST
2370    Tag: blume-20000711-doctypo
2371    Description:
2372    
2373    Fixed a few typos in CM manual.
2374    
2375  ----------------------------------------------------------------------  ----------------------------------------------------------------------
2376  Name: Allen Leung  Name: Allen Leung
2377  Date: 2000/06/15 00:38:00  Date: 2000/06/15 00:38:00
# Line 1320  Line 3681 
3681       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3682       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3683       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
3684       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3685       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3686       Dave's hands. :)       Dave's hands. :)
3687    

Legend:
Removed from v.683  
changed lines
  Added in v.1058

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