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 1137, Tue Mar 12 22:28:55 2002 UTC revision 1273, Thu Oct 10 17:13:35 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    ----------------------------------------------------------------------
16    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
454    Tag: blume-20020325-raw-primops
455    Description:
456    
457    I did some cleanup to Allen's new primop code and
458    replaced yesterday's bootfiles with new ones.
459    (But they are stored in the same place.)
460    
461    ----------------------------------------------------------------------
462    Name: Matthias Blume
463    Date: 2002/03/24 22:40:00 EST
464    Tag: blume-20020324-bootfiles
465    Description:
466    
467    Made the bootfiles that Allen asked for.
468    
469    ----------------------------------------------------------------------
470    Name: Allen Leung
471    Date: 2002/03/23 15:50:00 EST
472    Tag: leunga-20020323-flint-cps-rcc-primops
473    Description:
474    
475      1. Changes to FLINT primops:
476    
477        (* make a call to a C-function;
478         * The primop carries C function prototype information and specifies
479         * which of its (ML-) arguments are floating point. C prototype
480         * information is for use by the backend, ML information is for
481         * use by the CPS converter. *)
482      | RAW_CCALL of { c_proto: CTypes.c_proto,
483                       ml_args: ccall_type list,
484                       ml_res_opt: ccall_type option,
485                       reentrant : bool
486                     } option
487       (* Allocate uninitialized storage on the heap.
488        * The record is meant to hold short-lived C objects, i.e., they
489        * are not ML pointers.  With the tag, the representation is
490        * the same as RECORD with tag tag_raw32 (sz=4), or tag_fblock (sz=8)
491        *)
492      | RAW_RECORD of {tag:bool,sz:int}
493      and ccall_type = CCALL_INT32 | CCALL_REAL64 | CCALL_ML_PTR
494    
495      2.  These CPS primops are now overloaded:
496    
497           rawload of {kind:numkind}
498           rawstore of {kind:numkind}
499    
500          The one argument form is:
501    
502             rawload {kind} address
503    
504          The two argument form is:
505    
506             rawload {kind} [ml object, byte-offset]
507    
508      3. RAW_CCALL/RCC now takes two extra arguments:
509    
510         a. The first is whether the C call is reentrant, i.e., whether
511            ML state should be saved and restored.
512         b. The second argument is a string argument specifying the name of
513            library and the C function.
514    
515         These things are currently not handled in the code generator, yet.
516    
517      4. In CProto,
518    
519         An encoding type of "bool" means "ml object" and is mapped into
520         C prototype of PTR.  Note that "bool" is different than "string",
521         even though "string" is also mapped into PTR, because "bool"
522         is assigned an CPS type of BOGt, while "string" is assigned INT32t.
523    
524      5. Pickler/unpicker
525    
526         Changed to handle RAW_RECORD and newest RAW_CCALL
527    
528      6. MLRiscGen,
529    
530         1. Changed to handle the new rawload/rawstore/rawrecord operators.
531         2. Code for handling C Calls has been moved to a new module CPSCCalls,
532            in the file CodeGen/cpscompile/cps-c-calls.sml
533    
534      7. Added the conditional move operator
535    
536             condmove of branch
537    
538         to cps.  Generation of this is still buggy so it is currently
539         disabled.
540    
541    ----------------------------------------------------------------------
542    Name: Lal George
543    Date: 2002/03/22 14:18:25 EST
544    Tag: george-20020322-cps-branch-prob
545    Description:
546    
547    Implemented the Ball-Larus branch prediction-heuristics, and
548    incorporated graphical viewers for control flow graphs.
549    
550    Ball-Larus Heuristics:
551    ---------------------
552    See the file compiler/CodeGen/cpscompile/cpsBranchProb.sml.
553    
554    By design it uses the Dempster-Shafer theory for combining
555    probabilities.  For example, in the function:
556    
557        fun f(n,acc) = if n = 0 then acc else f(n-1, n*acc)
558    
559    the ball-larus heuristics predicts that the n=0 is unlikely
560    (OH-heuristic), and the 'then' branch is unlikely because of the
561    RH-heuristic -- giving the 'then' branch an even lower combined
562    probability using the Dempster-Shafer theory.
563    
564    Finally, John Reppy's loop analysis in MLRISC, further lowers the
565    probability of the 'then' branch because of the loop in the else
566    branch.
567    
568    
569    Graphical Viewing:
570    ------------------
571    I merely plugged in Allen's graphical viewers into the compiler. The
572    additional code is not much. At the top level, saying:
573    
574            Control.MLRISC.getFlag "cfg-graphical-view" := true;
575    
576    will display the graphical view of the control flow graph just before
577    back-patching.  daVinci must be in your path for this to work. If
578    daVinci is not available, then the default viewer can be changed
579    using:
580    
581            Control.MLRISC.getString "viewer"
582    
583    which can be set to "dot" or "vcg" for the corresponding viewers. Of
584    course, these viewers must be in your path.
585    
586    The above will display the compilation unit at the level of clusters,
587    many of which are small, boring, and un-interesting. Also setting:
588    
589            Control.MLRISC.getInt "cfg-graphical-view_size"
590    
591    will display clusters that are larger than the value set by the above.
592    
593    
594    ----------------------------------------------------------------------
595    Name: Matthias Blume
596    Date: 2002/03/21 22:20:00 EST
597    Tag: blume-20020321-kmp-bugfix
598    Description:
599    
600    Changed the interface to the KMP routine in PreString and fixed
601    a minor bug in one place where it was used.
602    
603    ----------------------------------------------------------------------
604    Name: Allen Leung
605    Date: 2002/03/21 20:30:00 EST
606    Tag: leunga-20020321-cfg
607    Description:
608    
609      Fixed a potential problem in cfg edge splitting.
610    
611    ----------------------------------------------------------------------
612    Name: Allen Leung
613    Date: 2002/03/21 17:15:00 EST
614    Tag: leunga-20020321-x86-fp-cfg
615    Description:
616    
617      1. Recoded the buggy parts of x86-fp.
618    
619         a. All the block reordering code has been removed.
620            We now depend on the block placement phases to do this work.
621    
622         b. Critical edge splitting code has been simplified and moved into the
623            CFG modules, as where they belong.
624    
625         Both of these were quite buggy and complex.  The code is now much, much
626         simpler.
627    
628      2. X86 backend.
629    
630         a. Added instructions for 64-bit support.  Instruction selection for
631            64-bit has not been committed, however, since that
632            requires changes to MLTREE which haven't been approved by
633            Lal and John.
634    
635         b. Added support for FUCOMI and FUCOMIP when generating code for
636            PentiumPro and above.  We only generate these instructions in
637            the fast-fp mode.
638    
639         c. Added cases for JP and JNP in X86FreqProps.
640    
641      3. CFG
642    
643         CFG now has a bunch of methods for edge splitting and merging.
644    
645      4. Machine description.
646    
647         John's simplification of MLTREE_BASIS.fcond broke a few machine
648         description things:
649    
650         rtl-build.{sig,sml} and hppa.mdl fixed.
651    
652         NOTE: the machine description stuff in the repository is still broken.
653               Again, I can't put my fixes in because that involves
654               changes to MLTREE.
655    
656    ----------------------------------------------------------------------
657    Name: Matthias Blume
658    Date: 2002/03/20 15:55:00 EST
659    Tag: blume-20020320-kmp
660    Description:
661    
662    Implemented Knuth-Morris-Pratt string matching in PreString and used
663    it for String.isSubstring, Substring.isSubstring, and
664    Substring.position.
665    
666    (Might need some stress-testing.  Simple examples worked fine.)
667    
668    ----------------------------------------------------------------------
669    Name: Matthias Blume
670    Date: 2002/03/19 16:37:00 EST
671    Tag: blume-20020319-witnesses
672    Description:
673    
674    Added a structure C.W and functions convert/Ptr.convert to ml-nlffi-lib.
675    
676    This implements a generic mechanism for changing constness qualifiers
677    anywhere within big C types without resorting to outright "casts".
678    (So far, functions such as C.rw/C.ro or C.Ptr.rw/C.Ptr.ro only let you
679    modify the constness at the outermost level.)
680    The implementation of "convert" is based on the idea of "witness"
681    values -- values that are not used by the operation but whose types
682    "testify" to their applicability.  On the implementation side, "convert"
683    is simply a projection (returning its second curried argument).  With
684    cross-module inlining, it should not result in any machine code being
685    generated.
686    
687    ----------------------------------------------------------------------
688    Name: Matthias Blume
689    Date: 2002/03/15 16:40:00 EST
690    Tag: blume-20020315-basis
691    Description:
692    
693    Provided (preliminary?) implementations for
694    
695      {String,Substring}.{concatWith,isSuffix,isSubstring}
696    
697    and
698    
699      Substring.full
700    
701    Those are in the Basis spec but they were missing in SML/NJ.
702    
703    ----------------------------------------------------------------------
704    Name: Matthias Blume
705    Date: 2002/03/14 21:30:00 EST
706    Tag: blume-20020314-controls
707    Description:
708    
709    Controls:
710    ---------
711    
712    1. Factored out the recently-added Controls : CONTROLS stuff and put
713       it into its own library $/controls-lib.cm.  The source tree for
714       this is under src/smlnj-lib/Controls.
715    
716    2. Changed the names of types and functions in this interface, so they
717       make a bit more "sense":
718    
719          module -> registry
720          'a registry -> 'a group
721    
722    3. The interface now deals in ref cells only.  The getter/setter interface
723       is (mostly) gone.
724    
725    4. Added a function that lets one register an already-existing ref cell.
726    
727    5. Made the corresponding modifications to the rest of the code so that
728       everything compiles again.
729    
730    6. Changed the implementation of Controls.MLRISC back to something closer
731       to the original.  In particular, this module (and therefore MLRISC)
732       does not depend on Controls.  There now is some link-time code in
733       int-sys.sml that registers the MLRISC controls with the Controls
734       module.
735    
736    CM:
737    ---
738    
739      * One can now specify the lambda-split aggressiveness in init.cmi.
740    
741    ----------------------------------------------------------------------
742    Name: Allen Leung
743    Date: 2002/03/13 17:30:00 EST
744    Tag: leunga-20020313-x86-fp-unary
745    Description:
746    
747    Bug fix for:
748    
749    > leunga@weaselbane:~/Yale/tmp/sml-dist{21} bin/sml
750    > Standard ML of New Jersey v110.39.1 [FLINT v1.5], March 08, 2002
751    > - fun f(x,(y,z)) = Real.~ y;
752    > [autoloading]
753    > [autoloading done]
754    >       fchsl   (%eax), 184(%esp)
755    > Error: MLRisc bug: X86MCEmitter.emitInstr
756    >
757    > uncaught exception Error
758    >   raised at: ../MLRISC/control/mlriscErrormsg.sml:16.14-16.19
759    
760    The problem was that the code generator did not generate any fp registers
761    in this case, and the ra didn't know that it needed to run the X86FP phase to
762    translate the pseudo fp instruction.   This only happened with unary fp
763    operators in certain situations.
764    
765    ----------------------------------------------------------------------
766    Name: Matthias Blume
767    Date: 2002/03/13 14:00:00 EST
768    Tag: blume-20020313-overload-etc
769    Description:
770    
771    1. Added _overload as a synonym for overload for backward compatibility.
772       (Control.overloadKW must be true for either version to be accepted.)
773    
774    2. Fixed bug in install script that caused more things to be installed
775       than what was requested in config/targets.
776    
777    3. Made CM aware of the (_)overload construct so that autoloading
778       works.
779    
780    ----------------------------------------------------------------------
781    Name: Matthias Blume
782    Date: 2002/03/12 22:03:00 EST
783    Tag: blume-20020312-url
784    Description:
785    
786    Forgot to update BOOT and srcarchiveurl.
787    
788  ----------------------------------------------------------------------  ----------------------------------------------------------------------
789  Name: Matthias Blume  Name: Matthias Blume
790  Date: 2002/03/12 17:30:00 EST  Date: 2002/03/12 17:30:00 EST
# Line 27  Line 801 
801    provides a bit more "stability":  Once CM has seen a compilation    provides a bit more "stability":  Once CM has seen a compilation
802    unit, it keeps its identity constant (as long as you do not delete    unit, it keeps its identity constant (as long as you do not delete
803    those crucial CM/GUID/* files).  This means that when you change    those crucial CM/GUID/* files).  This means that when you change
804    and interface, compiler, then go back to the old interface, and    an interface, compile, then go back to the old interface, and
805    compile again, you arrive at the original pid.    compile again, you arrive at the original pid.
806    
807    There now also is a mechanism that instructs CM to use the plain    There now also is a mechanism that instructs CM to use the plain
# Line 102  Line 876 
876  ----------------------------------------------------------------------  ----------------------------------------------------------------------
877  Name: Allen Leung  Name: Allen Leung
878  Date: 2002/03/11 10:30:00 EST  Date: 2002/03/11 10:30:00 EST
879  Tag: leunga-20020310-runtime-string0  Tag: leunga-20020311-runtime-string0
880  Description:  Description:
881    
882     The representation of the empty string now points to a     The representation of the empty string now points to a

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

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