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 987, Wed Nov 21 21:14:44 2001 UTC revision 1065, Thu Feb 14 15:05:16 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: Lal George
17    Date: 2002/02/14 09:55:27 EST 2002
18    Tag: george-20020214-isabelle-bug
19    Description:
20    
21    Fixed the MLRISC bug sent by Markus Wenzel regarding the compilation
22    of Isabelle on the x86.
23    
24    From Allen:
25    -----------
26     I've found the problem:
27    
28         in ra-core.sml, I use the counter "blocked" to keep track of the
29         true number of elements in the freeze queue.  When the counter goes
30         to zero, I skip examining the queue.  But I've messed up the
31         bookkeeping in combine():
32    
33             else ();
34             case !ucol of
35               PSEUDO => (if !cntv > 0 then
36                     (if !cntu > 0 then blocked := !blocked - 1 else ();
37                                        ^^^^^^^^^^^^^^^^^^^^^^^
38                      moveu := mergeMoveList(!movev, !moveu)
39                     )
40                  else ();
41    
42         combine() is called to coalesce two nodes u and v.
43         I think I was thinking that if the move counts of u and v are both
44         greater than zero then after they are coalesced then one node is
45         removed from the freeze queue.  Apparently I was thinking that
46         both u and v are of low degree, but that's clearly not necessarily true.
47    
48    
49    02/12/2002:
50        Here's the patch.  HOL now compiles.
51    
52        I don't know how this impact on performance (compile
53        time or runtime).  This bug caused the RA (especially on the x86)
54        to go thru the potential spill phase when there are still nodes on the
55        freeze queue.
56    
57    
58    
59    
60    ----------------------------------------------------------------------
61    Name: Matthias Blume
62    Date: 2002/02/13 22:40:00 EST
63    Tag: blume-20020213-fptr-rtti
64    Description:
65    
66    Fixed a bug in ml-nlffigen that was introduced with one of the previous
67    updates.
68    
69    ----------------------------------------------------------------------
70    Name: Matthias Blume
71    Date: 2002/02/13 16:41:00 EST
72    Tag: blume-20020213-cmlpq
73    Description:
74    
75    Added new priority queue export symbols (which have just been added to
76    smlnj-lib.cm) to CML's version of smlnj-lib.cm.  (Otherwise CML would
77    not compile and the installer would choke.)
78    
79    ----------------------------------------------------------------------
80    Name: Matthias Blume
81    Date: 2002/02/13 16:15:00 EST
82    Tag: blume-20020213-various
83    Description:
84    
85    1. More tweaks to ml-nlffigen:
86    
87       - better internal datastructures (resulting in slight speedup)
88       - "-match" option requires exact match
89       - "localized" gensym counters (untagged structs/unions nested within
90         other structs/unions or within typedefs get a fresh counter; their
91         tag will be prefixed by a concatenation of their parents' tags)
92       - bug fixes (related to calculation of transitive closure of types
93         to be included in the output)
94    
95    2. Minor Basis updates:
96    
97       - added implementations for List.collate and Option.app
98    
99    ----------------------------------------------------------------------
100    Name: Matthias Blume
101    Date: 2002/02/11 15:55:00 EST
102    Tag: blume-20020211-gensym
103    Description:
104    
105    Added a "-gensym" option to command line of ml-nlffigen.  This can be
106    used to specify a "stem" -- a string that is inserted in all "gensym'd"
107    names (ML structure names that correspond to unnamed C structs, unions,
108    and enums), so that separate runs of ml-nlffigen do not clash.
109    
110    ----------------------------------------------------------------------
111    Name: Matthias Blume
112    Date: 2002/02/11 12:05:00 EST
113    Tag: blume-20020211-gensml
114    Description:
115    
116    A quick fix for a problem with GenSML (in the pgraph-util library):
117    Make generation of toplevel "local" optional.  (Strictly speaking,
118    signature definitions within "local" are not legal SML.)
119    
120    Other than that: updates to INSTALL and cm/TODO.
121    
122    ----------------------------------------------------------------------
123    Name: Matthias Blume
124    Date: 2002/02/08 15:00:00 EST
125    Tag: blume-20020208-uniquepid
126    Description:
127    
128    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
129    
130    1. The installer (config/install.sh) has gotten smarter:
131    
132         - Configuration options are a bit easier to specify now
133           (in config/targets).
134         - Bug in recognizing .tar.bz2 files fixed.
135         - Installer automatically resolves dependencies between
136           configuration options (e.g., if you ask for eXene, you will
137           also get cml -- regardless whether you asked for it or not).
138         - Installer can run in "quieter mode" by setting the environment
139           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
140           "completely silent", though.
141         - Build HashCons library as part of smlnj-lib.
142    
143    2. A new scheme for assigning persistent identifiers to compilation
144       units (and, by extension, to types etc.) has been put into place.
145       This fixes a long-standing bug where types and even dynamic values
146       can get internally confused, thereby compromising type safety
147       (abstraction) and dynamic correctness.  See
148    
149         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
150    
151       for an example of how things could go wrong until now.
152    
153       The downside of the new scheme is that pids are not quite as
154       persistent as they used to be: CM will generate a fresh pid
155       for every compilation unit that it thinks it sees for the first
156       time.  That means that if you compile starting from a clean, fresh
157       source tree at two different times, you end up with different
158       binaries.
159    
160       Cutoff recompilation, however, has not been compromised because
161       CM keeps pid information in special caches between runs.
162    
163    ----------------------------------------------------------------------
164    Name: Lal George
165    Date: 2002/02/07 15:34:13 EST 2002
166    Tag: <none>
167    Description:
168    
169    Compilers that generate assembly code may produce  global labels
170    whose value is resolved at link time. The various peephole optimization
171    modules did not take this in account.
172    
173    TODO. The Labels.addrOf function should really return an option
174    type so that clients are forced to deal with this issue, rather
175    than an exception being raised.
176    
177    ----------------------------------------------------------------------
178    Name: Lal George
179    Date: 2002/02/06 13:55:02 EST
180    Tag: george-20020206-ra-breakup
181    Description:
182    
183    1. A bug fix from Allen.
184    
185        A typo causes extra fstp %st(0)'s to be generated at compensation
186        edges, which might cause stack underflow traps at runtime.  This
187        occurs in fft where there are extraneous fstps right before the 'into'
188        trap instruction (in this case they are harmless since none of the
189        integers overflow.)
190    
191    2. Pulled out various utility modules that were embedded in the modules
192       of the register allocator. I need these modules for other purposes, but
193       they are not complete enough to put into a library (just yet).
194    ----------------------------------------------------------------------
195    Name: Matthias Blume
196    Date: 2002/01/31 16:05:00 EST
197    Tag: blume-20020131-sparc-ccalls
198    Description:
199    
200    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
201       of extra stack space by mistake.  Fixed.
202    
203    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
204    
205    ----------------------------------------------------------------------
206    Name: Allen Leung
207    Date: 2002/01/30
208    Tag: leunga-20020130-nowhere-bug-fix
209    Description:
210    
211       MLRISC bug fixes:
212       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
213       2. MachineInt.fromString was negating its value.
214    
215    ----------------------------------------------------------------------
216    Name: Matthias Blume
217    Date: 2002/01/29
218    Tag: blume-20020129-INSTALL
219    Description:
220    
221    - Added somewhat detailed installation instructions (file INSTALL).
222    - Fixed curl-detection bug in config/install.sh.
223    - It is now possible to select the URL getter using the URLGETTER
224      environment variable:
225    
226          not set / "unknown"      --> automatic detection (script tries wget,
227                                       curl, and lynx)
228          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
229                                       how to properly invoke them)
230          other                    --> use $URLGETTER directly, it must take
231                                       precisely two command-line arguments
232                                       (source URL and destination file name)
233    
234    ----------------------------------------------------------------------
235    Name: Matthias Blume
236    Date: 2002/01/28
237    Tag: blume-20020128-sparc-ccalls
238    Description:
239    
240    - Fixed problem with calculation of "used" registers in sparc-c-calls.
241    - Make use of the allocParam argument in sparc-c-calls.
242    
243    ----------------------------------------------------------------------
244    Name: Matthias Blume
245    Date: 2002/01/28
246    Tag: blume-20020128-allocParam
247    Description:
248    
249    John Reppy:  Changes c-calls API to accept client-callback for
250    allocating extra stack space.
251    me: Corresponding changes to mlriscGen (using a dummy argument that
252        does not change the current behavior).
253    
254    ----------------------------------------------------------------------
255    Name: Matthias Blume
256    Date: 2002/01/28 12:00:00
257    Tag: Release_110_38
258    Description:
259    
260    This time for real!!!
261    
262    ----------------------------------------------------------------------
263    Name: Matthias Blume
264    Date: 2002/01/28 10:56:00 EST
265    Tag: blume-20020128-retraction
266    Description:
267    
268    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
269       with blume-Release_110_38-retracted.)
270    
271    1. Fixed a problem with incorrect rounding modes in real64.sml.
272       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
273    
274    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
275       and enums fixed.  The naming of corresponding ML identifiers should
276       now be consistent again.
277    
278    ----------------------------------------------------------------------
279    Name: Allen Leung
280    Date: 2002/01/27
281    Tag: leunga-20020127-nowhere
282    Description:
283    
284       Added a target called nowhere in the configuration scripts.
285       Enabling this will build the MLRISC 'nowhere' tool (for translating
286       programs with where-clauses into legal SML code) during installation.
287    
288    ----------------------------------------------------------------------
289    Name: Matthias Blume
290    Date: 2002/01/25 21:27:00 EST
291    Tag: blume-Release_110_38-retracted
292    Description:
293    
294    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
295    
296    README will be added later.
297    
298    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
299    (Release_110_38) removed.  Reason: Last-minute bug fixes.
300    
301    ----------------------------------------------------------------------
302    Name: Matthias Blume
303    Date: 2002/01/25
304    Tag: blume-20020125-ffi
305    Description:
306    
307    A large number of tweaks and improvements to ml-nlffi-lib and
308    ml-nlffigen:
309    
310       - ML represenation types have been streamlined
311       - getter and setter functions work with concrete values, not abstract
312         ones where possible
313       - ml-nlffigen command line more flexible (see README file there)
314       - some bugs have been fixed (hopefully)
315    
316    ----------------------------------------------------------------------
317    Name: Lal George
318    Date: 2002/01/24
319    Tag: george-20020124-risc-ra-interface
320    Description:
321    
322       There is a dramatic simplification in the interface to the
323       register allocator for RISC architectures as a result of making
324       parallel copy instructions explicit.
325    
326    ----------------------------------------------------------------------
327    Name: Matthias Blume
328    Date: 2002/01/22
329    Tag: blume-20020122-x86-ccalls
330    Description:
331    
332    Bug fix for c-calls on x86 (having to do with how char- and
333    short-arguments are being handled).
334    
335    ----------------------------------------------------------------------
336    Name: Matthias Blume
337    Date: 2002/01/21
338    Tag: blume-20020121-ff
339    Description:
340    
341    Another day of fiddling with the FFI...
342    
343    1. Bug fix/workaround:  CKIT does not complain about negative array
344       dimensions, so ml-nlffigen has to guard itself against this possibility.
345       (Otherwise a negative dimension would send it into an infinite loop.)
346    
347    2. Some of the abstract types (light objects, light pointers, most "base"
348       types) in structure C are now eqtypes.
349    
350    3. Added constructors and test functions for NULL function pointers.
351    
352    ----------------------------------------------------------------------
353    Name: Matthias Blume
354    Date: 2002/01/18
355    Tag: blume-20020118-ready-for-new-release
356    Description:
357    
358    Made config/srcarchiveurl point to a new place.  (Will provide boot
359    files shortly.)
360    
361    Maybe we christen this to be 110.38?
362    
363    ----------------------------------------------------------------------
364    Name: Matthias Blume
365    Date: 2002/01/18
366    Tag: blume-20020118-more-ffifiddle
367    Description:
368    
369    Today's FFI fiddling:
370    
371      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
372        C.Set.* that use concrete (MLRep.*) arguments and results instead
373        of abstract ones.
374    
375      - Provided word-style bit operations etc. for "int" representation
376        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
377        and Long.
378    
379    ----------------------------------------------------------------------
380    Name: Matthias Blume
381    Date: 2002/01/18
382    Tag: blume-20020118-use-x86-fp
383    Description:
384    
385    Now that x86-fast-fp seems to be working, I turned it back on again
386    by default.  (Seems to work fine now, even with the FFI.)
387    
388    Other than that, I added some documentation about the FFI to
389    src/ml-nlffigen/README and updated the FFI test examples in
390    src/ml-nlffi-lib/Tests/*.
391    
392    ----------------------------------------------------------------------
393    Name: Allen Leung
394    Date: 2002/01/17
395    Tag: leunga-20020117-x86-fast-fp-call
396    Description:
397    
398       1. Fixed a problem with handling return fp values when x86's fast fp
399          mode is turned on.
400    
401       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
402          of %f32.
403    
404       3. Added a constructor INT32lit to the ast of MLRISC tools.
405    
406    ----------------------------------------------------------------------
407    Name: Matthias Blume
408    Date: 2002/01/16
409    Tag: blume-20020116-ffifiddle
410    Description:
411    
412    More fiddling with the FFI interface:
413    
414     - Make constness 'c instead of rw wherever possible.  This eliminates
415       the need for certain explicit coercions.  (However, due to ML's
416       value polymorphism, there will still be many cases where explicit
417       coercions are necessary.  Phantom types are not the whole answer
418       to modeling a subtyping relationship in ML.)
419    
420     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
421    
422     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
423       clumsy workaround for varargs problem.)
424    
425    ----------------------------------------------------------------------
426    Name: Lal George
427    Date: 2002/01/15
428    Tag: <none>
429    Description:
430    
431    1. Since COPY instructions are no longer native to the architecture,
432       a generic functor can be used to implement the expandCopies function.
433    
434    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
435       TEXT segment.
436    
437    ----------------------------------------------------------------------
438    Name: Matthias Blume
439    Date: 2002/01/15
440    Tag: blume-20020115-ffiupdates
441    Description:
442    
443    1. Fix for bug resulting in single-precision float values being returned
444       incorrectly from FFI calls.
445    
446    2. Small modifications to C FFI API:
447    
448        - memory-allocation routines return straight objects (no options)
449          and raise an exception in out-of-memory situations
450        - unsafe extensions to cast between function pointers and pointers
451          from/to ints
452        - added structure C_Debug as an alternative to structure C where
453          pointer-dereferencing (|*| and |*!) always check for null-pointers
454        - added open_lib' to DynLinkage;  open_lib' works like open_lib
455          but also takes a (possibly empty) list of existing library handles
456          that the current library depends on
457    
458    ----------------------------------------------------------------------
459    Name: Matthias Blume
460    Date: 2002/01/10
461    Tag: blume-20020110-newffigen
462    Description:
463    
464    1. Updates to portable graph code.
465    
466    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
467       more scalable now so that even huge interfaces such as the one
468       for GTK compile in finite time and space. :-)
469       See src/ml-nlffigen/README for details on what's new.
470    
471    ----------------------------------------------------------------------
472    Name: Lal George
473    Date: 2001/01/09 14:31:35 EST 2002
474    Tag: george-20011206-rm-native-copy
475    Description:
476    
477            Removed the native COPY and FCOPY instructions
478            from all the architectures and replaced it with the
479            explicit COPY instruction from the previous commit.
480    
481            It is now possible to simplify many of the optimizations
482            modules that manipulate copies. This has not been
483            done in this change.
484    
485    ----------------------------------------------------------------------
486    Name: Lal George
487    Date: 2001/12/06 16:50:13 EST 2001
488    Tag: george-20011206-mlrisc-instruction
489    Description:
490    
491    Changed the representation of instructions from being fully abstract
492    to being partially concrete. That is to say:
493    
494      from
495            type instruction
496    
497      to
498            type instr                              (* machine instruction *)
499    
500            datatype instruction =
501                LIVE of {regs: C.cellset, spilled: C.cellset}
502              | KILL of {regs: C.cellset, spilled: C.cellset}
503              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
504              | ANNOTATION of {i: instruction, a: Annotations.annotation}
505              | INSTR of instr
506    
507    This makes the handling of certain special instructions that appear on
508    all architectures easier and uniform.
509    
510    LIVE and KILL say that a list of registers are live or killed at the
511    program point where they appear. No spill code is generated when an
512    element of the 'regs' field is spilled, but the register is moved to
513    the 'spilled' (which is present, more for debugging than anything else).
514    
515    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
516    We used to generate:
517    
518            DEFFREG f1
519            f1 := f2 + f3
520            trapb
521    
522    but now generate:
523    
524            f1 := f2 + f3
525            trapb
526            LIVE {regs=[f1,f2,f3], spilled=[]}
527    
528    Furthermore, the DEFFREG (hack) required that all floating point instruction
529    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
530    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
531    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
532    this architecture).
533    
534    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
535    all the architectures. This will result in further simplification of the
536    register allocator that must be aware of them for coalescing purposes, and
537    will also simplify certain aspects of the machine description that provides
538    callbacks related to parallel copies.
539    
540    ANNOTATION should be obvious, and now INSTR represents the honest to God
541    machine instruction set!
542    
543    The <arch>/instructions/<arch>Instr.sml files define certain utility
544    functions for making porting easier -- essentially converting upper case
545    to lower case. All machine instructions (of type instr) are in upper case,
546    and the lower case form generates an MLRISC instruction. For example on
547    the alpha we have:
548    
549      datatype instr =
550         LDA of {r:cell, b:cell, d:operand}
551       | ...
552    
553      val lda : {r:cell, b:cell, d:operand} -> instruction
554        ...
555    
556    where lda is just (INSTR o LDA), etc.
557    
558    ----------------------------------------------------------------------
559    Name: Matthias Blume
560    Date: 2001/11/22 21:40:00 EST
561    Tag: Release_110_37
562    Description:
563    
564    Release 110.37.  This time for real.
565    
566    ----------------------------------------------------------------------
567    Name: Matthias Blume
568    Date: 2001/11/21 16:35:00 EST
569    Tag: blume-20011121-foot-in-mouth
570    Description:
571    
572    Removed the "Release_110_37" tag because of a serious bug.
573    This will be re-tagged once the bug is fixed.
574    
575    ----------------------------------------------------------------------
576  Name: Matthias Blume  Name: Matthias Blume
577  Date: 2001/11/21 16:14:00 EST  Date: 2001/11/21 16:14:00 EST
578  Tag: blume-20011121-forgottenfile  Tag: blume-20011121-forgottenfile
# Line 24  Line 584 
584  ----------------------------------------------------------------------  ----------------------------------------------------------------------
585  Name: Matthias Blume  Name: Matthias Blume
586  Date: 2001/11/21 16:10:00 EST  Date: 2001/11/21 16:10:00 EST
587  Tag: Release_110_37  Tag: blume-20011121-invalid_110_37
588  Description:  Description:
589    
590    Note: I removed the original tag "Release_110_37" from this commit
591          because we found a serious bug in all non-x86 backends.
592          - Matthias
593    
594  1. Modifications to the SML/NJ code generator and to the runtime system  1. Modifications to the SML/NJ code generator and to the runtime system
595     so that code object name strings are directly inserted into code     so that code object name strings are directly inserted into code
596     objects at code generation time.  The only business the runtime system     objects at code generation time.  The only business the runtime system
# Line 248  Line 812 
812    
813  ----------------------------------------------------------------------  ----------------------------------------------------------------------
814  Name: Matthias Blume  Name: Matthias Blume
 >>>>>>> 1.169  
815  Date: 2001/09/18 15:35:00 EDT  Date: 2001/09/18 15:35:00 EDT
816  Tag: blume-20010918-readme11036  Tag: blume-20010918-readme11036
817  Description:  Description:

Legend:
Removed from v.987  
changed lines
  Added in v.1065

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