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

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

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