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 1178, Mon Mar 25 20:51:48 2002 UTC revision 1273, Thu Oct 10 17:13:35 2002 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/10/10 13:10:00 EDT
18    Tag: blume-20021010-ppc-divs
19    Description:
20    
21    The mltree operator DIVS must be implemented with an overflow check on
22    the PPC because the hardware indicates divide-by-zero using "overflow" as
23    well.
24    
25    ----------------------------------------------------------------------
26    Name: Matthias Blume
27    Date: 2002/07/23 11:45:00
28    Tag: blume-20020723-smlnj-home
29    Description:
30    
31    Sml now senses the SMLNJ_HOME environment variable.  If this is set,
32    then the bin dir is assumed to be in $SMLNJ_HOME/bin and (unless
33    CM_PATHCONFIG is also set), the path configuration file is assumed
34    to be in $SMLNJ_HOME/lib/pathconfig.  This way one can easily move
35    the entire tree to some other place and everything will "just work".
36    
37    (Companion commands such as ml-build and ml-makedepend also sense this
38    variable.)
39    
40    ----------------------------------------------------------------------
41    Name: Matthias Blume
42    Date: 2002/07/12 21:19:00 EDT
43    Tag: blume-20020712-liveness
44    Description:
45    
46    Exported two useful "step" functions from liveness module (MLRISC).
47    
48    ----------------------------------------------------------------------
49    Name: Matthias Blume
50    Date: 2002/07/05 16:00 EDT
51    Tag: Release_110_41
52    Description:
53    
54    New working release.  New bootfiles.
55    
56    ----------------------------------------------------------------------
57    Name: Matthias Blume
58    Date: 2002/07/05 10:25:00 EDT
59    Tag: blume-20020705-btimp
60    Description:
61    
62    Exported structure BTImp from $smlnj/viscomp/debugprof.cm so that
63    other clients can set up backtracing support.
64    
65    ----------------------------------------------------------------------
66    Name: Matthias Blume
67    Date: 2002/06/25 17:23:00 EDT
68    Tag: blume-20020625-fpmax
69    Description:
70    
71    Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point
72    case.  (The sense of the isNaN test was reversed -- which made min and
73    max always return their first argument.)
74    
75    ----------------------------------------------------------------------
76    Name: Matthias Blume
77    Date: 2002/06/11
78    Tag: blume-20020611-unixpath
79    Description:
80    
81    Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch.
82    
83    ----------------------------------------------------------------------
84    Name: Matthias Blume
85    Date: 2002/06/10 16:35:00 EDT
86    Tag: blume-20020610-ieeereal
87    Description:
88    
89    I back-ported my implementation of IEEEReal.fromString from the
90    idlbasis-devel branch so that we can test it.
91    
92    Another small change is that ppDec tries to give more information
93    than just "<sig>" in the case of functors.  However, this code is
94    broken in some mysterious way if the functor's body's signature
95    has not been declared by ascription but gets inferred from the
96    implementation.  This needs fixing...
97    
98    ----------------------------------------------------------------------
99    Name: Matthias Blume
100    Date: 2002/05/31
101    Tag: blume-20020531-btrace-mode
102    Description:
103    
104    Resurrected SMLofNJ.Internals.BTrace.mode.  (It accidentally fell by
105    the wayside when I switched over to using Controls everywhere.)
106    
107    ----------------------------------------------------------------------
108    Name: Lal George
109    Date: 2002/05/23 12:21:40 EDT
110    Tag: george-20020523-visual-labels
111    Description:
112    
113    Labels are now displayed in the graphical output to make
114    the fall-through and target blocks obvious.
115    
116    ----------------------------------------------------------------------
117    Name: Matthias Blume
118    Date: 2002/05/22 11:03:00 EDT
119    Tag: blume-20020522-shrink
120    Description:
121    
122    John tweaked yesterday's fix for 1131 to handle an out-of-memory
123    situation that comes up when allocating huge arrays.
124    
125    ----------------------------------------------------------------------
126    Name: Matthias Blume
127    Date: 2002/05/21 16:00:00 EDT
128    Tag: Release_110_40
129    Description:
130    
131    New working release (110.40).  New bootfiles.
132    
133    [Also: John Reppy fixed GC bug 1131.]
134    
135    ----------------------------------------------------------------------
136    Name: Matthias Blume
137    Date: 2002/05/21 12:35:00 EDT
138    Tag: blume-20020521-cmdoc
139    Description:
140    
141    CM documentation update.
142    
143    ----------------------------------------------------------------------
144    Name: Matthias Blume
145    Date: 2002/05/21 10:55:00 EDT
146    Tag: blume-20020521-misc
147    Description:
148    
149    - John tweaked runtime to be silent on heap export (except when
150      GC messages are on).
151    - I added a few more things (cross-compiling versions of CMB) to
152      config/preloads (as suggestions).
153    
154    ----------------------------------------------------------------------
155    Name: Matthias Blume
156    Date: 2002/05/20 22:25:00 EDT
157    Tag: blume-20020520-controls
158    Description:
159    
160    - Added ControlUtil structure to control-lib.cm.
161    - Use it throughout.
162    - Used Controls facility to define MLRISC controls (as opposed to
163      registering MLRISC control ref cells with Controls after the fact)
164    - Fixed messed-up controls priorities.
165    
166    * Removed again all the stuff from config/preloads that one wouldn't
167      be able to preload at the time the initial heap image is built.
168      (Many libraries, e.g., CML, do not exist yet at this time.  The
169       only libraries that can be preloaded via config/preloads are those
170       that come bundled with the bootfiles.)
171    
172    ----------------------------------------------------------------------
173    Name: Matthias Blume
174    Date: 2002/05/20 10:59:00 EDT
175    Tag: blume-20020520-preloads
176    Description:
177    
178    Added a lot of commented-out suggestions for things to be included
179    in config/preloads.
180    
181    ----------------------------------------------------------------------
182    Name: Allen Leung
183    Date: 2002/05/18 14:20:00 EDT
184    Tag: leunga-20020518-mdl
185    Description:
186    
187    o Made the mdl tool stuff compile and run again.
188    o I've disabled all the stuff that depends on RTL specifications; they
189      are all badly broken anyway.
190    
191    ----------------------------------------------------------------------
192    Name: Matthias Blume
193    Date: 2002/05/17 16:49:00 EDT
194    Tag: blume-20020517-controls
195    Description:
196    
197    0. John Reppy made several modifications to the SML/NJ library.
198       In particular, there is a shiny new controls-lib.cm.
199    
200    1. Pushed new controls interface through compiler so that everything
201       compiles again.
202    
203    2. Added FormatComb and FORMAT_COMB to the CML version of the
204       SML/NJ library (so that CML compiles again).
205    
206    3. Modified init scripts because XXX_DEFAULT environment variables
207       are no longer with us.  (Boot-time initialization is now done
208       using the same environment variables that are also used for
209       startup-time initialization of controls.)
210    
211    ----------------------------------------------------------------------
212    Name: Lal George
213    Date: 2002/05/15 09:20:10 EDT
214    Tag: george-20020515-pseudo-op-decls
215    Description:
216    
217            All pseudo-ops emitted before the first segment declaration
218    such as TEXT, DATA, and BSS directives are assumed to be global
219    declarations and are emitted first in the assembly file. This is
220    useful in a number of situations where one has pseudo-ops that are not
221    specific to any segment, and also works around the constraint that one
222    cannot have client pseudo-ops in the TEXT segment.
223    
224            Because no segment is associated with these declarations it is
225    an error to allocate any space or objects before the first segment
226    directive and an exception will be raised. However, we cannot make
227    this check for client pseudo-ops.
228    
229            These top level declarations are a field in the CFG graph_info.
230    In theory you can continue to add to this field after the CFG has been
231    built -- provided you know what you are doing;-)
232    
233    ----------------------------------------------------------------------
234    Name: Matthias Blume
235    Date: 2002/05/13 16:40:00 EDT
236    Tag: blume-20020513-pp-etc
237    Description:
238    
239    A few minor bugfixes:
240    
241      - Stopgap measure for bug recently reported by Elsa Gunter (ppDec).
242        (Bogus printouts for redefined bindings still occur.  Compiler
243        bug should no longer occur now.  We need to redo the prettyprinter
244        from scratch.)
245    
246      - CM pathname printer now also adds escape sequences for ( and )
247    
248      - commend and docu fixes for ml-nlffi
249    
250    ----------------------------------------------------------------------
251    Name: Matthias Blume
252    Date: 2002/05/10 16:40:00 EDT
253    Tag: blume-20020510-erg-textio
254    Description:
255    
256    Applied the following bugfix provided by Emden Gansner:
257    
258        Output is corrupted when outputSubstr is used rather than output.
259    
260        The problem occurs when a substring
261    
262            ss = (s, dataStart, dataLen)
263    
264        where dataStart > 0, fills a stream buffer with avail bytes left.
265        avail bytes of s, starting at index dataStart, are copied into the
266        buffer, the buffer is flushed, and then the remaining dataLen-avail
267        bytes of ss are copied into the beginning of the buffer. Instead of
268        starting this copy at index dataStart+avail in s, the current code
269        starts the copy at index avail.
270    
271        Fix:
272        In text-io-fn.sml, change line 695 from
273             val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0)
274        to
275             val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0)
276    
277    ----------------------------------------------------------------------
278    Name: Matthias Blume
279    Date: 2002/04/12 13:55:00 EDT
280    Tag: blume-20020412-assyntax
281    Description:
282    
283    1. Grabbed newer assyntax.h from the XFree86 project.
284    2. Fiddled with how to compile X86.prim.asm without warnings.
285    3. (Very) Minor cleanup in CM.
286    
287    ----------------------------------------------------------------------
288    Name: Matthias Blume
289    Date: 2002/04/01 (no joke!) 17:07:00 EST
290    Tag: blume-20020401-x86div
291    Description:
292    
293    Added full support for div/mod/rem/quot on the x86, using the machine
294    instruction's two results (without clumsily recomputing the remainder)
295    directly where appropriate.
296    
297    Some more extensive power-of-two support was added to the x86 instruction
298    selector (avoiding expensive divs, mods, and muls where they can be
299    replaced with cheaper shifts and masks).  However, this sort of thing
300    ought to be done earlier, e.g., within the CPS optimizer so that
301    all architectures benefit from it.
302    
303    The compiler compiles to a fixed point, but changes might be somewhat
304    fragile nevertheless.  Please, report any strange things that you might
305    see wrt. div/mod/quot/rem...
306    
307    ----------------------------------------------------------------------
308    Name: Matthias Blume
309    Date: 2002/03/29 17:22:00
310    Tag: blume-20020329-div
311    Description:
312    
313    Fixed my broken div/mod logic.  Unfortunately, this means that the
314    inline code for div/mod now has one more comparison than before.
315    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
316    The problem was with quotient = 0, because that alone does not tell
317    us which way the rounding went.  One then has to look at whether
318    remainder and divisor have the same sign...  :(
319    
320    Anyway, I replaced the bootfiles with fresh ones...
321    
322    ----------------------------------------------------------------------
323    Name: Matthias Blume
324    Date: 2002/03/29 14:10:00 EST
325    Tag: blume-20020329-inlprims
326    Description:
327    
328    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
329    
330    Primops have changed. This means that the bin/boot-file formats have
331    changed as well.
332    
333    To make sure that there is no confusion, I made a new version.
334    
335    
336    CHANGES:
337    
338    * removed REMT from mltree (remainder should never overflow).
339    
340    * added primops to deal with divisions of all flavors to the frontend
341    
342    * handled these primops all the way through so they map to their respective
343      MLRISC support
344    
345    * used these primops in the implementation of Int, Int32, Word, Word32
346    
347    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
348    
349    * parameterized INLMIN, INLMAX, and INLABS by a numkind
350    
351    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
352      floating point
353    
354    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
355      and Real (but Real.abs maps to a separate floating-point-only primop)
356    
357    
358    TODO items:
359    
360    * Hacked Alpha32 instruction selection, disabling the selection of REMx
361      instructions because the machine instruction encoder cannot handle
362      them.  (Hppa, PPC, and Sparc instruction selection did not handle
363      REM in the first place, and REM is supported by the x86 machine coder.)
364    
365    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
366      selection phase.  (The two can be streamlined because the hardware
367      delivers both quotient and remainder at the same time anyway.)
368    
369    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
370      (Currently the behavior is inconsistent both across architectures and
371      wrt. the draft Basis spec.)
372    
373    * Word8 should eventually be handled natively, too.
374    
375    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
376      as if there currently is no execution path that could trigger it in
377      SML/NJ.  (The assumptions underlying functions arith and promotable do not
378      hold for things like multiplication and division.)
379    
380    ----------------------------------------------------------------------
381    Name: Matthias Blume
382    Date: 2002/03/27 16:27:00 EST
383    Tag: blume-20020327-mlrisc-divisions
384    Description:
385    
386    Added support for all four division operations (ML's div, mod, quot,
387    and rem) to MLRISC.  In the course of doing so, I also rationalized
388    the naming (no more annoying switch-around of DIV and QUOT), by
389    parameterizing the operation by div_rounding_mode (which can be either
390    DIV_TO_ZERO or DIV_TO_NEGINF).
391    
392    The generic MLTreeGen functor takes care of compiling all four
393    operations down to only round-to-zero div.
394    
395    Missing pieces:
396    
397      * Doing something smarter than relying on MLTreeGen on architectures
398        like, e.g., the x86 where hardware division delivers both quotient and
399        remainder at the same time.  With this, the implementation of the
400        round-to-neginf operations could be further streamlined.
401    
402      * Remove inlining support for div/mod/rem from the frontend and replace it
403        with primops that get carried through to the backend.  Do this for all
404        int and word types.
405    
406    ----------------------------------------------------------------------
407    Name: Matthias Blume
408    Date: 2002/03/25 17:25:00 EST
409    Tag: blume-20020325-divmod
410    Description:
411    
412    I improved (hopefully without breaking them) the implementation of Int.div,
413    Int.mod, and Int.rem.   For this, the code in translate.sml now takes
414    advantage of the following observations:
415    
416      Let  q = x quot y      r = x rem y
417           d = x div  y      m = x mod y
418    
419    where "quot" is the round-to-zero version of integer division that
420    hardware usually provides.  Then we have:
421    
422         r = x - q * y        where neither the * nor the - will overflow
423         d = if q >= 0 orelse x = q * y then q else q - 1
424                              where neither the * nor the - will overflow
425         m = if q >= 0 orelse r = 0 then r else r + y
426                              where the + will not overflow
427    
428    This results in substantial simplification of the generated code.
429    The following table shows the number of CFG nodes and edges generated
430    for
431            fun f (x, y) = x OPER y
432            (* with OPER \in div, mod, quot, rem *)
433    
434    
435        OPER | nodes(old) | edges(old) | nodes(new) | edges(new)
436        --------------------------------------------------------
437         div |         24 |         39 |         12 |         16
438         mod |         41 |         71 |         12 |         16
439        quot |          8 |         10 |          8 |         10
440         rem |         10 |         14 |          8 |         10
441    
442    
443    ----------------------------------------------------------------------
444    Name: Matthias Blume
445    Date: 2002/03/25 22:06:00 EST
446    Tag: blume-20020325-cprotobug
447    Description:
448    
449    Fixed a bug in cproto (c prototype decoder).
450    
451    ----------------------------------------------------------------------
452    Name: Matthias Blume
453  Date: 2002/03/25 16:00:00 EST  Date: 2002/03/25 16:00:00 EST
454  Tag: blume-20020325-raw-primops  Tag: blume-20020325-raw-primops
455  Description:  Description:

Legend:
Removed from v.1178  
changed lines
  Added in v.1273

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