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 952, Tue Oct 9 14:00:40 2001 UTC revision 1048, Thu Jan 31 06:36:17 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/01/30
18    Tag: leunga-20020130-nowhere-bug-fix
19    Description:
20    
21       MLRISC bug fixes:
22       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
23       2. MachineInt.fromString was negating its value.
24    
25    ----------------------------------------------------------------------
26    Name: Matthias Blume
27    Date: 2002/01/29
28    Tag: blume-20020129-INSTALL
29    Description:
30    
31    - Added somewhat detailed installation instructions (file INSTALL).
32    - Fixed curl-detection bug in config/install.sh.
33    - It is now possible to select the URL getter using the URLGETTER
34      environment variable:
35    
36          not set / "unknown"      --> automatic detection (script tries wget,
37                                       curl, and lynx)
38          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
39                                       how to properly invoke them)
40          other                    --> use $URLGETTER directly, it must take
41                                       precisely two command-line arguments
42                                       (source URL and destination file name)
43    
44    ----------------------------------------------------------------------
45    Name: Matthias Blume
46    Date: 2002/01/28
47    Tag: blume-20020128-sparc-ccalls
48    Description:
49    
50    - Fixed problem with calculation of "used" registers in sparc-c-calls.
51    - Make use of the allocParam argument in sparc-c-calls.
52    
53    ----------------------------------------------------------------------
54    Name: Matthias Blume
55    Date: 2002/01/28
56    Tag: blume-20020128-allocParam
57    Description:
58    
59    John Reppy:  Changes c-calls API to accept client-callback for
60    allocating extra stack space.
61    me: Corresponding changes to mlriscGen (using a dummy argument that
62        does not change the current behavior).
63    
64    ----------------------------------------------------------------------
65    Name: Matthias Blume
66    Date: 2002/01/28 12:00:00
67    Tag: Release_110_38
68    Description:
69    
70    This time for real!!!
71    
72    ----------------------------------------------------------------------
73    Name: Matthias Blume
74    Date: 2002/01/28 10:56:00 EST
75    Tag: blume-20020128-retraction
76    Description:
77    
78    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
79       with blume-Release_110_38-retracted.)
80    
81    1. Fixed a problem with incorrect rounding modes in real64.sml.
82       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
83    
84    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
85       and enums fixed.  The naming of corresponding ML identifiers should
86       now be consistent again.
87    
88    ----------------------------------------------------------------------
89    Name: Allen Leung
90    Date: 2002/01/27
91    Tag: leunga-20020127-nowhere
92    Description:
93    
94       Added a target called nowhere in the configuration scripts.
95       Enabling this will build the MLRISC 'nowhere' tool (for translating
96       programs with where-clauses into legal SML code) during installation.
97    
98    ----------------------------------------------------------------------
99    Name: Matthias Blume
100    Date: 2002/01/25 21:27:00 EST
101    Tag: blume-Release_110_38-retracted
102    Description:
103    
104    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
105    
106    README will be added later.
107    
108    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
109    (Release_110_38) removed.  Reason: Last-minute bug fixes.
110    
111    ----------------------------------------------------------------------
112    Name: Matthias Blume
113    Date: 2002/01/25
114    Tag: blume-20020125-ffi
115    Description:
116    
117    A large number of tweaks and improvements to ml-nlffi-lib and
118    ml-nlffigen:
119    
120       - ML represenation types have been streamlined
121       - getter and setter functions work with concrete values, not abstract
122         ones where possible
123       - ml-nlffigen command line more flexible (see README file there)
124       - some bugs have been fixed (hopefully)
125    
126    ----------------------------------------------------------------------
127    Name: Lal George
128    Date: 2002/01/24
129    Tag: george-20020124-risc-ra-interface
130    Description:
131    
132       There is a dramatic simplification in the interface to the
133       register allocator for RISC architectures as a result of making
134       parallel copy instructions explicit.
135    
136    ----------------------------------------------------------------------
137    Name: Matthias Blume
138    Date: 2002/01/22
139    Tag: blume-20020122-x86-ccalls
140    Description:
141    
142    Bug fix for c-calls on x86 (having to do with how char- and
143    short-arguments are being handled).
144    
145    ----------------------------------------------------------------------
146    Name: Matthias Blume
147    Date: 2002/01/21
148    Tag: blume-20020121-ff
149    Description:
150    
151    Another day of fiddling with the FFI...
152    
153    1. Bug fix/workaround:  CKIT does not complain about negative array
154       dimensions, so ml-nlffigen has to guard itself against this possibility.
155       (Otherwise a negative dimension would send it into an infinite loop.)
156    
157    2. Some of the abstract types (light objects, light pointers, most "base"
158       types) in structure C are now eqtypes.
159    
160    3. Added constructors and test functions for NULL function pointers.
161    
162    ----------------------------------------------------------------------
163    Name: Matthias Blume
164    Date: 2002/01/18
165    Tag: blume-20020118-ready-for-new-release
166    Description:
167    
168    Made config/srcarchiveurl point to a new place.  (Will provide boot
169    files shortly.)
170    
171    Maybe we christen this to be 110.38?
172    
173    ----------------------------------------------------------------------
174    Name: Matthias Blume
175    Date: 2002/01/18
176    Tag: blume-20020118-more-ffifiddle
177    Description:
178    
179    Today's FFI fiddling:
180    
181      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
182        C.Set.* that use concrete (MLRep.*) arguments and results instead
183        of abstract ones.
184    
185      - Provided word-style bit operations etc. for "int" representation
186        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
187        and Long.
188    
189    ----------------------------------------------------------------------
190    Name: Matthias Blume
191    Date: 2002/01/18
192    Tag: blume-20020118-use-x86-fp
193    Description:
194    
195    Now that x86-fast-fp seems to be working, I turned it back on again
196    by default.  (Seems to work fine now, even with the FFI.)
197    
198    Other than that, I added some documentation about the FFI to
199    src/ml-nlffigen/README and updated the FFI test examples in
200    src/ml-nlffi-lib/Tests/*.
201    
202    ----------------------------------------------------------------------
203    Name: Allen Leung
204    Date: 2002/01/17
205    Tag: leunga-20020117-x86-fast-fp-call
206    Description:
207    
208       1. Fixed a problem with handling return fp values when x86's fast fp
209          mode is turned on.
210    
211       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
212          of %f32.
213    
214       3. Added a constructor INT32lit to the ast of MLRISC tools.
215    
216    ----------------------------------------------------------------------
217    Name: Matthias Blume
218    Date: 2002/01/16
219    Tag: blume-20020116-ffifiddle
220    Description:
221    
222    More fiddling with the FFI interface:
223    
224     - Make constness 'c instead of rw wherever possible.  This eliminates
225       the need for certain explicit coercions.  (However, due to ML's
226       value polymorphism, there will still be many cases where explicit
227       coercions are necessary.  Phantom types are not the whole answer
228       to modeling a subtyping relationship in ML.)
229    
230     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
231    
232     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
233       clumsy workaround for varargs problem.)
234    
235    ----------------------------------------------------------------------
236    Name: Lal George
237    Date: 2002/01/15
238    Tag: <none>
239    Description:
240    
241    1. Since COPY instructions are no longer native to the architecture,
242       a generic functor can be used to implement the expandCopies function.
243    
244    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
245       TEXT segment.
246    
247    ----------------------------------------------------------------------
248    Name: Matthias Blume
249    Date: 2002/01/15
250    Tag: blume-20020115-ffiupdates
251    Description:
252    
253    1. Fix for bug resulting in single-precision float values being returned
254       incorrectly from FFI calls.
255    
256    2. Small modifications to C FFI API:
257    
258        - memory-allocation routines return straight objects (no options)
259          and raise an exception in out-of-memory situations
260        - unsafe extensions to cast between function pointers and pointers
261          from/to ints
262        - added structure C_Debug as an alternative to structure C where
263          pointer-dereferencing (|*| and |*!) always check for null-pointers
264        - added open_lib' to DynLinkage;  open_lib' works like open_lib
265          but also takes a (possibly empty) list of existing library handles
266          that the current library depends on
267    
268    ----------------------------------------------------------------------
269    Name: Matthias Blume
270    Date: 2002/01/10
271    Tag: blume-20020110-newffigen
272    Description:
273    
274    1. Updates to portable graph code.
275    
276    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
277       more scalable now so that even huge interfaces such as the one
278       for GTK compile in finite time and space. :-)
279       See src/ml-nlffigen/README for details on what's new.
280    
281    ----------------------------------------------------------------------
282    Name: Lal George
283    Date: 2001/01/09 14:31:35 EST 2002
284    Tag: george-20011206-rm-native-copy
285    Description:
286    
287            Removed the native COPY and FCOPY instructions
288            from all the architectures and replaced it with the
289            explicit COPY instruction from the previous commit.
290    
291            It is now possible to simplify many of the optimizations
292            modules that manipulate copies. This has not been
293            done in this change.
294    
295    ----------------------------------------------------------------------
296    Name: Lal George
297    Date: 2001/12/06 16:50:13 EST 2001
298    Tag: george-20011206-mlrisc-instruction
299    Description:
300    
301    Changed the representation of instructions from being fully abstract
302    to being partially concrete. That is to say:
303    
304      from
305            type instruction
306    
307      to
308            type instr                              (* machine instruction *)
309    
310            datatype instruction =
311                LIVE of {regs: C.cellset, spilled: C.cellset}
312              | KILL of {regs: C.cellset, spilled: C.cellset}
313              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
314              | ANNOTATION of {i: instruction, a: Annotations.annotation}
315              | INSTR of instr
316    
317    This makes the handling of certain special instructions that appear on
318    all architectures easier and uniform.
319    
320    LIVE and KILL say that a list of registers are live or killed at the
321    program point where they appear. No spill code is generated when an
322    element of the 'regs' field is spilled, but the register is moved to
323    the 'spilled' (which is present, more for debugging than anything else).
324    
325    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
326    We used to generate:
327    
328            DEFFREG f1
329            f1 := f2 + f3
330            trapb
331    
332    but now generate:
333    
334            f1 := f2 + f3
335            trapb
336            LIVE {regs=[f1,f2,f3], spilled=[]}
337    
338    Furthermore, the DEFFREG (hack) required that all floating point instruction
339    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
340    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
341    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
342    this architecture).
343    
344    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
345    all the architectures. This will result in further simplification of the
346    register allocator that must be aware of them for coalescing purposes, and
347    will also simplify certain aspects of the machine description that provides
348    callbacks related to parallel copies.
349    
350    ANNOTATION should be obvious, and now INSTR represents the honest to God
351    machine instruction set!
352    
353    The <arch>/instructions/<arch>Instr.sml files define certain utility
354    functions for making porting easier -- essentially converting upper case
355    to lower case. All machine instructions (of type instr) are in upper case,
356    and the lower case form generates an MLRISC instruction. For example on
357    the alpha we have:
358    
359      datatype instr =
360         LDA of {r:cell, b:cell, d:operand}
361       | ...
362    
363      val lda : {r:cell, b:cell, d:operand} -> instruction
364        ...
365    
366    where lda is just (INSTR o LDA), etc.
367    
368    ----------------------------------------------------------------------
369    Name: Matthias Blume
370    Date: 2001/11/22 21:40:00 EST
371    Tag: Release_110_37
372    Description:
373    
374    Release 110.37.  This time for real.
375    
376    ----------------------------------------------------------------------
377    Name: Matthias Blume
378    Date: 2001/11/21 16:35:00 EST
379    Tag: blume-20011121-foot-in-mouth
380    Description:
381    
382    Removed the "Release_110_37" tag because of a serious bug.
383    This will be re-tagged once the bug is fixed.
384    
385    ----------------------------------------------------------------------
386    Name: Matthias Blume
387    Date: 2001/11/21 16:14:00 EST
388    Tag: blume-20011121-forgottenfile
389    Description:
390    
391    Forgot to add a file.  (Just a .tex-file -- part of
392    the CM manual source.)
393    
394    ----------------------------------------------------------------------
395    Name: Matthias Blume
396    Date: 2001/11/21 16:10:00 EST
397    Tag: blume-20011121-invalid_110_37
398    Description:
399    
400    Note: I removed the original tag "Release_110_37" from this commit
401          because we found a serious bug in all non-x86 backends.
402          - Matthias
403    
404    1. Modifications to the SML/NJ code generator and to the runtime system
405       so that code object name strings are directly inserted into code
406       objects at code generation time.  The only business the runtime system
407       has with this is now to read the name strings on occasions.
408       (The encoding of the name string has also changed somewhat.)
409    
410    2. CM now implements a simple "set calculus" for specifying export lists.
411       In particular, it is now possible to refer to the export lists of
412       other libraries/groups/sources and form unions as well as differences.
413       See the latest CM manual for details.
414    
415    3. An separate notion of "proxy" libraries has again be eliminated from
416       CM's model.  (Proxy libraries are now simply a special case of using
417       the export list calculus.)
418    
419    4. Some of the existing libraries now take advantage of the new set
420       calculus.
421       (Notice that not all libraries have been converted because some
422       of the existing .cm-files are supposed to be backward compatible
423       with 110.0.x.)
424    
425    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
426       "General.exnMessage"!  The former relies on a certain hook to be
427       initialized, and that often does not happen in the stand-alone case.)
428    
429    ----------------------------------------------------------------------
430    Name: Lal George
431    Date: 2001/11/21  13:56:18 EST
432    Tag: george-2001121-pseudo-ops
433    Description:
434    
435      Implemented a complete redesign of MLRISC pseudo-ops. Now there
436      ought to never be any question of incompatabilities with
437      pseudo-op syntax expected by host assemblers.
438    
439      For now, only modules supporting GAS syntax are implemented
440      but more should follow, such as MASM, and vendor assembler
441      syntax, e.g. IBM as, Sun as, etc.
442    
443    ----------------------------------------------------------------------
444    Name: Matthias Blume
445    Date: 2001/11/14 11:52:00 EST
446    Tag: blume-20011114-srcname
447    Description:
448    
449    1. Routed the name of the current source file to mlriscgen where it
450       should be directly emitted into the code object.  (This last part
451       is yet to be done.)
452    
453    2. Some cleanup of the pgraph code to make it match the proposal that
454       I put out the other day.  (The proposal notwithstanding, things are
455       still in flux here.)
456    
457    ----------------------------------------------------------------------
458    Name: Lal George
459    Date: 2001/11/14 09:44:04 EST
460    Tag:
461    Description:
462    
463      Fix for a backpatching bug reported by Allen.
464    
465      Because the boundary between short and long span-dependent
466      instructions is +/- 128, there are an astounding number of
467      span-dependent instructions whose size is over estimated.
468    
469      Allen came up with the idea of letting the size of span
470      dependent instructions be non-monotonic, for a maxIter
471      number of times, after which the size must be monotonically
472      increasing.
473    
474      This table shows the number of span-dependent instructions
475      whose size was over-estimated as a function of maxIter, for the
476      file Parse/parse/ml.grm.sml:
477    
478         maxIter            # of instructions:
479            10                      687
480            20                      438
481            30                      198
482            40                        0
483    
484      In compiling the compiler, there is no significant difference in
485      compilation speed between maxIter=10 and maxIter=40. Actually,
486      my measurements showed that maxIter=40 was a tad faster than
487      maxIter=10! Also 96% of the  files in the compiler reach a fix
488      point within 13 iterations, so fixing maxIter at 40, while high,
489      is okay.
490    
491    ----------------------------------------------------------------------
492    Name: Matthias Blume
493    Date: 2001/10/31 15:25:00 EST
494    Tag: blume-20011031-pgraph
495    Description:
496    
497    CKIT:
498    * Changed the "Function" constructor of type Ast.ctype to carry optional
499      argument identifiers.
500    * Changed the return type of TypeUtil.getFunction accordingly.
501    * Type equality ignores the argument names.
502    * TypeUtil.composite tries to preserve argument names but gives up quickly
503      if there is a mismatch.
504    
505    installation script:
506    * attempts to use "curl" if available (unless "wget" is available as well)
507    
508    CM:
509    * has an experimental implementation of "portable graphs" which I will
510      soon propose as an implementation-independent library format
511    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
512    
513    NLFFI-LIB:
514    * some cleanup (all cosmetic)
515    
516    NLFFIGEN:
517    * temporarily disabled the mechanism that suppresses ML output for
518      C definitions whose identifiers start with an underscore character
519    * generate val bindings for enum constants
520    * user can request that only one style (light or heavy) is being used;
521      default is to use both (command-line arguments: -heavy and -light)
522    * fixed bug in handling of function types involving incomplete pointers
523    * generate ML entry points that take record arguments (i.e., using
524      named arguments) for C functions that have a prototype with named
525      arguments
526      (see changes to CKIT)
527    
528    ----------------------------------------------------------------------
529    Name: Allen Leung
530    Date: 2001/10/27 20:34:00 EDT
531    Tag: leunga-20011027-x86-fast-fp-call
532    Description:
533    
534       Fixed the bug described in blume-20010920-slowfp.
535    
536       The fix involves
537          1. generating FCOPYs in FSTP in ia32-svid
538          2. marking a CALL with the appropriate annotation
539    
540    ----------------------------------------------------------------------
541    Name: Matthias Blume
542    Date: 2001/10/16 11:32:00 EDT
543    Tag: blume-20011016-netbsd
544    Description:
545    
546    Underscore patch from Chris Richards (fixing problem with compiling
547    runtime system under recent NetBSD).
548    
549    ----------------------------------------------------------------------
550    Name: Allen Leung
551    Date: 2001/10/12 17:18:32 EDT 2001
552    Tag: leung-20011012-x86-printflowgraph
553    Description:
554    
555    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
556    
557    ----------------------------------------------------------------------
558    Name: Lal George
559    Date: 2001/10/11 23:51:34 EDT
560    Tag: george-20011011-too-many-instrs
561    Description:
562    
563    The representation of a program point never expected to see more
564    than 65536 instructions in a basic block!
565    
566    ----------------------------------------------------------------------
567  Name: Lal George  Name: Lal George
568  Date: 2001/10/09 09:41:37 EDT  Date: 2001/10/09 09:41:37 EDT
569  Tag: george-20011008-mlrisc-labels  Tag: george-20011008-mlrisc-labels

Legend:
Removed from v.952  
changed lines
  Added in v.1048

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