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 920, Tue Aug 28 18:03:37 2001 UTC revision 1085, Fri Feb 22 00:15:55 2002 UTC
# Line 8  Line 8 
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  Name:
11  Date:  Date: yyyy/mm/dd
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Allen Leung
17    Date: 2002/02/21 20:20:00 EST
18    Tag: leunga-20020221-peephole
19    
20    Regenerated the peephole files.  Some contained typos in the specification
21    and some didn't compile because of pretty printing bugs in the old version
22    of 'nowhere'.
23    
24    ----------------------------------------------------------------------
25    Name: Allen Leung
26    Date: 2002/02/19 20:20:00 EST
27    Tag: leunga-20020219-mlrisc-tools
28    Description:
29    
30       Minor bug fixes to the mlrisc-tools library:
31    
32       1.  Fixed up parsing colon suffixed keywords
33       2.  Added the ability to shut the error messages up
34       3.  Reimplemented the pretty printer and fixed up/improved
35           the pretty printing of handle and -> types.
36       4.  Fixed up generation of literal symbols in the nowhere tool.
37       5.  Added some SML keywords to to sml.sty
38    
39    ----------------------------------------------------------------------
40    Name: Matthias Blume
41    Date: 2002/02/19 16:20:00 EST
42    Tag: blume-20020219-cmffi
43    Description:
44    
45    A wild mix of changes, some minor, some major:
46    
47    * All C FFI-related libraries are now anchored under $c:
48        $/c.cm      --> $c/c.cm
49        $/c-int.cm  --> $c/internals/c-int.cm
50        $/memory.cm --> $c/memory/memory.cm
51    
52    * "make" tool (in CM) now treats its argument pathname slightly
53      differently:
54        1. If the native expansion is an absolute name, then before invoking
55           the "make" command on it, CM will apply OS.Path.mkRelative
56           (with relativeTo = OS.FileSys.getDir()) to it.
57        2. The argument will be passed through to subsequent phases of CM
58           processing without "going native".  In particular, if the argument
59           was an anchored path, then "make" will not lose track of that anchor.
60    
61    * Compiler backends now "know" their respective C calling conventions
62      instead of having to be told about it by ml-nlffigen.  This relieves
63      ml-nlffigen from one of its burdens.
64    
65    * The X86Backend has been split into X86CCallBackend and X86StdCallBackend.
66    
67    * Export C_DEBUG and C_Debug from $c/c.cm.
68    
69    * C type encoding in ml-nlffi-lib has been improved to model the conceptual
70      subtyping relationship between incomplete pointers and their complete
71      counterparts.  For this, ('t, 'c) ptr has been changed to 'o ptr --
72      with the convention of instantiating 'o with ('t, 'c) obj whenever
73      the pointer target type is complete.  In the incomplete case, 'o
74      will be instantiated with some "'c iobj" -- a type obtained by
75      using one of the functors PointerToIncompleteType or PointerToCompleteType.
76    
77      Operations that work on both incomplete and complete pointer types are
78      typed as taking an 'o ptr while operations that require the target to
79      be known are typed as taking some ('t, 'c) obj ptr.
80    
81      voidptr is now a bit "more concrete", namely "type voidptr = void ptr'"
82      where void is an eqtype without any values.  This makes it possible
83      to work on voidptr values using functions meant to operate on light
84      incomplete pointers.
85    
86    * As a result of the above, signature POINTER_TO_INCOMPLETE_TYPE has
87      been vastly simplified.
88    
89    ----------------------------------------------------------------------
90    Name: Matthias Blume
91    Date: 2002/02/19 10:48:00 EST
92    Tag: blume-20020219-pqfix
93    Description:
94    
95    Applied Chris Okasaki's bug fix for priority queues.
96    
97    ----------------------------------------------------------------------
98    Name: Matthias Blume
99    Date: 2002/02/15 17:05:00
100    Tag: Release_110_39
101    Description:
102    
103    Last-minute retagging is becoming a tradition... :-(
104    
105    This is the working release 110.39.
106    
107    ----------------------------------------------------------------------
108    Name: Matthias Blume
109    Date: 2002/02/15 16:00:00 EST
110    Tag: Release_110_39-orig
111    Description:
112    
113    Working release 110.39.  New bootfiles.
114    
115    (Update: There was a small bug in the installer so it wouldn't work
116    with all shells.  So I retagged. -Matthias)
117    
118    ----------------------------------------------------------------------
119    Name: Matthias Blume
120    Date: 2002/02/15 14:17:00 EST
121    Tag: blume-20020215-showbindings
122    Description:
123    
124    Added EnvRef.listBoundSymbols and CM.State.showBindings.  Especially
125    the latter can be useful for exploring what bindings are available at
126    the interactive prompt.  (The first function returns only the list
127    of symbols that are really bound, the second prints those but also the
128    ones that CM's autoloading mechanism knows about.)
129    
130    ----------------------------------------------------------------------
131    Name: Matthias Blume
132    Date: 2002/02/15 12:08:00 EST
133    Tag: blume-20020215-iptrs
134    Description:
135    
136    Two improvements to ml-nlffigen:
137    
138      1. Write files only if they do not exist or if their current contents
139         do not coincide with what's being written.  (That is, avoid messing
140         with the time stamps unless absolutely necessary.)
141    
142      2. Implement a "repository" mechanism for generated files related
143         to "incomplete pointer types".   See the README file for details.
144    
145    ----------------------------------------------------------------------
146    Name: Matthias Blume
147    Date: 2002/02/14 11:50:00 EST
148    Tag: blume-20020214-quote
149    Description:
150    
151    Added a type 't t_' to tag.sml (in ml-nlffi-lib.cm).  This is required
152    because of the new and improved tag generation scheme.  (Thanks to Allen
153    Leung for pointing it out.)
154    
155    ----------------------------------------------------------------------
156    Name: Lal George
157    Date: 2002/02/14 09:55:27 EST 2002
158    Tag: george-20020214-isabelle-bug
159    Description:
160    
161    Fixed the MLRISC bug sent by Markus Wenzel regarding the compilation
162    of Isabelle on the x86.
163    
164    From Allen:
165    -----------
166     I've found the problem:
167    
168         in ra-core.sml, I use the counter "blocked" to keep track of the
169         true number of elements in the freeze queue.  When the counter goes
170         to zero, I skip examining the queue.  But I've messed up the
171         bookkeeping in combine():
172    
173             else ();
174             case !ucol of
175               PSEUDO => (if !cntv > 0 then
176                     (if !cntu > 0 then blocked := !blocked - 1 else ();
177                                        ^^^^^^^^^^^^^^^^^^^^^^^
178                      moveu := mergeMoveList(!movev, !moveu)
179                     )
180                  else ();
181    
182         combine() is called to coalesce two nodes u and v.
183         I think I was thinking that if the move counts of u and v are both
184         greater than zero then after they are coalesced then one node is
185         removed from the freeze queue.  Apparently I was thinking that
186         both u and v are of low degree, but that's clearly not necessarily true.
187    
188    
189    02/12/2002:
190        Here's the patch.  HOL now compiles.
191    
192        I don't know how this impact on performance (compile
193        time or runtime).  This bug caused the RA (especially on the x86)
194        to go thru the potential spill phase when there are still nodes on the
195        freeze queue.
196    
197    
198    
199    
200    ----------------------------------------------------------------------
201    Name: Matthias Blume
202    Date: 2002/02/13 22:40:00 EST
203    Tag: blume-20020213-fptr-rtti
204    Description:
205    
206    Fixed a bug in ml-nlffigen that was introduced with one of the previous
207    updates.
208    
209    ----------------------------------------------------------------------
210    Name: Matthias Blume
211    Date: 2002/02/13 16:41:00 EST
212    Tag: blume-20020213-cmlpq
213    Description:
214    
215    Added new priority queue export symbols (which have just been added to
216    smlnj-lib.cm) to CML's version of smlnj-lib.cm.  (Otherwise CML would
217    not compile and the installer would choke.)
218    
219    ----------------------------------------------------------------------
220    Name: Matthias Blume
221    Date: 2002/02/13 16:15:00 EST
222    Tag: blume-20020213-various
223    Description:
224    
225    1. More tweaks to ml-nlffigen:
226    
227       - better internal datastructures (resulting in slight speedup)
228       - "-match" option requires exact match
229       - "localized" gensym counters (untagged structs/unions nested within
230         other structs/unions or within typedefs get a fresh counter; their
231         tag will be prefixed by a concatenation of their parents' tags)
232       - bug fixes (related to calculation of transitive closure of types
233         to be included in the output)
234    
235    2. Minor Basis updates:
236    
237       - added implementations for List.collate and Option.app
238    
239    ----------------------------------------------------------------------
240    Name: Matthias Blume
241    Date: 2002/02/11 15:55:00 EST
242    Tag: blume-20020211-gensym
243    Description:
244    
245    Added a "-gensym" option to command line of ml-nlffigen.  This can be
246    used to specify a "stem" -- a string that is inserted in all "gensym'd"
247    names (ML structure names that correspond to unnamed C structs, unions,
248    and enums), so that separate runs of ml-nlffigen do not clash.
249    
250    ----------------------------------------------------------------------
251    Name: Matthias Blume
252    Date: 2002/02/11 12:05:00 EST
253    Tag: blume-20020211-gensml
254    Description:
255    
256    A quick fix for a problem with GenSML (in the pgraph-util library):
257    Make generation of toplevel "local" optional.  (Strictly speaking,
258    signature definitions within "local" are not legal SML.)
259    
260    Other than that: updates to INSTALL and cm/TODO.
261    
262    ----------------------------------------------------------------------
263    Name: Matthias Blume
264    Date: 2002/02/08 15:00:00 EST
265    Tag: blume-20020208-uniquepid
266    Description:
267    
268    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
269    
270    1. The installer (config/install.sh) has gotten smarter:
271    
272         - Configuration options are a bit easier to specify now
273           (in config/targets).
274         - Bug in recognizing .tar.bz2 files fixed.
275         - Installer automatically resolves dependencies between
276           configuration options (e.g., if you ask for eXene, you will
277           also get cml -- regardless whether you asked for it or not).
278         - Installer can run in "quieter mode" by setting the environment
279           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
280           "completely silent", though.
281         - Build HashCons library as part of smlnj-lib.
282    
283    2. A new scheme for assigning persistent identifiers to compilation
284       units (and, by extension, to types etc.) has been put into place.
285       This fixes a long-standing bug where types and even dynamic values
286       can get internally confused, thereby compromising type safety
287       (abstraction) and dynamic correctness.  See
288    
289         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
290    
291       for an example of how things could go wrong until now.
292    
293       The downside of the new scheme is that pids are not quite as
294       persistent as they used to be: CM will generate a fresh pid
295       for every compilation unit that it thinks it sees for the first
296       time.  That means that if you compile starting from a clean, fresh
297       source tree at two different times, you end up with different
298       binaries.
299    
300       Cutoff recompilation, however, has not been compromised because
301       CM keeps pid information in special caches between runs.
302    
303    ----------------------------------------------------------------------
304    Name: Lal George
305    Date: 2002/02/07 15:34:13 EST 2002
306    Tag: <none>
307    Description:
308    
309    Compilers that generate assembly code may produce  global labels
310    whose value is resolved at link time. The various peephole optimization
311    modules did not take this in account.
312    
313    TODO. The Labels.addrOf function should really return an option
314    type so that clients are forced to deal with this issue, rather
315    than an exception being raised.
316    
317    ----------------------------------------------------------------------
318    Name: Lal George
319    Date: 2002/02/06 13:55:02 EST
320    Tag: george-20020206-ra-breakup
321    Description:
322    
323    1. A bug fix from Allen.
324    
325        A typo causes extra fstp %st(0)'s to be generated at compensation
326        edges, which might cause stack underflow traps at runtime.  This
327        occurs in fft where there are extraneous fstps right before the 'into'
328        trap instruction (in this case they are harmless since none of the
329        integers overflow.)
330    
331    2. Pulled out various utility modules that were embedded in the modules
332       of the register allocator. I need these modules for other purposes, but
333       they are not complete enough to put into a library (just yet).
334    ----------------------------------------------------------------------
335    Name: Matthias Blume
336    Date: 2002/01/31 16:05:00 EST
337    Tag: blume-20020131-sparc-ccalls
338    Description:
339    
340    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
341       of extra stack space by mistake.  Fixed.
342    
343    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
344    
345    ----------------------------------------------------------------------
346    Name: Allen Leung
347    Date: 2002/01/30
348    Tag: leunga-20020130-nowhere-bug-fix
349    Description:
350    
351       MLRISC bug fixes:
352       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
353       2. MachineInt.fromString was negating its value.
354    
355    ----------------------------------------------------------------------
356    Name: Matthias Blume
357    Date: 2002/01/29
358    Tag: blume-20020129-INSTALL
359    Description:
360    
361    - Added somewhat detailed installation instructions (file INSTALL).
362    - Fixed curl-detection bug in config/install.sh.
363    - It is now possible to select the URL getter using the URLGETTER
364      environment variable:
365    
366          not set / "unknown"      --> automatic detection (script tries wget,
367                                       curl, and lynx)
368          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
369                                       how to properly invoke them)
370          other                    --> use $URLGETTER directly, it must take
371                                       precisely two command-line arguments
372                                       (source URL and destination file name)
373    
374    ----------------------------------------------------------------------
375    Name: Matthias Blume
376    Date: 2002/01/28
377    Tag: blume-20020128-sparc-ccalls
378    Description:
379    
380    - Fixed problem with calculation of "used" registers in sparc-c-calls.
381    - Make use of the allocParam argument in sparc-c-calls.
382    
383    ----------------------------------------------------------------------
384    Name: Matthias Blume
385    Date: 2002/01/28
386    Tag: blume-20020128-allocParam
387    Description:
388    
389    John Reppy:  Changes c-calls API to accept client-callback for
390    allocating extra stack space.
391    me: Corresponding changes to mlriscGen (using a dummy argument that
392        does not change the current behavior).
393    
394    ----------------------------------------------------------------------
395    Name: Matthias Blume
396    Date: 2002/01/28 12:00:00
397    Tag: Release_110_38
398    Description:
399    
400    This time for real!!!
401    
402    ----------------------------------------------------------------------
403    Name: Matthias Blume
404    Date: 2002/01/28 10:56:00 EST
405    Tag: blume-20020128-retraction
406    Description:
407    
408    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
409       with blume-Release_110_38-retracted.)
410    
411    1. Fixed a problem with incorrect rounding modes in real64.sml.
412       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
413    
414    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
415       and enums fixed.  The naming of corresponding ML identifiers should
416       now be consistent again.
417    
418    ----------------------------------------------------------------------
419    Name: Allen Leung
420    Date: 2002/01/27
421    Tag: leunga-20020127-nowhere
422    Description:
423    
424       Added a target called nowhere in the configuration scripts.
425       Enabling this will build the MLRISC 'nowhere' tool (for translating
426       programs with where-clauses into legal SML code) during installation.
427    
428    ----------------------------------------------------------------------
429    Name: Matthias Blume
430    Date: 2002/01/25 21:27:00 EST
431    Tag: blume-Release_110_38-retracted
432    Description:
433    
434    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
435    
436    README will be added later.
437    
438    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
439    (Release_110_38) removed.  Reason: Last-minute bug fixes.
440    
441    ----------------------------------------------------------------------
442    Name: Matthias Blume
443    Date: 2002/01/25
444    Tag: blume-20020125-ffi
445    Description:
446    
447    A large number of tweaks and improvements to ml-nlffi-lib and
448    ml-nlffigen:
449    
450       - ML represenation types have been streamlined
451       - getter and setter functions work with concrete values, not abstract
452         ones where possible
453       - ml-nlffigen command line more flexible (see README file there)
454       - some bugs have been fixed (hopefully)
455    
456    ----------------------------------------------------------------------
457    Name: Lal George
458    Date: 2002/01/24
459    Tag: george-20020124-risc-ra-interface
460    Description:
461    
462       There is a dramatic simplification in the interface to the
463       register allocator for RISC architectures as a result of making
464       parallel copy instructions explicit.
465    
466    ----------------------------------------------------------------------
467    Name: Matthias Blume
468    Date: 2002/01/22
469    Tag: blume-20020122-x86-ccalls
470    Description:
471    
472    Bug fix for c-calls on x86 (having to do with how char- and
473    short-arguments are being handled).
474    
475    ----------------------------------------------------------------------
476    Name: Matthias Blume
477    Date: 2002/01/21
478    Tag: blume-20020121-ff
479    Description:
480    
481    Another day of fiddling with the FFI...
482    
483    1. Bug fix/workaround:  CKIT does not complain about negative array
484       dimensions, so ml-nlffigen has to guard itself against this possibility.
485       (Otherwise a negative dimension would send it into an infinite loop.)
486    
487    2. Some of the abstract types (light objects, light pointers, most "base"
488       types) in structure C are now eqtypes.
489    
490    3. Added constructors and test functions for NULL function pointers.
491    
492    ----------------------------------------------------------------------
493    Name: Matthias Blume
494    Date: 2002/01/18
495    Tag: blume-20020118-ready-for-new-release
496    Description:
497    
498    Made config/srcarchiveurl point to a new place.  (Will provide boot
499    files shortly.)
500    
501    Maybe we christen this to be 110.38?
502    
503    ----------------------------------------------------------------------
504    Name: Matthias Blume
505    Date: 2002/01/18
506    Tag: blume-20020118-more-ffifiddle
507    Description:
508    
509    Today's FFI fiddling:
510    
511      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
512        C.Set.* that use concrete (MLRep.*) arguments and results instead
513        of abstract ones.
514    
515      - Provided word-style bit operations etc. for "int" representation
516        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
517        and Long.
518    
519    ----------------------------------------------------------------------
520    Name: Matthias Blume
521    Date: 2002/01/18
522    Tag: blume-20020118-use-x86-fp
523    Description:
524    
525    Now that x86-fast-fp seems to be working, I turned it back on again
526    by default.  (Seems to work fine now, even with the FFI.)
527    
528    Other than that, I added some documentation about the FFI to
529    src/ml-nlffigen/README and updated the FFI test examples in
530    src/ml-nlffi-lib/Tests/*.
531    
532    ----------------------------------------------------------------------
533    Name: Allen Leung
534    Date: 2002/01/17
535    Tag: leunga-20020117-x86-fast-fp-call
536    Description:
537    
538       1. Fixed a problem with handling return fp values when x86's fast fp
539          mode is turned on.
540    
541       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
542          of %f32.
543    
544       3. Added a constructor INT32lit to the ast of MLRISC tools.
545    
546    ----------------------------------------------------------------------
547    Name: Matthias Blume
548    Date: 2002/01/16
549    Tag: blume-20020116-ffifiddle
550    Description:
551    
552    More fiddling with the FFI interface:
553    
554     - Make constness 'c instead of rw wherever possible.  This eliminates
555       the need for certain explicit coercions.  (However, due to ML's
556       value polymorphism, there will still be many cases where explicit
557       coercions are necessary.  Phantom types are not the whole answer
558       to modeling a subtyping relationship in ML.)
559    
560     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
561    
562     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
563       clumsy workaround for varargs problem.)
564    
565    ----------------------------------------------------------------------
566    Name: Lal George
567    Date: 2002/01/15
568    Tag: <none>
569    Description:
570    
571    1. Since COPY instructions are no longer native to the architecture,
572       a generic functor can be used to implement the expandCopies function.
573    
574    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
575       TEXT segment.
576    
577    ----------------------------------------------------------------------
578    Name: Matthias Blume
579    Date: 2002/01/15
580    Tag: blume-20020115-ffiupdates
581    Description:
582    
583    1. Fix for bug resulting in single-precision float values being returned
584       incorrectly from FFI calls.
585    
586    2. Small modifications to C FFI API:
587    
588        - memory-allocation routines return straight objects (no options)
589          and raise an exception in out-of-memory situations
590        - unsafe extensions to cast between function pointers and pointers
591          from/to ints
592        - added structure C_Debug as an alternative to structure C where
593          pointer-dereferencing (|*| and |*!) always check for null-pointers
594        - added open_lib' to DynLinkage;  open_lib' works like open_lib
595          but also takes a (possibly empty) list of existing library handles
596          that the current library depends on
597    
598    ----------------------------------------------------------------------
599    Name: Matthias Blume
600    Date: 2002/01/10
601    Tag: blume-20020110-newffigen
602    Description:
603    
604    1. Updates to portable graph code.
605    
606    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
607       more scalable now so that even huge interfaces such as the one
608       for GTK compile in finite time and space. :-)
609       See src/ml-nlffigen/README for details on what's new.
610    
611    ----------------------------------------------------------------------
612    Name: Lal George
613    Date: 2001/01/09 14:31:35 EST 2002
614    Tag: george-20011206-rm-native-copy
615    Description:
616    
617            Removed the native COPY and FCOPY instructions
618            from all the architectures and replaced it with the
619            explicit COPY instruction from the previous commit.
620    
621            It is now possible to simplify many of the optimizations
622            modules that manipulate copies. This has not been
623            done in this change.
624    
625    ----------------------------------------------------------------------
626    Name: Lal George
627    Date: 2001/12/06 16:50:13 EST 2001
628    Tag: george-20011206-mlrisc-instruction
629    Description:
630    
631    Changed the representation of instructions from being fully abstract
632    to being partially concrete. That is to say:
633    
634      from
635            type instruction
636    
637      to
638            type instr                              (* machine instruction *)
639    
640            datatype instruction =
641                LIVE of {regs: C.cellset, spilled: C.cellset}
642              | KILL of {regs: C.cellset, spilled: C.cellset}
643              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
644              | ANNOTATION of {i: instruction, a: Annotations.annotation}
645              | INSTR of instr
646    
647    This makes the handling of certain special instructions that appear on
648    all architectures easier and uniform.
649    
650    LIVE and KILL say that a list of registers are live or killed at the
651    program point where they appear. No spill code is generated when an
652    element of the 'regs' field is spilled, but the register is moved to
653    the 'spilled' (which is present, more for debugging than anything else).
654    
655    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
656    We used to generate:
657    
658            DEFFREG f1
659            f1 := f2 + f3
660            trapb
661    
662    but now generate:
663    
664            f1 := f2 + f3
665            trapb
666            LIVE {regs=[f1,f2,f3], spilled=[]}
667    
668    Furthermore, the DEFFREG (hack) required that all floating point instruction
669    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
670    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
671    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
672    this architecture).
673    
674    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
675    all the architectures. This will result in further simplification of the
676    register allocator that must be aware of them for coalescing purposes, and
677    will also simplify certain aspects of the machine description that provides
678    callbacks related to parallel copies.
679    
680    ANNOTATION should be obvious, and now INSTR represents the honest to God
681    machine instruction set!
682    
683    The <arch>/instructions/<arch>Instr.sml files define certain utility
684    functions for making porting easier -- essentially converting upper case
685    to lower case. All machine instructions (of type instr) are in upper case,
686    and the lower case form generates an MLRISC instruction. For example on
687    the alpha we have:
688    
689      datatype instr =
690         LDA of {r:cell, b:cell, d:operand}
691       | ...
692    
693      val lda : {r:cell, b:cell, d:operand} -> instruction
694        ...
695    
696    where lda is just (INSTR o LDA), etc.
697    
698    ----------------------------------------------------------------------
699    Name: Matthias Blume
700    Date: 2001/11/22 21:40:00 EST
701    Tag: Release_110_37
702    Description:
703    
704    Release 110.37.  This time for real.
705    
706    ----------------------------------------------------------------------
707    Name: Matthias Blume
708    Date: 2001/11/21 16:35:00 EST
709    Tag: blume-20011121-foot-in-mouth
710    Description:
711    
712    Removed the "Release_110_37" tag because of a serious bug.
713    This will be re-tagged once the bug is fixed.
714    
715    ----------------------------------------------------------------------
716    Name: Matthias Blume
717    Date: 2001/11/21 16:14:00 EST
718    Tag: blume-20011121-forgottenfile
719    Description:
720    
721    Forgot to add a file.  (Just a .tex-file -- part of
722    the CM manual source.)
723    
724    ----------------------------------------------------------------------
725    Name: Matthias Blume
726    Date: 2001/11/21 16:10:00 EST
727    Tag: blume-20011121-invalid_110_37
728    Description:
729    
730    Note: I removed the original tag "Release_110_37" from this commit
731          because we found a serious bug in all non-x86 backends.
732          - Matthias
733    
734    1. Modifications to the SML/NJ code generator and to the runtime system
735       so that code object name strings are directly inserted into code
736       objects at code generation time.  The only business the runtime system
737       has with this is now to read the name strings on occasions.
738       (The encoding of the name string has also changed somewhat.)
739    
740    2. CM now implements a simple "set calculus" for specifying export lists.
741       In particular, it is now possible to refer to the export lists of
742       other libraries/groups/sources and form unions as well as differences.
743       See the latest CM manual for details.
744    
745    3. An separate notion of "proxy" libraries has again be eliminated from
746       CM's model.  (Proxy libraries are now simply a special case of using
747       the export list calculus.)
748    
749    4. Some of the existing libraries now take advantage of the new set
750       calculus.
751       (Notice that not all libraries have been converted because some
752       of the existing .cm-files are supposed to be backward compatible
753       with 110.0.x.)
754    
755    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
756       "General.exnMessage"!  The former relies on a certain hook to be
757       initialized, and that often does not happen in the stand-alone case.)
758    
759    ----------------------------------------------------------------------
760    Name: Lal George
761    Date: 2001/11/21  13:56:18 EST
762    Tag: george-2001121-pseudo-ops
763    Description:
764    
765      Implemented a complete redesign of MLRISC pseudo-ops. Now there
766      ought to never be any question of incompatabilities with
767      pseudo-op syntax expected by host assemblers.
768    
769      For now, only modules supporting GAS syntax are implemented
770      but more should follow, such as MASM, and vendor assembler
771      syntax, e.g. IBM as, Sun as, etc.
772    
773    ----------------------------------------------------------------------
774    Name: Matthias Blume
775    Date: 2001/11/14 11:52:00 EST
776    Tag: blume-20011114-srcname
777    Description:
778    
779    1. Routed the name of the current source file to mlriscgen where it
780       should be directly emitted into the code object.  (This last part
781       is yet to be done.)
782    
783    2. Some cleanup of the pgraph code to make it match the proposal that
784       I put out the other day.  (The proposal notwithstanding, things are
785       still in flux here.)
786    
787    ----------------------------------------------------------------------
788    Name: Lal George
789    Date: 2001/11/14 09:44:04 EST
790    Tag:
791    Description:
792    
793      Fix for a backpatching bug reported by Allen.
794    
795      Because the boundary between short and long span-dependent
796      instructions is +/- 128, there are an astounding number of
797      span-dependent instructions whose size is over estimated.
798    
799      Allen came up with the idea of letting the size of span
800      dependent instructions be non-monotonic, for a maxIter
801      number of times, after which the size must be monotonically
802      increasing.
803    
804      This table shows the number of span-dependent instructions
805      whose size was over-estimated as a function of maxIter, for the
806      file Parse/parse/ml.grm.sml:
807    
808         maxIter            # of instructions:
809            10                      687
810            20                      438
811            30                      198
812            40                        0
813    
814      In compiling the compiler, there is no significant difference in
815      compilation speed between maxIter=10 and maxIter=40. Actually,
816      my measurements showed that maxIter=40 was a tad faster than
817      maxIter=10! Also 96% of the  files in the compiler reach a fix
818      point within 13 iterations, so fixing maxIter at 40, while high,
819      is okay.
820    
821    ----------------------------------------------------------------------
822    Name: Matthias Blume
823    Date: 2001/10/31 15:25:00 EST
824    Tag: blume-20011031-pgraph
825    Description:
826    
827    CKIT:
828    * Changed the "Function" constructor of type Ast.ctype to carry optional
829      argument identifiers.
830    * Changed the return type of TypeUtil.getFunction accordingly.
831    * Type equality ignores the argument names.
832    * TypeUtil.composite tries to preserve argument names but gives up quickly
833      if there is a mismatch.
834    
835    installation script:
836    * attempts to use "curl" if available (unless "wget" is available as well)
837    
838    CM:
839    * has an experimental implementation of "portable graphs" which I will
840      soon propose as an implementation-independent library format
841    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
842    
843    NLFFI-LIB:
844    * some cleanup (all cosmetic)
845    
846    NLFFIGEN:
847    * temporarily disabled the mechanism that suppresses ML output for
848      C definitions whose identifiers start with an underscore character
849    * generate val bindings for enum constants
850    * user can request that only one style (light or heavy) is being used;
851      default is to use both (command-line arguments: -heavy and -light)
852    * fixed bug in handling of function types involving incomplete pointers
853    * generate ML entry points that take record arguments (i.e., using
854      named arguments) for C functions that have a prototype with named
855      arguments
856      (see changes to CKIT)
857    
858    ----------------------------------------------------------------------
859    Name: Allen Leung
860    Date: 2001/10/27 20:34:00 EDT
861    Tag: leunga-20011027-x86-fast-fp-call
862    Description:
863    
864       Fixed the bug described in blume-20010920-slowfp.
865    
866       The fix involves
867          1. generating FCOPYs in FSTP in ia32-svid
868          2. marking a CALL with the appropriate annotation
869    
870    ----------------------------------------------------------------------
871    Name: Matthias Blume
872    Date: 2001/10/16 11:32:00 EDT
873    Tag: blume-20011016-netbsd
874    Description:
875    
876    Underscore patch from Chris Richards (fixing problem with compiling
877    runtime system under recent NetBSD).
878    
879    ----------------------------------------------------------------------
880    Name: Allen Leung
881    Date: 2001/10/12 17:18:32 EDT 2001
882    Tag: leung-20011012-x86-printflowgraph
883    Description:
884    
885    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
886    
887    ----------------------------------------------------------------------
888    Name: Lal George
889    Date: 2001/10/11 23:51:34 EDT
890    Tag: george-20011011-too-many-instrs
891    Description:
892    
893    The representation of a program point never expected to see more
894    than 65536 instructions in a basic block!
895    
896    ----------------------------------------------------------------------
897    Name: Lal George
898    Date: 2001/10/09 09:41:37 EDT
899    Tag: george-20011008-mlrisc-labels
900    Description:
901    
902    Changed the machine description files to support printing of
903    local and global labels in assembly code, based on host assembler
904    conventions.
905    
906    ----------------------------------------------------------------------
907    Name: Matthias Blume
908    Date: 2001/09/25 15:25:00 EDT
909    Tag: blume-20010925-exninfo
910    Description:
911    
912    I provided a non-hook implementation of exnName (at the toplevel) and
913    made the "dummy" implementation of exnMessage (at the toplevel) more
914    useful: if nothing gets "hooked in", then at least you are going to
915    see the exception name and a message indicating why you don't see more.
916    
917    [For the time being, programs that need exnMessage and want to use
918    ml-build should either use General.exnMessage (strongly recommended) or
919    refer to structure General at some other point so that CM sees a
920    static dependency.]
921    
922    [Similar remarks go for "print" and "use":  If you want to use their
923    functionality in stand-alone programs generated by ml-build, then use
924    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
925    
926    ----------------------------------------------------------------------
927    Name: Matthias Blume
928    Date: 2001/09/20 17:28:00 EDT
929    Tag: blume-20010920-slowfp
930    Description:
931    
932    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
933    
934    ----------------------------------------------------------------------
935    Name: Matthias Blume
936    Date: 2001/09/20 17:20:00 EDT
937    Tag: blume-20010920-canonicalpaths
938    Description:
939    
940    0. Updated the BOOT file (something that I forgot to do earlier).
941    
942    1. Small internal change to CM so that it avoids "/../" in filenames
943       as much as possible (but only where it is safe).
944    
945    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
946       that arguments that contain delimiters are passed through correctly.
947       This change also means that all "special" arguments of the form
948       @SMLxxx... must come first.
949    
950    3. Changed install script to put relative anchor names for tool commands
951       into pathconfig.
952    
953    ----------------------------------------------------------------------
954    Name: Matthias Blume
955    Date: 2001/09/18 15:35:00 EDT
956    Tag: blume-20010918-readme11036
957    Description:
958    
959    Added README files.
960    
961    ----------------------------------------------------------------------
962    Name: Matthias Blume
963    Date: 2001/09/18 11:45:00 EDT
964    Tag: Release_110_36 (retag)
965    Description:
966    
967    Fixed mistake in config/preloads. Retagged as 110.36.
968    
969    ----------------------------------------------------------------------
970    Name: Matthias Blume
971    Date: 2001/09/18 09:40:00 EDT
972    Tag: Release_110_36_orig (tag changed)
973    Description:
974    
975    New version (110.36).  New bootfiles.
976    
977    ----------------------------------------------------------------------
978    Name: Matthias Blume
979    Date: 2001/09/14 16:15:00 EDT
980    Tag: blume-20010914-x86fastfp
981    Description:
982    
983    John committed some changes that Allen made, in particular a (hopefully)
984    correctly working version of the x86-fp module.
985    
986    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
987    flag to "true".  Everything seems to compile to a fixpoint ok, and
988    "mandelbrot" speeds up by about 15%.
989    
990    ----------------------------------------------------------------------
991    Name: Matthias Blume
992    Date: 2001/09/13 11:20:00 EDT
993    Tag: blume-20010913-minimal
994    Description:
995    
996    1. Stefan Monnier's patch to fix a miscompilation problem that
997       was brought to light by John Reppy's work on Moby.
998    
999    2. Implemented a minimal "structure Compiler" that contains just
1000       "version" and "architecture".  The minimal version will be
1001       available when the full version is not.  This is for backward-
1002       compatibility with code that wants to test Compiler.version.
1003    
1004    ----------------------------------------------------------------------
1005  Name: Matthias Blume  Name: Matthias Blume
1006  Date: 2001/08/28 14:03:00 EDT  Date: 2001/08/28 14:03:00 EDT
1007  Tag: blume-20010828-ml-lex  Tag: blume-20010828-ml-lex
# Line 2939  Line 3928 
3928       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3929       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3930       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
3931       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3932       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3933       Dave's hands. :)       Dave's hands. :)
3934    

Legend:
Removed from v.920  
changed lines
  Added in v.1085

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