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 1096, Tue Feb 26 16:59:02 2002 UTC revision 1128, Fri Mar 8 21:05:27 2002 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/03/08 16:05:00
18    Tag: blume-20020308-entrypoints
19    Description:
20    
21    Version number bumped to 110.39.1.  NEW BOOTFILES!
22    
23    Entrypoints: non-zero offset into a code object where execution should begin.
24    
25    - Added the notion of an entrypoint to CodeObj.
26    - Added reading/writing of entrypoint info to Binfile.
27    - Made runtime system bootloader aware of entrypoints.
28    - Use the address of the label of the first function given to mlriscGen
29      as the entrypoint.  This address is currently always 0, but it will
30      not be 0 once we turn on block placement.
31    - Removed the linkage cluster code (which was The Other Way(tm) of dealing
32      with entry points) from mlriscGen.
33    
34    ----------------------------------------------------------------------
35    Name: Allen Leung
36    Date: 2002/03/07 20:45:00 EST
37    Tag: leunga-20020307-x86-cmov
38    Description:
39    
40       Bug fixes for CMOVcc on x86.
41    
42       1. Added machine code generation for CMOVcc
43       2. CMOVcc is now generated in preference over SETcc on PentiumPro or above.
44       3. CMOVcc cannot have an immediate operand as argument.
45    
46    ----------------------------------------------------------------------
47    Name: Matthias Blume
48    Date: 2002/03/07 16:15:00 EST
49    Tag: blume-20020307-controls
50    Description:
51    
52    This is a very large but mostly boring patch which makes (almost)
53    every tuneable compiler knob (i.e., pretty much everything under
54    Control.* plus a few other things) configurable via both the command
55    line and environment variables in the style CM did its configuration
56    until now.
57    
58    Try starting sml with '-h' (or, if you are brave, '-H')
59    
60    To this end, I added a structure Controls : CONTROLS to smlnj-lib.cm which
61    implements the underlying generic mechanism.
62    
63    The interface to some of the existing such facilities has changed somewhat.
64    For example, the MLRiscControl module now provides mkFoo instead of getFoo.
65    (The getFoo interface is still there for backward-compatibility, but its
66    use is deprecated.)
67    
68    The ml-build script passes -Cxxx=yyy command-line arguments through so
69    that one can now twiddle the compiler settings when using this "batch"
70    compiler.
71    
72    TODO items:
73    
74    We should go through and throw out all controls that are no longer
75    connected to anything.  Moreover, we should go through and provide
76    meaningful (and correct!) documentation strings for those controls
77    that still are connected.
78    
79    Currently, multiple calls to Controls.new are accepted (only the first
80    has any effect).  Eventually we should make sure that every control
81    is being made (via Controls.new) exactly once.  Future access can then
82    be done using Controls.acc.
83    
84    Finally, it would probably be a good idea to use the getter-setter
85    interface to controls rather than ref cells.  For the time being, both
86    styles are provided by the Controls module, but getter-setter pairs are
87    better if thread-safety is of any concern because they can be wrapped.
88    
89    *****************************************
90    
91    One bug fix: The function blockPlacement in three of the MLRISC
92    backpatch files used to be hard-wired to one of two possibilities at
93    link time (according to the value of the placementFlag).  But (I
94    think) it should rather sense the flag every time.
95    
96    *****************************************
97    
98    Other assorted changes (by other people who did not supply a HISTORY entry):
99    
100    1. the cross-module inliner now works much better (Monnier)
101    2. representation of weights, frequencies, and probabilities in MLRISC
102       changed in preparation of using those for weighted block placement
103       (Reppy, George)
104    
105    ----------------------------------------------------------------------
106    Name: Lal George
107    Date: 2002/03/07 14:44:24 EST 2002
108    Tag: george-20020307-weighted-block-placement
109    
110    Tested the weighted block placement optimization on all architectures
111    (except the hppa) using AMPL to generate the block and edge frequencies.
112    Changes were required in the machine properties to correctly
113    categorize trap instructions. There is an MLRISC flag
114    "weighted-block-placement" that can be used to enable weighted block
115    placement, but this will be ineffective without block/edge
116    frequencies (coming soon).
117    
118    
119    ----------------------------------------------------------------------
120    Name: Lal George
121    Date: 2002/03/05 17:24:48 EST
122    Tag: george-20020305-linkage-cluster
123    
124    In order to support the block placement optimization, a new cluster
125    is generated as the very first cluster (called the linkage cluster).
126    It contains a single jump to the 'real' entry point for the compilation
127    unit. Block placement has no effect on the linkage cluster itself, but
128    all the other clusters  have full freedom in the manner in which they
129    reorder blocks or functions.
130    
131    On the x86 the typical linkage code that is generated is:
132       ----------------------
133            .align 2
134       L0:
135            addl    $L1-L0, 72(%esp)
136            jmp     L1
137    
138    
139            .align  2
140       L1:
141       ----------------------
142    
143    72(%esp) is the memory location for the stdlink register. This
144    must contain the address of the CPS function being called. In the
145    above example, it contains the address of  L0; before
146    calling L1 (the real entry point for the compilation unit), it
147    must contain the address for L1, and hence
148    
149            addl $L1-L0, 72(%esp)
150    
151    I have tested this on all architectures except the hppa.The increase
152    in code size is of course negligible
153    
154    ----------------------------------------------------------------------
155    Name: Allen Leung
156    Date: 2002/03/03 13:20:00 EST
157    Tag: leunga-20020303-mlrisc-tools
158    
159      Added #[ ... ] expressions to mlrisc tools
160    
161    ----------------------------------------------------------------------
162    Name: Matthias Blume
163    Date: 2002/02/27 12:29:00 EST
164    Tag: blume-20020227-cdebug
165    Description:
166    
167    - made types in structure C and C_Debug to be equal
168    - got rid of code duplication (c-int.sml vs. c-int-debug.sml)
169    - there no longer is a C_Int_Debug (C_Debug is directly derived from C)
170    
171    ----------------------------------------------------------------------
172    Name: Matthias Blume
173  Date: 2002/02/26 12:00:00 EST  Date: 2002/02/26 12:00:00 EST
174  Tag: blume-20020226-ffi  Tag: blume-20020226-ffi
175  Description:  Description:
# Line 124  Line 280 
280         TOTAL                                   2375.26u  57.21s  48.00g         TOTAL                                   2375.26u  57.21s  48.00g
281    
282  As you can see the old cps spill module suffers from some serious  As you can see the old cps spill module suffers from some serious
283  performance problem but since I cannot decipher the old code fully,  performance problem.  But since I cannot decipher the old code fully,
284  innstead of patching the problems up, I'm reimplementing it  instead of patching the problems up, I'm reimplementing it
285  with a different algorithm.  The new code is more modular,  with a different algorithm.  The new code is more modular,
286  smaller when compiled, and substantially faster  smaller when compiled, and substantially faster
287  (O(n log n) time and O(n) space).  Timing of the new spill module:  (O(n log n) time and O(n) space).  Timing of the new spill module:

Legend:
Removed from v.1096  
changed lines
  Added in v.1128

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