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

Legend:
Removed from v.715  
changed lines
  Added in v.1028

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