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 1131, Mon Mar 11 15:20:52 2002 UTC revision 1158, Fri Mar 22 01:21:25 2002 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Allen Leung  Name: Allen Leung
17    Date: 2002/03/21 20:30:00 EST
18    Tag: leunga-20020321-cfg
19    Description:
20    
21      Fixed a potential problem in cfg edge splitting.
22    
23    ----------------------------------------------------------------------
24    Name: Allen Leung
25    Date: 2002/03/21 17:15:00 EST
26    Tag: leunga-20020321-x86-fp-cfg
27    Description:
28    
29      1. Recoded the buggy parts of x86-fp.
30    
31         a. All the block reordering code has been removed.
32            We now depend on the block placement phases to do this work.
33    
34         b. Critical edge splitting code has been simplified and moved into the
35            CFG modules, as where they belong.
36    
37         Both of these were quite buggy and complex.  The code is now much, much
38         simpler.
39    
40      2. X86 backend.
41    
42         a. Added instructions for 64-bit support.  Instruction selection for
43            64-bit has not been committed, however, since that
44            requires changes to MLTREE which haven't been approved by
45            Lal and John.
46    
47         b. Added support for FUCOMI and FUCOMIP when generating code for
48            PentiumPro and above.  We only generate these instructions in
49            the fast-fp mode.
50    
51         c. Added cases for JP and JNP in X86FreqProps.
52    
53      3. CFG
54    
55         CFG now has a bunch of methods for edge splitting and merging.
56    
57      4. Machine description.
58    
59         John's simplification of MLTREE_BASIS.fcond broke a few machine
60         description things:
61    
62         rtl-build.{sig,sml} and hppa.mdl fixed.
63    
64         NOTE: the machine description stuff in the repository is still broken.
65               Again, I can't put my fixes in because that involves
66               changes to MLTREE.
67    
68    ----------------------------------------------------------------------
69    Name: Matthias Blume
70    Date: 2002/03/20 15:55:00 EST
71    Tag: blume-20020320-kmp
72    Description:
73    
74    Implemented Knuth-Morris-Pratt string matching in PreString and used
75    it for String.isSubstring, Substring.isSubstring, and
76    Substring.position.
77    
78    (Might need some stress-testing.  Simple examples worked fine.)
79    
80    ----------------------------------------------------------------------
81    Name: Matthias Blume
82    Date: 2002/03/19 16:37:00 EST
83    Tag: blume-20020319-witnesses
84    Description:
85    
86    Added a structure C.W and functions convert/Ptr.convert to ml-nlffi-lib.
87    
88    This implements a generic mechanism for changing constness qualifiers
89    anywhere within big C types without resorting to outright "casts".
90    (So far, functions such as C.rw/C.ro or C.Ptr.rw/C.Ptr.ro only let you
91    modify the constness at the outermost level.)
92    The implementation of "convert" is based on the idea of "witness"
93    values -- values that are not used by the operation but whose types
94    "testify" to their applicability.  On the implementation side, "convert"
95    is simply a projection (returning its second curried argument).  With
96    cross-module inlining, it should not result in any machine code being
97    generated.
98    
99    ----------------------------------------------------------------------
100    Name: Matthias Blume
101    Date: 2002/03/15 16:40:00 EST
102    Tag: blume-20020315-basis
103    Description:
104    
105    Provided (preliminary?) implementations for
106    
107      {String,Substring}.{concatWith,isSuffix,isSubstring}
108    
109    and
110    
111      Substring.full
112    
113    Those are in the Basis spec but they were missing in SML/NJ.
114    
115    ----------------------------------------------------------------------
116    Name: Matthias Blume
117    Date: 2002/03/14 21:30:00 EST
118    Tag: blume-20020314-controls
119    Description:
120    
121    Controls:
122    ---------
123    
124    1. Factored out the recently-added Controls : CONTROLS stuff and put
125       it into its own library $/controls-lib.cm.  The source tree for
126       this is under src/smlnj-lib/Controls.
127    
128    2. Changed the names of types and functions in this interface, so they
129       make a bit more "sense":
130    
131          module -> registry
132          'a registry -> 'a group
133    
134    3. The interface now deals in ref cells only.  The getter/setter interface
135       is (mostly) gone.
136    
137    4. Added a function that lets one register an already-existing ref cell.
138    
139    5. Made the corresponding modifications to the rest of the code so that
140       everything compiles again.
141    
142    6. Changed the implementation of Controls.MLRISC back to something closer
143       to the original.  In particular, this module (and therefore MLRISC)
144       does not depend on Controls.  There now is some link-time code in
145       int-sys.sml that registers the MLRISC controls with the Controls
146       module.
147    
148    CM:
149    ---
150    
151      * One can now specify the lambda-split aggressiveness in init.cmi.
152    
153    ----------------------------------------------------------------------
154    Name: Allen Leung
155    Date: 2002/03/13 17:30:00 EST
156    Tag: leunga-20020313-x86-fp-unary
157    Description:
158    
159    Bug fix for:
160    
161    > leunga@weaselbane:~/Yale/tmp/sml-dist{21} bin/sml
162    > Standard ML of New Jersey v110.39.1 [FLINT v1.5], March 08, 2002
163    > - fun f(x,(y,z)) = Real.~ y;
164    > [autoloading]
165    > [autoloading done]
166    >       fchsl   (%eax), 184(%esp)
167    > Error: MLRisc bug: X86MCEmitter.emitInstr
168    >
169    > uncaught exception Error
170    >   raised at: ../MLRISC/control/mlriscErrormsg.sml:16.14-16.19
171    
172    The problem was that the code generator did not generate any fp registers
173    in this case, and the ra didn't know that it needed to run the X86FP phase to
174    translate the pseudo fp instruction.   This only happened with unary fp
175    operators in certain situations.
176    
177    ----------------------------------------------------------------------
178    Name: Matthias Blume
179    Date: 2002/03/13 14:00:00 EST
180    Tag: blume-20020313-overload-etc
181    Description:
182    
183    1. Added _overload as a synonym for overload for backward compatibility.
184       (Control.overloadKW must be true for either version to be accepted.)
185    
186    2. Fixed bug in install script that caused more things to be installed
187       than what was requested in config/targets.
188    
189    3. Made CM aware of the (_)overload construct so that autoloading
190       works.
191    
192    ----------------------------------------------------------------------
193    Name: Matthias Blume
194    Date: 2002/03/12 22:03:00 EST
195    Tag: blume-20020312-url
196    Description:
197    
198    Forgot to update BOOT and srcarchiveurl.
199    
200    ----------------------------------------------------------------------
201    Name: Matthias Blume
202    Date: 2002/03/12 17:30:00 EST
203    Tag: blume-20020312-version110392
204    Description:
205    
206    Yet another version number bump (because of small changes to the
207    binfile format).  Version number is now 110.39.2.  NEW BOOTFILES!
208    
209    Changes:
210    
211      The new pid generation scheme described a few weeks ago was overly
212      complicated.  I implemented a new mechanism that is simpler and
213      provides a bit more "stability":  Once CM has seen a compilation
214      unit, it keeps its identity constant (as long as you do not delete
215      those crucial CM/GUID/* files).  This means that when you change
216      an interface, compile, then go back to the old interface, and
217      compile again, you arrive at the original pid.
218    
219      There now also is a mechanism that instructs CM to use the plain
220      environment hash as a module's pid (effectively making its GUID
221      the empty string).  For this, "noguid" must be specified as an
222      option to the .sml file in question within its .cm file.
223      This is most useful for code that is being generated by tools such
224      as ml-nlffigen (because during development programmers tend to
225      erase the tool's entire output directory tree including CM's cached
226      GUIDs).  "noguid" is somewhat dangerous (since it can be used to locally
227      revert to the old, broken behavior of SML/NJ, but in specific cases
228      where there is no danger of interface confusion, its use is ok
229      (I think).
230    
231      ml-nlffigen by default generates "noguid" annotations.  They can be
232      turned off by specifying -guid in its command line.
233    
234    ----------------------------------------------------------------------
235    Name: Lal George
236    Date: 2002/03/12 12 14:42:36 EST
237    Tag: george-20020312-frequency-computation
238    Description:
239    
240    Integrated jump chaining and static block frequency into the
241    compiler. More details and numbers later.
242    
243    ----------------------------------------------------------------------
244    Name: Lal George
245    Date: 2002/03/11 11 22:38:53 EST
246    Tag: george-20020311-jump-chain-elim
247    Description:
248    
249    Tested the jump chain elimination on all architectures (except the
250    hppa).  This is on by default right now and is profitable for the
251    alpha and x86, however, it may not be profitable for the sparc and ppc
252    when compiling the compiler.
253    
254    The gc test will typically jump to a label at the end of the cluster,
255    where there is another jump to an external cluster containing the actual
256    code to invoke gc. This is to allow factoring of common gc invocation
257    sequences. That is to say, we generate:
258    
259            f:
260               testgc
261               ja   L1      % jump if above to L1
262    
263            L1:
264               jmp L2
265    
266    
267    After jump chain elimination the 'ja L1' instructions is converted to
268    'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end
269    up being implemented in their long form (if L2 is far away) using:
270    
271            jbe     L3      % jump if below or equal to L3
272            jmp     L2
273         L3:
274            ...
275    
276    
277    For large compilation units L2  may be far away.
278    
279    
280    ----------------------------------------------------------------------
281    Name: Matthias Blume
282    Date: 2002/03/11 13:30:00 EST
283    Tag: blume-20020311-mltreeeval
284    Description:
285    
286    A functor parameter was missing.
287    
288    ----------------------------------------------------------------------
289    Name: Allen Leung
290  Date: 2002/03/11 10:30:00 EST  Date: 2002/03/11 10:30:00 EST
291  Tag: leunga-20020310-runtime-string0  Tag: leunga-20020311-runtime-string0
292  Description:  Description:
293    
294     The representation of the empty string now points to a     The representation of the empty string now points to a

Legend:
Removed from v.1131  
changed lines
  Added in v.1158

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