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

Legend:
Removed from v.896  
changed lines
  Added in v.1066

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