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 1175, Mon Mar 25 03:38:44 2002 UTC revision 1211, Tue May 21 14:54:32 2002 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/05/21 10:55:00 EDT
18    Tag: blume-20020521-misc
19    Description:
20    
21    - John tweaked runtime to be silent on heap export (except when
22      GC messages are on).
23    - I added a few more things (cross-compiling versions of CMB) to
24      config/preloads (as suggestions).
25    
26    ----------------------------------------------------------------------
27    Name: Matthias Blume
28    Date: 2002/05/20 22:25:00 EDT
29    Tag: blume-20020520-controls
30    Description:
31    
32    - Added ControlUtil structure to control-lib.cm.
33    - Use it throughout.
34    - Used Controls facility to define MLRISC controls (as opposed to
35      registering MLRISC control ref cells with Controls after the fact)
36    - Fixed messed-up controls priorities.
37    
38    * Removed again all the stuff from config/preloads that one wouldn't
39      be able to preload at the time the initial heap image is built.
40      (Many libraries, e.g., CML, do not exist yet at this time.  The
41       only libraries that can be preloaded via config/preloads are those
42       that come bundled with the bootfiles.)
43    
44    ----------------------------------------------------------------------
45    Name: Matthias Blume
46    Date: 2002/05/20 10:59:00 EDT
47    Tag: blume-20020520-preloads
48    Description:
49    
50    Added a lot of commented-out suggestions for things to be included
51    in config/preloads.
52    
53    ----------------------------------------------------------------------
54    Name: Allen Leung
55    Date: 2002/05/18 14:20:00 EDT
56    Tag: leunga-20020518-mdl
57    Description:
58    
59    o Made the mdl tool stuff compile and run again.
60    o I've disabled all the stuff that depends on RTL specifications; they
61      are all badly broken anyway.
62    
63    ----------------------------------------------------------------------
64    Name: Matthias Blume
65    Date: 2002/05/17 16:49:00 EDT
66    Tag: blume-20020517-controls
67    Description:
68    
69    0. John Reppy made several modifications to the SML/NJ library.
70       In particular, there is a shiny new controls-lib.cm.
71    
72    1. Pushed new controls interface through compiler so that everything
73       compiles again.
74    
75    2. Added FormatComb and FORMAT_COMB to the CML version of the
76       SML/NJ library (so that CML compiles again).
77    
78    3. Modified init scripts because XXX_DEFAULT environment variables
79       are no longer with us.  (Boot-time initialization is now done
80       using the same environment variables that are also used for
81       startup-time initialization of controls.)
82    
83    ----------------------------------------------------------------------
84    Name: Lal George
85    Date: 2002/05/15 09:20:10 EDT
86    Tag: george-20020515-pseudo-op-decls
87    Description:
88    
89            All pseudo-ops emitted before the first segment declaration
90    such as TEXT, DATA, and BSS directives are assumed to be global
91    declarations and are emitted first in the assembly file. This is
92    useful in a number of situations where one has pseudo-ops that are not
93    specific to any segment, and also works around the constraint that one
94    cannot have client pseudo-ops in the TEXT segment.
95    
96            Because no segment is associated with these declarations it is
97    an error to allocate any space or objects before the first segment
98    directive and an exception will be raised. However, we cannot make
99    this check for client pseudo-ops.
100    
101            These top level declarations are a field in the CFG graph_info.
102    In theory you can continue to add to this field after the CFG has been
103    built -- provided you know what you are doing;-)
104    
105    ----------------------------------------------------------------------
106    Name: Matthias Blume
107    Date: 2002/05/13 16:40:00 EDT
108    Tag: blume-20020513-pp-etc
109    Description:
110    
111    A few minor bugfixes:
112    
113      - Stopgap measure for bug recently reported by Elsa Gunter (ppDec).
114        (Bogus printouts for redefined bindings still occur.  Compiler
115        bug should no longer occur now.  We need to redo the prettyprinter
116        from scratch.)
117    
118      - CM pathname printer now also adds escape sequences for ( and )
119    
120      - commend and docu fixes for ml-nlffi
121    
122    ----------------------------------------------------------------------
123    Name: Matthias Blume
124    Date: 2002/05/10 16:40:00 EDT
125    Tag: blume-20020510-erg-textio
126    Description:
127    
128    Applied the following bugfix provided by Emden Gansner:
129    
130        Output is corrupted when outputSubstr is used rather than output.
131    
132        The problem occurs when a substring
133    
134            ss = (s, dataStart, dataLen)
135    
136        where dataStart > 0, fills a stream buffer with avail bytes left.
137        avail bytes of s, starting at index dataStart, are copied into the
138        buffer, the buffer is flushed, and then the remaining dataLen-avail
139        bytes of ss are copied into the beginning of the buffer. Instead of
140        starting this copy at index dataStart+avail in s, the current code
141        starts the copy at index avail.
142    
143        Fix:
144        In text-io-fn.sml, change line 695 from
145             val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0)
146        to
147             val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0)
148    
149    ----------------------------------------------------------------------
150    Name: Matthias Blume
151    Date: 2002/04/12 13:55:00 EDT
152    Tag: blume-20020412-assyntax
153    Description:
154    
155    1. Grabbed newer assyntax.h from the XFree86 project.
156    2. Fiddled with how to compile X86.prim.asm without warnings.
157    3. (Very) Minor cleanup in CM.
158    
159    ----------------------------------------------------------------------
160    Name: Matthias Blume
161    Date: 2002/04/01 (no joke!) 17:07:00 EST
162    Tag: blume-20020401-x86div
163    Description:
164    
165    Added full support for div/mod/rem/quot on the x86, using the machine
166    instruction's two results (without clumsily recomputing the remainder)
167    directly where appropriate.
168    
169    Some more extensive power-of-two support was added to the x86 instruction
170    selector (avoiding expensive divs, mods, and muls where they can be
171    replaced with cheaper shifts and masks).  However, this sort of thing
172    ought to be done earlier, e.g., within the CPS optimizer so that
173    all architectures benefit from it.
174    
175    The compiler compiles to a fixed point, but changes might be somewhat
176    fragile nevertheless.  Please, report any strange things that you might
177    see wrt. div/mod/quot/rem...
178    
179    ----------------------------------------------------------------------
180    Name: Matthias Blume
181    Date: 2002/03/29 17:22:00
182    Tag: blume-20020329-div
183    Description:
184    
185    Fixed my broken div/mod logic.  Unfortunately, this means that the
186    inline code for div/mod now has one more comparison than before.
187    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
188    The problem was with quotient = 0, because that alone does not tell
189    us which way the rounding went.  One then has to look at whether
190    remainder and divisor have the same sign...  :(
191    
192    Anyway, I replaced the bootfiles with fresh ones...
193    
194    ----------------------------------------------------------------------
195    Name: Matthias Blume
196    Date: 2002/03/29 14:10:00 EST
197    Tag: blume-20020329-inlprims
198    Description:
199    
200    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
201    
202    Primops have changed. This means that the bin/boot-file formats have
203    changed as well.
204    
205    To make sure that there is no confusion, I made a new version.
206    
207    
208    CHANGES:
209    
210    * removed REMT from mltree (remainder should never overflow).
211    
212    * added primops to deal with divisions of all flavors to the frontend
213    
214    * handled these primops all the way through so they map to their respective
215      MLRISC support
216    
217    * used these primops in the implementation of Int, Int32, Word, Word32
218    
219    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
220    
221    * parameterized INLMIN, INLMAX, and INLABS by a numkind
222    
223    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
224      floating point
225    
226    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
227      and Real (but Real.abs maps to a separate floating-point-only primop)
228    
229    
230    TODO items:
231    
232    * Hacked Alpha32 instruction selection, disabling the selection of REMx
233      instructions because the machine instruction encoder cannot handle
234      them.  (Hppa, PPC, and Sparc instruction selection did not handle
235      REM in the first place, and REM is supported by the x86 machine coder.)
236    
237    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
238      selection phase.  (The two can be streamlined because the hardware
239      delivers both quotient and remainder at the same time anyway.)
240    
241    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
242      (Currently the behavior is inconsistent both across architectures and
243      wrt. the draft Basis spec.)
244    
245    * Word8 should eventually be handled natively, too.
246    
247    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
248      as if there currently is no execution path that could trigger it in
249      SML/NJ.  (The assumptions underlying functions arith and promotable do not
250      hold for things like multiplication and division.)
251    
252    ----------------------------------------------------------------------
253    Name: Matthias Blume
254    Date: 2002/03/27 16:27:00 EST
255    Tag: blume-20020327-mlrisc-divisions
256    Description:
257    
258    Added support for all four division operations (ML's div, mod, quot,
259    and rem) to MLRISC.  In the course of doing so, I also rationalized
260    the naming (no more annoying switch-around of DIV and QUOT), by
261    parameterizing the operation by div_rounding_mode (which can be either
262    DIV_TO_ZERO or DIV_TO_NEGINF).
263    
264    The generic MLTreeGen functor takes care of compiling all four
265    operations down to only round-to-zero div.
266    
267    Missing pieces:
268    
269      * Doing something smarter than relying on MLTreeGen on architectures
270        like, e.g., the x86 where hardware division delivers both quotient and
271        remainder at the same time.  With this, the implementation of the
272        round-to-neginf operations could be further streamlined.
273    
274      * Remove inlining support for div/mod/rem from the frontend and replace it
275        with primops that get carried through to the backend.  Do this for all
276        int and word types.
277    
278    ----------------------------------------------------------------------
279    Name: Matthias Blume
280    Date: 2002/03/25 17:25:00 EST
281    Tag: blume-20020325-divmod
282    Description:
283    
284    I improved (hopefully without breaking them) the implementation of Int.div,
285    Int.mod, and Int.rem.   For this, the code in translate.sml now takes
286    advantage of the following observations:
287    
288      Let  q = x quot y      r = x rem y
289           d = x div  y      m = x mod y
290    
291    where "quot" is the round-to-zero version of integer division that
292    hardware usually provides.  Then we have:
293    
294         r = x - q * y        where neither the * nor the - will overflow
295         d = if q >= 0 orelse x = q * y then q else q - 1
296                              where neither the * nor the - will overflow
297         m = if q >= 0 orelse r = 0 then r else r + y
298                              where the + will not overflow
299    
300    This results in substantial simplification of the generated code.
301    The following table shows the number of CFG nodes and edges generated
302    for
303            fun f (x, y) = x OPER y
304            (* with OPER \in div, mod, quot, rem *)
305    
306    
307        OPER | nodes(old) | edges(old) | nodes(new) | edges(new)
308        --------------------------------------------------------
309         div |         24 |         39 |         12 |         16
310         mod |         41 |         71 |         12 |         16
311        quot |          8 |         10 |          8 |         10
312         rem |         10 |         14 |          8 |         10
313    
314    
315    ----------------------------------------------------------------------
316    Name: Matthias Blume
317    Date: 2002/03/25 22:06:00 EST
318    Tag: blume-20020325-cprotobug
319    Description:
320    
321    Fixed a bug in cproto (c prototype decoder).
322    
323    ----------------------------------------------------------------------
324    Name: Matthias Blume
325    Date: 2002/03/25 16:00:00 EST
326    Tag: blume-20020325-raw-primops
327    Description:
328    
329    I did some cleanup to Allen's new primop code and
330    replaced yesterday's bootfiles with new ones.
331    (But they are stored in the same place.)
332    
333    ----------------------------------------------------------------------
334    Name: Matthias Blume
335  Date: 2002/03/24 22:40:00 EST  Date: 2002/03/24 22:40:00 EST
336  Tag: blume-20020324-bootfiles  Tag: blume-20020324-bootfiles
337  Description:  Description:

Legend:
Removed from v.1175  
changed lines
  Added in v.1211

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