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 1124, Thu Mar 7 19:49:22 2002 UTC revision 1138, Wed Mar 13 03:03:50 2002 UTC
# Line 11  Line 11 
11  Date: yyyy/mm/dd  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/03/12 22:03:00 EST
17    Tag: blume-20020312-url
18    Description:
19    
20    Forgot to update BOOT and srcarchiveurl.
21    
22    ----------------------------------------------------------------------
23    Name: Matthias Blume
24    Date: 2002/03/12 17:30:00 EST
25    Tag: blume-20020312-version110392
26    Description:
27    
28    Yet another version number bump (because of small changes to the
29    binfile format).  Version number is now 110.39.2.  NEW BOOTFILES!
30    
31    Changes:
32    
33      The new pid generation scheme described a few weeks ago was overly
34      complicated.  I implemented a new mechanism that is simpler and
35      provides a bit more "stability":  Once CM has seen a compilation
36      unit, it keeps its identity constant (as long as you do not delete
37      those crucial CM/GUID/* files).  This means that when you change
38      and interface, compiler, then go back to the old interface, and
39      compile again, you arrive at the original pid.
40    
41      There now also is a mechanism that instructs CM to use the plain
42      environment hash as a module's pid (effectively making its GUID
43      the empty string).  For this, "noguid" must be specified as an
44      option to the .sml file in question within its .cm file.
45      This is most useful for code that is being generated by tools such
46      as ml-nlffigen (because during development programmers tend to
47      erase the tool's entire output directory tree including CM's cached
48      GUIDs).  "noguid" is somewhat dangerous (since it can be used to locally
49      revert to the old, broken behavior of SML/NJ, but in specific cases
50      where there is no danger of interface confusion, its use is ok
51      (I think).
52    
53      ml-nlffigen by default generates "noguid" annotations.  They can be
54      turned off by specifying -guid in its command line.
55    
56    ----------------------------------------------------------------------
57    Name: Lal George
58    Date: 2002/03/12 12 14:42:36 EST
59    Tag: george-20020312-frequency-computation
60    Description:
61    
62    Integrated jump chaining and static block frequency into the
63    compiler. More details and numbers later.
64    
65    ----------------------------------------------------------------------
66    Name: Lal George
67    Date: 2002/03/11 11 22:38:53 EST
68    Tag: george-20020311-jump-chain-elim
69    Description:
70    
71    Tested the jump chain elimination on all architectures (except the
72    hppa).  This is on by default right now and is profitable for the
73    alpha and x86, however, it may not be profitable for the sparc and ppc
74    when compiling the compiler.
75    
76    The gc test will typically jump to a label at the end of the cluster,
77    where there is another jump to an external cluster containing the actual
78    code to invoke gc. This is to allow factoring of common gc invocation
79    sequences. That is to say, we generate:
80    
81            f:
82               testgc
83               ja   L1      % jump if above to L1
84    
85            L1:
86               jmp L2
87    
88    
89    After jump chain elimination the 'ja L1' instructions is converted to
90    'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end
91    up being implemented in their long form (if L2 is far away) using:
92    
93            jbe     L3      % jump if below or equal to L3
94            jmp     L2
95         L3:
96            ...
97    
98    
99    For large compilation units L2  may be far away.
100    
101    
102    ----------------------------------------------------------------------
103    Name: Matthias Blume
104    Date: 2002/03/11 13:30:00 EST
105    Tag: blume-20020311-mltreeeval
106    Description:
107    
108    A functor parameter was missing.
109    
110    ----------------------------------------------------------------------
111    Name: Allen Leung
112    Date: 2002/03/11 10:30:00 EST
113    Tag: leunga-20020310-runtime-string0
114    Description:
115    
116       The representation of the empty string now points to a
117    legal null terminated C string instead of unit.  It is now possible
118    to convert an ML string into C string with InlineT.CharVector.getData.
119    This compiles into one single machine instruction.
120    
121    ----------------------------------------------------------------------
122    Name: Allen Leung
123    Date: 2002/03/10 23:55:00 EST
124    Tag: leunga-20020310-x86-call
125    Description:
126    
127       Added machine generation for CALL instruction (relative displacement mode)
128    
129    ----------------------------------------------------------------------
130    Name: Matthias Blume
131    Date: 2002/03/08 16:05:00
132    Tag: blume-20020308-entrypoints
133    Description:
134    
135    Version number bumped to 110.39.1.  NEW BOOTFILES!
136    
137    Entrypoints: non-zero offset into a code object where execution should begin.
138    
139    - Added the notion of an entrypoint to CodeObj.
140    - Added reading/writing of entrypoint info to Binfile.
141    - Made runtime system bootloader aware of entrypoints.
142    - Use the address of the label of the first function given to mlriscGen
143      as the entrypoint.  This address is currently always 0, but it will
144      not be 0 once we turn on block placement.
145    - Removed the linkage cluster code (which was The Other Way(tm) of dealing
146      with entry points) from mlriscGen.
147    
148    ----------------------------------------------------------------------
149    Name: Allen Leung
150    Date: 2002/03/07 20:45:00 EST
151    Tag: leunga-20020307-x86-cmov
152    Description:
153    
154       Bug fixes for CMOVcc on x86.
155    
156       1. Added machine code generation for CMOVcc
157       2. CMOVcc is now generated in preference over SETcc on PentiumPro or above.
158       3. CMOVcc cannot have an immediate operand as argument.
159    
160    ----------------------------------------------------------------------
161    Name: Matthias Blume
162    Date: 2002/03/07 16:15:00 EST
163    Tag: blume-20020307-controls
164    Description:
165    
166    This is a very large but mostly boring patch which makes (almost)
167    every tuneable compiler knob (i.e., pretty much everything under
168    Control.* plus a few other things) configurable via both the command
169    line and environment variables in the style CM did its configuration
170    until now.
171    
172    Try starting sml with '-h' (or, if you are brave, '-H')
173    
174    To this end, I added a structure Controls : CONTROLS to smlnj-lib.cm which
175    implements the underlying generic mechanism.
176    
177    The interface to some of the existing such facilities has changed somewhat.
178    For example, the MLRiscControl module now provides mkFoo instead of getFoo.
179    (The getFoo interface is still there for backward-compatibility, but its
180    use is deprecated.)
181    
182    The ml-build script passes -Cxxx=yyy command-line arguments through so
183    that one can now twiddle the compiler settings when using this "batch"
184    compiler.
185    
186    TODO items:
187    
188    We should go through and throw out all controls that are no longer
189    connected to anything.  Moreover, we should go through and provide
190    meaningful (and correct!) documentation strings for those controls
191    that still are connected.
192    
193    Currently, multiple calls to Controls.new are accepted (only the first
194    has any effect).  Eventually we should make sure that every control
195    is being made (via Controls.new) exactly once.  Future access can then
196    be done using Controls.acc.
197    
198    Finally, it would probably be a good idea to use the getter-setter
199    interface to controls rather than ref cells.  For the time being, both
200    styles are provided by the Controls module, but getter-setter pairs are
201    better if thread-safety is of any concern because they can be wrapped.
202    
203    *****************************************
204    
205    One bug fix: The function blockPlacement in three of the MLRISC
206    backpatch files used to be hard-wired to one of two possibilities at
207    link time (according to the value of the placementFlag).  But (I
208    think) it should rather sense the flag every time.
209    
210    *****************************************
211    
212    Other assorted changes (by other people who did not supply a HISTORY entry):
213    
214    1. the cross-module inliner now works much better (Monnier)
215    2. representation of weights, frequencies, and probabilities in MLRISC
216       changed in preparation of using those for weighted block placement
217       (Reppy, George)
218    
219  ----------------------------------------------------------------------  ----------------------------------------------------------------------
220  Name: Lal George  Name: Lal George

Legend:
Removed from v.1124  
changed lines
  Added in v.1138

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