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

Legend:
Removed from v.694  
changed lines
  Added in v.1039

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