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 814, Tue May 1 15:44:45 2001 UTC revision 839, Thu Jun 7 20:28:44 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/06/07
18    Tag: blume-20010607-calls
19    Description:
20    
21    A number of internal changes related to C calls and calling conventions:
22    
23    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
24       number of bytes popped implicitly (by the callee).  In most cases
25       this field is 0 but on x86/win32 it is some non-zero value.  This
26       is information provided for the benefit of the "omit-frameptr" pass.
27    2. The CALL instruction on the x86 carries a similar "pops" field.
28       The instruction selection phase copies its value from the ML-Tree
29       CALL statement.
30    3. On all other architectures, the instruction selection phase checks
31       whether "pops=0" and complains if not.
32    4. The c-calls implementation for x86 now accepts two calling conventions:
33       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
34       up after the call and pops is set to 0.  For "stdcall", the caller
35       does nothing, leaving the cleanup to the callee; pops is set to
36       the number of bytes that were pushed onto the stack.
37    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
38       distinguish between "ccall" and "stdcall".
39    6. The UNIMP instruction has been added to the supported Sparc instruction
40       set. (This is needed for implementing the official C calling convention
41       on this architecture.)
42    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
43       work with the latest CM.
44    
45    ----------------------------------------------------------------------
46    Name: Matthias Blume
47    Date: 2001/06/05 15:10:00 EDT
48    Tag: blume-20010605-cm-index
49    Description:
50    
51    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
52    
53    1. CM can now generate "index files".  These are human-readable files
54       that list on a per-.cm-file basis each toplevel symbol defined or
55       imported.  The location of the index file for
56       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
57       To enable index-file generation, set CM.Control.generate_index to true
58       or export an environment-symbol: export CM_GENERATE_INDEX=true.
59    
60       The CM manual has been updated accordingly.
61    
62    2. I made some slight modifications to the c-calls API in MLRISC.
63    
64         a) There is now a callback to support saving/restoring of
65            dedicated but caller-save registers around the actual call
66            instruction.
67         b) One can optionally specify a comment-annotation for the
68            call instruction.
69    
70    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
71       (For example, the comment annotation shows the C prototype of
72        the function being called.)
73    
74    ----------------------------------------------------------------------
75    Name: Matthias Blume
76    Date: 2001/06/01 13:30:00 EDT
77    Tag: blume-20010601-nlffi-cleanup
78    Description:
79    
80    This is mostly a cleanup of MLFFI stuff:
81    
82       - some signature files have been put into a more exposed place
83       - the ugly 'f type parameter is gone (simplifies types tremendously!)
84       - ml-nlffigen changed accordingly
85       - tutorial updated
86    
87    Other changes:
88    
89       - author's affiliation in CM manual(s) updated
90       - some more recognized keywords added to Allen's sml.sty
91    
92    ----------------------------------------------------------------------
93    Name: Matthias Blume
94    Date: 2001/05/25 15:30:00 EDT
95    Tag: blume-20010525-iptr
96    Description:
97    
98      - put the official 110.33-README (as it appears on the ftp server) under
99        CVS
100      - fixed a small bug related to incomplete pointer types in
101        ml-nlffigen
102      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
103        (it does not need the 'f type parameter)
104    
105    ----------------------------------------------------------------------
106    Name: Matthias Blume
107    Date: 2001/05/23 14:30:00 EDT
108    Tag: Release_110_33
109    Description:
110    
111    New version number (110.33).  New bootfiles.
112    
113    ----------------------------------------------------------------------
114    Name: Matthias Blume
115    Date: 2001/05/22 18:06:00 EDT
116    Tag: blume-20010522-targets
117    Description:
118    
119    Made install.sh use file config/targets.customized if it exists, falling
120    back to config/targets if it doesn't.  This way one can have a customized
121    version of the targets file without touching the "real thing", thus
122    eliminating the constant fear of accidentally checking something bogus
123    back into the CVS repository...  (File config/targets.customized must
124    not be added to the repository!)
125    
126    ----------------------------------------------------------------------
127    Name: Matthias Blume
128    Date: 2001/05/22 16:30:00 EDT
129    Tag: blume-20010522-minitut
130    Description:
131    
132    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
133       struct returns.
134    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
135       incomplete, preliminary documentation for NLFFI.
136    
137    ----------------------------------------------------------------------
138    Name: Matthias Blume
139    Date: 2001/05/14 11:30:00 EDT
140    Tag: blume-20010514-script
141    Description:
142    
143    Some bugs in install script fixed.
144    
145    In addition to that I also made a slight change to the NLFFI API:
146    Functors generated by ml-nlffigen now take the dynamic library as a
147    straight functor argument, not as a suspended one.  (The original
148    functor code used to force the suspension right away anyway, so there
149    was nothing gained by this complication of the interface.)
150    
151    ----------------------------------------------------------------------
152    Name: Matthias Blume
153    Date: 2001/05/11 14:35:00 EDT
154    Tag: blume-20010511-ml-nlffi
155    Description:
156    
157    I finally took the plunge and added my new FFI code to the main
158    repository.  For x86-linux it is now ready for prime-time.
159    
160    There are two new subdirectories of "src":
161    
162      - ml-nlffi-lib:
163           The utility library for programs using the FFI interface.
164           Here is the implementation of $/c.cm and its associated low-level
165           partners $/c-int.cm and $/memory.cm.
166      - ml-nlffigen:
167           A stand-alone program for generating ML glue code from C source
168           code.
169    
170    Building ml-nlffigen requires $/ckit-lib.cm.
171    
172    The config/install.sh script has been updates to do the Right Thing
173    (hopefully).
174    
175    Notice that the source tree for the C-Kit will not be put under "src"
176    but directly under the installation root directory.  (This is the
177    structure that currently exists on the CVS server when you check out
178    module "sml".)  Fortunately, config/install.sh knows about this oddity.
179    
180    Bugs: No documentation yet.
181    
182    ----------------------------------------------------------------------
183    Name: Matthias Blume
184    Date: 2001/05/09 16:35:00 EDT
185    Tag: blume-20010509-cpscontract
186    Description:
187    
188    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
189    wrapper/unwrapper elimination did not decrement usage counts and some
190    dead variables got overlooked by the dead-up logic.)
191    
192    ----------------------------------------------------------------------
193    Name: Lal George
194    Date: 2001/05/08  17:26:09 EDT
195    Tag: george-20010508-omit-frameptr
196    Description:
197    
198    Changes to implement the omit-frame-pointer optimization to support
199    raw C calls. For now, there is only support on the Intel x86, but
200    other architectures will follow as more experience is gained with this.
201    
202    
203    ----------------------------------------------------------------------
204    Name: Matthias Blume
205    Date: 2001/05/07 14:40:00 EDT
206    Tag: blume-20010507-proxies
207    Description:
208    
209    I made into "proxy libraries" all libraries that qualify for such a
210    change.  (A qualifying library is a library that has another library or
211    groups as its sole member and repeats that member's export list
212    verbatim.  A proxy library avoids this repetition by omitting its export
213    list, effectively inheriting the list that its (only) member exports.
214    See the CM manual for more explanation.)
215    The main effect is that explicit export lists for these libraries
216    do not have to be kepts in sync, making maintenance a bit easier.
217    
218    I also added copyright notices to many .cm-files.
219    
220    Last but not least, I made a new set of bootfiles.
221    
222    ----------------------------------------------------------------------
223    Name: Matthias Blume
224    Date: 2001/05/04 17:00:00 EDT
225    Tag: blume-20010504-cm-lsplit
226    Description:
227    
228    0. John merged pending changes to $/smlnj-lib.cm
229    
230    1. Allen's previous change accidentally backed out of one of Lal's
231       earlier changes.  I undid this mistake (re-introducing Lal's change).
232    
233    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
234       within the compiler where applicable.  There is some code simplification
235       because of that.
236    
237    3. The "split" phase (in FLINT) is now part of the default list of phases.
238       Compiler.Control.LambdaSplitting.* can be used to globally control the
239       lambda-splitting (cross-module-inlining) engine.  In addition to that,
240       it can now also be controlled on a per-source basis: CM has been taught
241       a new tool parameter applicable to ML source files.
242    
243       - To turn lambda-splitting off completely:
244            local open Compiler.Control.LambdaSplitting in
245                val _ = set Off
246            end
247       - To make "no lambda-splitting" the global default (but allow per-source
248         overriding); this is the initial setting:
249            local open Compiler.Control.LambdaSplitting in
250                val _ = set (Default NONE)
251            end
252       - To make "lambda-splitting with aggressiveness a" the global default
253         (and allow per-source overriding):
254            local open Compiler.Control.LambdaSplitting in
255                val _ = set (Default (SOME a))
256            end
257    
258       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
259         write (in the respective .cm-file):
260            a.sml (lambdasplitting:off)
261       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
262            a.sml (lambdasplitting:on)
263       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
264         <a> is a decimal non-negative integer):
265            a.sml (lambdasplitting:<a>)
266       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
267            a.sml (lambdasplitting:infinity)
268       - To use the global default for a.sml:
269            a.sml (lambdasplitting:default)
270         or simply
271            a.sml
272    
273    ----------------------------------------------------------------------
274    Name: Allen Leung
275    Date: 2001/05/04 01:57:00 EDT
276    Tag: leunga-20010504-sync
277    Description:
278    
279      MLRISC features.
280    
281      1. Fix to CMPXCHG instructions.
282      2. Changed RA interface to allow annotations in callbacks.
283      3. Added a new method to the stream interface to allow annotations updates.
284    
285    ----------------------------------------------------------------------
286    Name: Matthias Blume
287  Date: 2001/05/01 11:45:00 EDT  Date: 2001/05/01 11:45:00 EDT
288  Tag: blume-20010501-pcedittmp  Tag: blume-20010501-pcedittmp
289  Description:  Description:

Legend:
Removed from v.814  
changed lines
  Added in v.839

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