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 959, Fri Oct 12 21:21:41 2001 UTC revision 1015, Tue Jan 15 21:46:00 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    Name: Matthias Blume
16    Date: 2002/01/15
17    Tag: blume-20020115-ffiupdates
18    Description:
19    
20    1. Fix for bug resulting in single-precision float values being returned
21       incorrectly from FFI calls.
22    
23    2. Small modifications to C FFI API:
24    
25        - memory-allocation routines return straight objects (no options)
26          and raise an exception in out-of-memory situations
27        - unsafe extensions to cast between function pointers and pointers
28          from/to ints
29        - added structure C_Debug as an alternative to structure C where
30          pointer-dereferencing (|*| and |*!) always check for null-pointers
31        - added open_lib' to DynLinkage;  open_lib' works like open_lib
32          but also takes a (possibly empty) list of existing library handles
33          that the current library depends on
34    
35    ----------------------------------------------------------------------
36    Name: Matthias Blume
37    Date: 2002/01/10
38    Tag: blume-20020110-newffigen
39    Description:
40    
41    1. Updates to portable graph code.
42    
43    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
44       more scalable now so that even huge interfaces such as the one
45       for GTK compile in finite time and space. :-)
46       See src/ml-nlffigen/README for details on what's new.
47    
48    ----------------------------------------------------------------------
49    Name: Lal George
50    Date: 2001/01/09 14:31:35 EST 2002
51    Tag: george-20011206-rm-native-copy
52    Description:
53    
54            Removed the native COPY and FCOPY instructions
55            from all the architectures and replaced it with the
56            explicit COPY instruction from the previous commit.
57    
58            It is now possible to simplify many of the optimizations
59            modules that manipulate copies. This has not been
60            done in this change.
61    
62    ----------------------------------------------------------------------
63    Name: Lal George
64    Date: 2001/12/06 16:50:13 EST 2001
65    Tag: george-20011206-mlrisc-instruction
66    Description:
67    
68    Changed the representation of instructions from being fully abstract
69    to being partially concrete. That is to say:
70    
71      from
72            type instruction
73    
74      to
75            type instr                              (* machine instruction *)
76    
77            datatype instruction =
78                LIVE of {regs: C.cellset, spilled: C.cellset}
79              | KILL of {regs: C.cellset, spilled: C.cellset}
80              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
81              | ANNOTATION of {i: instruction, a: Annotations.annotation}
82              | INSTR of instr
83    
84    This makes the handling of certain special instructions that appear on
85    all architectures easier and uniform.
86    
87    LIVE and KILL say that a list of registers are live or killed at the
88    program point where they appear. No spill code is generated when an
89    element of the 'regs' field is spilled, but the register is moved to
90    the 'spilled' (which is present, more for debugging than anything else).
91    
92    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
93    We used to generate:
94    
95            DEFFREG f1
96            f1 := f2 + f3
97            trapb
98    
99    but now generate:
100    
101            f1 := f2 + f3
102            trapb
103            LIVE {regs=[f1,f2,f3], spilled=[]}
104    
105    Furthermore, the DEFFREG (hack) required that all floating point instruction
106    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
107    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
108    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
109    this architecture).
110    
111    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
112    all the architectures. This will result in further simplification of the
113    register allocator that must be aware of them for coalescing purposes, and
114    will also simplify certain aspects of the machine description that provides
115    callbacks related to parallel copies.
116    
117    ANNOTATION should be obvious, and now INSTR represents the honest to God
118    machine instruction set!
119    
120    The <arch>/instructions/<arch>Instr.sml files define certain utility
121    functions for making porting easier -- essentially converting upper case
122    to lower case. All machine instructions (of type instr) are in upper case,
123    and the lower case form generates an MLRISC instruction. For example on
124    the alpha we have:
125    
126      datatype instr =
127         LDA of {r:cell, b:cell, d:operand}
128       | ...
129    
130      val lda : {r:cell, b:cell, d:operand} -> instruction
131        ...
132    
133    where lda is just (INSTR o LDA), etc.
134    
135    ----------------------------------------------------------------------
136    Name: Matthias Blume
137    Date: 2001/11/22 21:40:00 EST
138    Tag: Release_110_37
139    Description:
140    
141    Release 110.37.  This time for real.
142    
143    ----------------------------------------------------------------------
144    Name: Matthias Blume
145    Date: 2001/11/21 16:35:00 EST
146    Tag: blume-20011121-foot-in-mouth
147    Description:
148    
149    Removed the "Release_110_37" tag because of a serious bug.
150    This will be re-tagged once the bug is fixed.
151    
152    ----------------------------------------------------------------------
153    Name: Matthias Blume
154    Date: 2001/11/21 16:14:00 EST
155    Tag: blume-20011121-forgottenfile
156    Description:
157    
158    Forgot to add a file.  (Just a .tex-file -- part of
159    the CM manual source.)
160    
161    ----------------------------------------------------------------------
162    Name: Matthias Blume
163    Date: 2001/11/21 16:10:00 EST
164    Tag: blume-20011121-invalid_110_37
165    Description:
166    
167    Note: I removed the original tag "Release_110_37" from this commit
168          because we found a serious bug in all non-x86 backends.
169          - Matthias
170    
171    1. Modifications to the SML/NJ code generator and to the runtime system
172       so that code object name strings are directly inserted into code
173       objects at code generation time.  The only business the runtime system
174       has with this is now to read the name strings on occasions.
175       (The encoding of the name string has also changed somewhat.)
176    
177    2. CM now implements a simple "set calculus" for specifying export lists.
178       In particular, it is now possible to refer to the export lists of
179       other libraries/groups/sources and form unions as well as differences.
180       See the latest CM manual for details.
181    
182    3. An separate notion of "proxy" libraries has again be eliminated from
183       CM's model.  (Proxy libraries are now simply a special case of using
184       the export list calculus.)
185    
186    4. Some of the existing libraries now take advantage of the new set
187       calculus.
188       (Notice that not all libraries have been converted because some
189       of the existing .cm-files are supposed to be backward compatible
190       with 110.0.x.)
191    
192    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
193       "General.exnMessage"!  The former relies on a certain hook to be
194       initialized, and that often does not happen in the stand-alone case.)
195    
196    ----------------------------------------------------------------------
197    Name: Lal George
198    Date: 2001/11/21  13:56:18 EST
199    Tag: george-2001121-pseudo-ops
200    Description:
201    
202      Implemented a complete redesign of MLRISC pseudo-ops. Now there
203      ought to never be any question of incompatabilities with
204      pseudo-op syntax expected by host assemblers.
205    
206      For now, only modules supporting GAS syntax are implemented
207      but more should follow, such as MASM, and vendor assembler
208      syntax, e.g. IBM as, Sun as, etc.
209    
210    ----------------------------------------------------------------------
211    Name: Matthias Blume
212    Date: 2001/11/14 11:52:00 EST
213    Tag: blume-20011114-srcname
214    Description:
215    
216    1. Routed the name of the current source file to mlriscgen where it
217       should be directly emitted into the code object.  (This last part
218       is yet to be done.)
219    
220    2. Some cleanup of the pgraph code to make it match the proposal that
221       I put out the other day.  (The proposal notwithstanding, things are
222       still in flux here.)
223    
224    ----------------------------------------------------------------------
225    Name: Lal George
226    Date: 2001/11/14 09:44:04 EST
227    Tag:
228    Description:
229    
230      Fix for a backpatching bug reported by Allen.
231    
232      Because the boundary between short and long span-dependent
233      instructions is +/- 128, there are an astounding number of
234      span-dependent instructions whose size is over estimated.
235    
236      Allen came up with the idea of letting the size of span
237      dependent instructions be non-monotonic, for a maxIter
238      number of times, after which the size must be monotonically
239      increasing.
240    
241      This table shows the number of span-dependent instructions
242      whose size was over-estimated as a function of maxIter, for the
243      file Parse/parse/ml.grm.sml:
244    
245         maxIter            # of instructions:
246            10                      687
247            20                      438
248            30                      198
249            40                        0
250    
251      In compiling the compiler, there is no significant difference in
252      compilation speed between maxIter=10 and maxIter=40. Actually,
253      my measurements showed that maxIter=40 was a tad faster than
254      maxIter=10! Also 96% of the  files in the compiler reach a fix
255      point within 13 iterations, so fixing maxIter at 40, while high,
256      is okay.
257    
258    ----------------------------------------------------------------------
259    Name: Matthias Blume
260    Date: 2001/10/31 15:25:00 EST
261    Tag: blume-20011031-pgraph
262    Description:
263    
264    CKIT:
265    * Changed the "Function" constructor of type Ast.ctype to carry optional
266      argument identifiers.
267    * Changed the return type of TypeUtil.getFunction accordingly.
268    * Type equality ignores the argument names.
269    * TypeUtil.composite tries to preserve argument names but gives up quickly
270      if there is a mismatch.
271    
272    installation script:
273    * attempts to use "curl" if available (unless "wget" is available as well)
274    
275    CM:
276    * has an experimental implementation of "portable graphs" which I will
277      soon propose as an implementation-independent library format
278    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
279    
280    NLFFI-LIB:
281    * some cleanup (all cosmetic)
282    
283    NLFFIGEN:
284    * temporarily disabled the mechanism that suppresses ML output for
285      C definitions whose identifiers start with an underscore character
286    * generate val bindings for enum constants
287    * user can request that only one style (light or heavy) is being used;
288      default is to use both (command-line arguments: -heavy and -light)
289    * fixed bug in handling of function types involving incomplete pointers
290    * generate ML entry points that take record arguments (i.e., using
291      named arguments) for C functions that have a prototype with named
292      arguments
293      (see changes to CKIT)
294    
295    ----------------------------------------------------------------------
296    Name: Allen Leung
297    Date: 2001/10/27 20:34:00 EDT
298    Tag: leunga-20011027-x86-fast-fp-call
299    Description:
300    
301       Fixed the bug described in blume-20010920-slowfp.
302    
303       The fix involves
304          1. generating FCOPYs in FSTP in ia32-svid
305          2. marking a CALL with the appropriate annotation
306    
307    ----------------------------------------------------------------------
308    Name: Matthias Blume
309    Date: 2001/10/16 11:32:00 EDT
310    Tag: blume-20011016-netbsd
311    Description:
312    
313    Underscore patch from Chris Richards (fixing problem with compiling
314    runtime system under recent NetBSD).
315    
316  ----------------------------------------------------------------------  ----------------------------------------------------------------------
317  Name: Allen Leung  Name: Allen Leung

Legend:
Removed from v.959  
changed lines
  Added in v.1015

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