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 921, Tue Sep 11 23:20:45 2001 UTC revision 1009, Wed Jan 9 19:44:22 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: Lal George
16    Date: 2001/01/09 14:31:35 EST 2002
17    Tag: george-20011206-rm-native-copy
18    Description:
19    
20            Removed the native COPY and FCOPY instructions
21            from all the architectures and replaced it with the
22            explicit COPY instruction from the previous commit.
23    
24            It is now possible to simplify many of the optimizations
25            modules that manipulate copies. This has not been
26            done in this change.
27    
28    ----------------------------------------------------------------------
29    Name: Lal George
30    Date: 2001/12/06 16:50:13 EST 2001
31    Tag: george-20011206-mlrisc-instruction
32    Description:
33    
34    Changed the representation of instructions from being fully abstract
35    to being partially concrete. That is to say:
36    
37      from
38            type instruction
39    
40      to
41            type instr                              (* machine instruction *)
42    
43            datatype instruction =
44                LIVE of {regs: C.cellset, spilled: C.cellset}
45              | KILL of {regs: C.cellset, spilled: C.cellset}
46              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
47              | ANNOTATION of {i: instruction, a: Annotations.annotation}
48              | INSTR of instr
49    
50    This makes the handling of certain special instructions that appear on
51    all architectures easier and uniform.
52    
53    LIVE and KILL say that a list of registers are live or killed at the
54    program point where they appear. No spill code is generated when an
55    element of the 'regs' field is spilled, but the register is moved to
56    the 'spilled' (which is present, more for debugging than anything else).
57    
58    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
59    We used to generate:
60    
61            DEFFREG f1
62            f1 := f2 + f3
63            trapb
64    
65    but now generate:
66    
67            f1 := f2 + f3
68            trapb
69            LIVE {regs=[f1,f2,f3], spilled=[]}
70    
71    Furthermore, the DEFFREG (hack) required that all floating point instruction
72    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
73    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
74    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
75    this architecture).
76    
77    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
78    all the architectures. This will result in further simplification of the
79    register allocator that must be aware of them for coalescing purposes, and
80    will also simplify certain aspects of the machine description that provides
81    callbacks related to parallel copies.
82    
83    ANNOTATION should be obvious, and now INSTR represents the honest to God
84    machine instruction set!
85    
86    The <arch>/instructions/<arch>Instr.sml files define certain utility
87    functions for making porting easier -- essentially converting upper case
88    to lower case. All machine instructions (of type instr) are in upper case,
89    and the lower case form generates an MLRISC instruction. For example on
90    the alpha we have:
91    
92      datatype instr =
93         LDA of {r:cell, b:cell, d:operand}
94       | ...
95    
96      val lda : {r:cell, b:cell, d:operand} -> instruction
97        ...
98    
99    where lda is just (INSTR o LDA), etc.
100    
101    ----------------------------------------------------------------------
102    Name: Matthias Blume
103    Date: 2001/11/22 21:40:00 EST
104    Tag: Release_110_37
105    Description:
106    
107    Release 110.37.  This time for real.
108    
109    ----------------------------------------------------------------------
110    Name: Matthias Blume
111    Date: 2001/11/21 16:35:00 EST
112    Tag: blume-20011121-foot-in-mouth
113    Description:
114    
115    Removed the "Release_110_37" tag because of a serious bug.
116    This will be re-tagged once the bug is fixed.
117    
118    ----------------------------------------------------------------------
119    Name: Matthias Blume
120    Date: 2001/11/21 16:14:00 EST
121    Tag: blume-20011121-forgottenfile
122    Description:
123    
124    Forgot to add a file.  (Just a .tex-file -- part of
125    the CM manual source.)
126    
127    ----------------------------------------------------------------------
128    Name: Matthias Blume
129    Date: 2001/11/21 16:10:00 EST
130    Tag: blume-20011121-invalid_110_37
131    Description:
132    
133    Note: I removed the original tag "Release_110_37" from this commit
134          because we found a serious bug in all non-x86 backends.
135          - Matthias
136    
137    1. Modifications to the SML/NJ code generator and to the runtime system
138       so that code object name strings are directly inserted into code
139       objects at code generation time.  The only business the runtime system
140       has with this is now to read the name strings on occasions.
141       (The encoding of the name string has also changed somewhat.)
142    
143    2. CM now implements a simple "set calculus" for specifying export lists.
144       In particular, it is now possible to refer to the export lists of
145       other libraries/groups/sources and form unions as well as differences.
146       See the latest CM manual for details.
147    
148    3. An separate notion of "proxy" libraries has again be eliminated from
149       CM's model.  (Proxy libraries are now simply a special case of using
150       the export list calculus.)
151    
152    4. Some of the existing libraries now take advantage of the new set
153       calculus.
154       (Notice that not all libraries have been converted because some
155       of the existing .cm-files are supposed to be backward compatible
156       with 110.0.x.)
157    
158    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
159       "General.exnMessage"!  The former relies on a certain hook to be
160       initialized, and that often does not happen in the stand-alone case.)
161    
162    ----------------------------------------------------------------------
163    Name: Lal George
164    Date: 2001/11/21  13:56:18 EST
165    Tag: george-2001121-pseudo-ops
166    Description:
167    
168      Implemented a complete redesign of MLRISC pseudo-ops. Now there
169      ought to never be any question of incompatabilities with
170      pseudo-op syntax expected by host assemblers.
171    
172      For now, only modules supporting GAS syntax are implemented
173      but more should follow, such as MASM, and vendor assembler
174      syntax, e.g. IBM as, Sun as, etc.
175    
176    ----------------------------------------------------------------------
177    Name: Matthias Blume
178    Date: 2001/11/14 11:52:00 EST
179    Tag: blume-20011114-srcname
180    Description:
181    
182    1. Routed the name of the current source file to mlriscgen where it
183       should be directly emitted into the code object.  (This last part
184       is yet to be done.)
185    
186    2. Some cleanup of the pgraph code to make it match the proposal that
187       I put out the other day.  (The proposal notwithstanding, things are
188       still in flux here.)
189    
190    ----------------------------------------------------------------------
191    Name: Lal George
192    Date: 2001/11/14 09:44:04 EST
193    Tag:
194    Description:
195    
196      Fix for a backpatching bug reported by Allen.
197    
198      Because the boundary between short and long span-dependent
199      instructions is +/- 128, there are an astounding number of
200      span-dependent instructions whose size is over estimated.
201    
202      Allen came up with the idea of letting the size of span
203      dependent instructions be non-monotonic, for a maxIter
204      number of times, after which the size must be monotonically
205      increasing.
206    
207      This table shows the number of span-dependent instructions
208      whose size was over-estimated as a function of maxIter, for the
209      file Parse/parse/ml.grm.sml:
210    
211         maxIter            # of instructions:
212            10                      687
213            20                      438
214            30                      198
215            40                        0
216    
217      In compiling the compiler, there is no significant difference in
218      compilation speed between maxIter=10 and maxIter=40. Actually,
219      my measurements showed that maxIter=40 was a tad faster than
220      maxIter=10! Also 96% of the  files in the compiler reach a fix
221      point within 13 iterations, so fixing maxIter at 40, while high,
222      is okay.
223    
224    ----------------------------------------------------------------------
225    Name: Matthias Blume
226    Date: 2001/10/31 15:25:00 EST
227    Tag: blume-20011031-pgraph
228    Description:
229    
230    CKIT:
231    * Changed the "Function" constructor of type Ast.ctype to carry optional
232      argument identifiers.
233    * Changed the return type of TypeUtil.getFunction accordingly.
234    * Type equality ignores the argument names.
235    * TypeUtil.composite tries to preserve argument names but gives up quickly
236      if there is a mismatch.
237    
238    installation script:
239    * attempts to use "curl" if available (unless "wget" is available as well)
240    
241    CM:
242    * has an experimental implementation of "portable graphs" which I will
243      soon propose as an implementation-independent library format
244    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
245    
246    NLFFI-LIB:
247    * some cleanup (all cosmetic)
248    
249    NLFFIGEN:
250    * temporarily disabled the mechanism that suppresses ML output for
251      C definitions whose identifiers start with an underscore character
252    * generate val bindings for enum constants
253    * user can request that only one style (light or heavy) is being used;
254      default is to use both (command-line arguments: -heavy and -light)
255    * fixed bug in handling of function types involving incomplete pointers
256    * generate ML entry points that take record arguments (i.e., using
257      named arguments) for C functions that have a prototype with named
258      arguments
259      (see changes to CKIT)
260    
261    ----------------------------------------------------------------------
262    Name: Allen Leung
263    Date: 2001/10/27 20:34:00 EDT
264    Tag: leunga-20011027-x86-fast-fp-call
265    Description:
266    
267       Fixed the bug described in blume-20010920-slowfp.
268    
269       The fix involves
270          1. generating FCOPYs in FSTP in ia32-svid
271          2. marking a CALL with the appropriate annotation
272    
273    ----------------------------------------------------------------------
274    Name: Matthias Blume
275    Date: 2001/10/16 11:32:00 EDT
276    Tag: blume-20011016-netbsd
277    Description:
278    
279    Underscore patch from Chris Richards (fixing problem with compiling
280    runtime system under recent NetBSD).
281    
282    ----------------------------------------------------------------------
283    Name: Allen Leung
284    Date: 2001/10/12 17:18:32 EDT 2001
285    Tag: leung-20011012-x86-printflowgraph
286    Description:
287    
288    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
289    
290    ----------------------------------------------------------------------
291    Name: Lal George
292    Date: 2001/10/11 23:51:34 EDT
293    Tag: george-20011011-too-many-instrs
294    Description:
295    
296    The representation of a program point never expected to see more
297    than 65536 instructions in a basic block!
298    
299    ----------------------------------------------------------------------
300    Name: Lal George
301    Date: 2001/10/09 09:41:37 EDT
302    Tag: george-20011008-mlrisc-labels
303    Description:
304    
305    Changed the machine description files to support printing of
306    local and global labels in assembly code, based on host assembler
307    conventions.
308    
309    ----------------------------------------------------------------------
310    Name: Matthias Blume
311    Date: 2001/09/25 15:25:00 EDT
312    Tag: blume-20010925-exninfo
313    Description:
314    
315    I provided a non-hook implementation of exnName (at the toplevel) and
316    made the "dummy" implementation of exnMessage (at the toplevel) more
317    useful: if nothing gets "hooked in", then at least you are going to
318    see the exception name and a message indicating why you don't see more.
319    
320    [For the time being, programs that need exnMessage and want to use
321    ml-build should either use General.exnMessage (strongly recommended) or
322    refer to structure General at some other point so that CM sees a
323    static dependency.]
324    
325    [Similar remarks go for "print" and "use":  If you want to use their
326    functionality in stand-alone programs generated by ml-build, then use
327    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
328    
329    ----------------------------------------------------------------------
330    Name: Matthias Blume
331    Date: 2001/09/20 17:28:00 EDT
332    Tag: blume-20010920-slowfp
333    Description:
334    
335    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
336    
337    ----------------------------------------------------------------------
338    Name: Matthias Blume
339    Date: 2001/09/20 17:20:00 EDT
340    Tag: blume-20010920-canonicalpaths
341    Description:
342    
343    0. Updated the BOOT file (something that I forgot to do earlier).
344    
345    1. Small internal change to CM so that it avoids "/../" in filenames
346       as much as possible (but only where it is safe).
347    
348    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
349       that arguments that contain delimiters are passed through correctly.
350       This change also means that all "special" arguments of the form
351       @SMLxxx... must come first.
352    
353    3. Changed install script to put relative anchor names for tool commands
354       into pathconfig.
355    
356    ----------------------------------------------------------------------
357    Name: Matthias Blume
358    >>>>>>> 1.169
359    Date: 2001/09/18 15:35:00 EDT
360    Tag: blume-20010918-readme11036
361    Description:
362    
363    Added README files.
364    
365    ----------------------------------------------------------------------
366    Name: Matthias Blume
367    Date: 2001/09/18 11:45:00 EDT
368    Tag: Release_110_36 (retag)
369    Description:
370    
371    Fixed mistake in config/preloads. Retagged as 110.36.
372    
373    ----------------------------------------------------------------------
374    Name: Matthias Blume
375    Date: 2001/09/18 09:40:00 EDT
376    Tag: Release_110_36_orig (tag changed)
377    Description:
378    
379    New version (110.36).  New bootfiles.
380    
381    ----------------------------------------------------------------------
382    Name: Matthias Blume
383    Date: 2001/09/14 16:15:00 EDT
384    Tag: blume-20010914-x86fastfp
385    Description:
386    
387    John committed some changes that Allen made, in particular a (hopefully)
388    correctly working version of the x86-fp module.
389    
390    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
391    flag to "true".  Everything seems to compile to a fixpoint ok, and
392    "mandelbrot" speeds up by about 15%.
393    
394    ----------------------------------------------------------------------
395    Name: Matthias Blume
396    Date: 2001/09/13 11:20:00 EDT
397    Tag: blume-20010913-minimal
398    Description:
399    
400    1. Stefan Monnier's patch to fix a miscompilation problem that
401       was brought to light by John Reppy's work on Moby.
402    
403    2. Implemented a minimal "structure Compiler" that contains just
404       "version" and "architecture".  The minimal version will be
405       available when the full version is not.  This is for backward-
406       compatibility with code that wants to test Compiler.version.
407    
408  ----------------------------------------------------------------------  ----------------------------------------------------------------------
409  Name: Matthias Blume  Name: Matthias Blume

Legend:
Removed from v.921  
changed lines
  Added in v.1009

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