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

Legend:
Removed from v.938  
changed lines
  Added in v.1036

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