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 1132, Mon Mar 11 18:32:50 2002 UTC revision 1240, Tue Jun 11 15:35:34 2002 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/06/11
18    Tag: blume-20020611-unixpath
19    Description:
20    
21    Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch.
22    
23    ----------------------------------------------------------------------
24    Name: Matthias Blume
25    Date: 2002/06/10 16:35:00 EDT
26    Tag: blume-20020610-ieeereal
27    Description:
28    
29    I back-ported my implementation of IEEEReal.fromString from the
30    idlbasis-devel branch so that we can test it.
31    
32    Another small change is that ppDec tries to give more information
33    than just "<sig>" in the case of functors.  However, this code is
34    broken in some mysterious way if the functor's body's signature
35    has not been declared by ascription but gets inferred from the
36    implementation.  This needs fixing...
37    
38    ----------------------------------------------------------------------
39    Name: Matthias Blume
40    Date: 2002/05/31
41    Tag: blume-20020531-btrace-mode
42    Description:
43    
44    Resurrected SMLofNJ.Internals.BTrace.mode.  (It accidentally fell by
45    the wayside when I switched over to using Controls everywhere.)
46    
47    ----------------------------------------------------------------------
48    Name: Lal George
49    Date: 2002/05/23 12:21:40 EDT
50    Tag: george-20020523-visual-labels
51    Description:
52    
53    Labels are now displayed in the graphical output to make
54    the fall-through and target blocks obvious.
55    
56    ----------------------------------------------------------------------
57    Name: Matthias Blume
58    Date: 2002/05/22 11:03:00 EDT
59    Tag: blume-20020522-shrink
60    Description:
61    
62    John tweaked yesterday's fix for 1131 to handle an out-of-memory
63    situation that comes up when allocating huge arrays.
64    
65    ----------------------------------------------------------------------
66    Name: Matthias Blume
67    Date: 2002/05/21 16:00:00 EDT
68    Tag: Release_110_40
69    Description:
70    
71    New working release (110.40).  New bootfiles.
72    
73    [Also: John Reppy fixed GC bug 1131.]
74    
75    ----------------------------------------------------------------------
76    Name: Matthias Blume
77    Date: 2002/05/21 12:35:00 EDT
78    Tag: blume-20020521-cmdoc
79    Description:
80    
81    CM documentation update.
82    
83    ----------------------------------------------------------------------
84    Name: Matthias Blume
85    Date: 2002/05/21 10:55:00 EDT
86    Tag: blume-20020521-misc
87    Description:
88    
89    - John tweaked runtime to be silent on heap export (except when
90      GC messages are on).
91    - I added a few more things (cross-compiling versions of CMB) to
92      config/preloads (as suggestions).
93    
94    ----------------------------------------------------------------------
95    Name: Matthias Blume
96    Date: 2002/05/20 22:25:00 EDT
97    Tag: blume-20020520-controls
98    Description:
99    
100    - Added ControlUtil structure to control-lib.cm.
101    - Use it throughout.
102    - Used Controls facility to define MLRISC controls (as opposed to
103      registering MLRISC control ref cells with Controls after the fact)
104    - Fixed messed-up controls priorities.
105    
106    * Removed again all the stuff from config/preloads that one wouldn't
107      be able to preload at the time the initial heap image is built.
108      (Many libraries, e.g., CML, do not exist yet at this time.  The
109       only libraries that can be preloaded via config/preloads are those
110       that come bundled with the bootfiles.)
111    
112    ----------------------------------------------------------------------
113    Name: Matthias Blume
114    Date: 2002/05/20 10:59:00 EDT
115    Tag: blume-20020520-preloads
116    Description:
117    
118    Added a lot of commented-out suggestions for things to be included
119    in config/preloads.
120    
121    ----------------------------------------------------------------------
122    Name: Allen Leung
123    Date: 2002/05/18 14:20:00 EDT
124    Tag: leunga-20020518-mdl
125    Description:
126    
127    o Made the mdl tool stuff compile and run again.
128    o I've disabled all the stuff that depends on RTL specifications; they
129      are all badly broken anyway.
130    
131    ----------------------------------------------------------------------
132    Name: Matthias Blume
133    Date: 2002/05/17 16:49:00 EDT
134    Tag: blume-20020517-controls
135    Description:
136    
137    0. John Reppy made several modifications to the SML/NJ library.
138       In particular, there is a shiny new controls-lib.cm.
139    
140    1. Pushed new controls interface through compiler so that everything
141       compiles again.
142    
143    2. Added FormatComb and FORMAT_COMB to the CML version of the
144       SML/NJ library (so that CML compiles again).
145    
146    3. Modified init scripts because XXX_DEFAULT environment variables
147       are no longer with us.  (Boot-time initialization is now done
148       using the same environment variables that are also used for
149       startup-time initialization of controls.)
150    
151    ----------------------------------------------------------------------
152    Name: Lal George
153    Date: 2002/05/15 09:20:10 EDT
154    Tag: george-20020515-pseudo-op-decls
155    Description:
156    
157            All pseudo-ops emitted before the first segment declaration
158    such as TEXT, DATA, and BSS directives are assumed to be global
159    declarations and are emitted first in the assembly file. This is
160    useful in a number of situations where one has pseudo-ops that are not
161    specific to any segment, and also works around the constraint that one
162    cannot have client pseudo-ops in the TEXT segment.
163    
164            Because no segment is associated with these declarations it is
165    an error to allocate any space or objects before the first segment
166    directive and an exception will be raised. However, we cannot make
167    this check for client pseudo-ops.
168    
169            These top level declarations are a field in the CFG graph_info.
170    In theory you can continue to add to this field after the CFG has been
171    built -- provided you know what you are doing;-)
172    
173    ----------------------------------------------------------------------
174    Name: Matthias Blume
175    Date: 2002/05/13 16:40:00 EDT
176    Tag: blume-20020513-pp-etc
177    Description:
178    
179    A few minor bugfixes:
180    
181      - Stopgap measure for bug recently reported by Elsa Gunter (ppDec).
182        (Bogus printouts for redefined bindings still occur.  Compiler
183        bug should no longer occur now.  We need to redo the prettyprinter
184        from scratch.)
185    
186      - CM pathname printer now also adds escape sequences for ( and )
187    
188      - commend and docu fixes for ml-nlffi
189    
190    ----------------------------------------------------------------------
191    Name: Matthias Blume
192    Date: 2002/05/10 16:40:00 EDT
193    Tag: blume-20020510-erg-textio
194    Description:
195    
196    Applied the following bugfix provided by Emden Gansner:
197    
198        Output is corrupted when outputSubstr is used rather than output.
199    
200        The problem occurs when a substring
201    
202            ss = (s, dataStart, dataLen)
203    
204        where dataStart > 0, fills a stream buffer with avail bytes left.
205        avail bytes of s, starting at index dataStart, are copied into the
206        buffer, the buffer is flushed, and then the remaining dataLen-avail
207        bytes of ss are copied into the beginning of the buffer. Instead of
208        starting this copy at index dataStart+avail in s, the current code
209        starts the copy at index avail.
210    
211        Fix:
212        In text-io-fn.sml, change line 695 from
213             val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0)
214        to
215             val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0)
216    
217    ----------------------------------------------------------------------
218    Name: Matthias Blume
219    Date: 2002/04/12 13:55:00 EDT
220    Tag: blume-20020412-assyntax
221    Description:
222    
223    1. Grabbed newer assyntax.h from the XFree86 project.
224    2. Fiddled with how to compile X86.prim.asm without warnings.
225    3. (Very) Minor cleanup in CM.
226    
227    ----------------------------------------------------------------------
228    Name: Matthias Blume
229    Date: 2002/04/01 (no joke!) 17:07:00 EST
230    Tag: blume-20020401-x86div
231    Description:
232    
233    Added full support for div/mod/rem/quot on the x86, using the machine
234    instruction's two results (without clumsily recomputing the remainder)
235    directly where appropriate.
236    
237    Some more extensive power-of-two support was added to the x86 instruction
238    selector (avoiding expensive divs, mods, and muls where they can be
239    replaced with cheaper shifts and masks).  However, this sort of thing
240    ought to be done earlier, e.g., within the CPS optimizer so that
241    all architectures benefit from it.
242    
243    The compiler compiles to a fixed point, but changes might be somewhat
244    fragile nevertheless.  Please, report any strange things that you might
245    see wrt. div/mod/quot/rem...
246    
247    ----------------------------------------------------------------------
248    Name: Matthias Blume
249    Date: 2002/03/29 17:22:00
250    Tag: blume-20020329-div
251    Description:
252    
253    Fixed my broken div/mod logic.  Unfortunately, this means that the
254    inline code for div/mod now has one more comparison than before.
255    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
256    The problem was with quotient = 0, because that alone does not tell
257    us which way the rounding went.  One then has to look at whether
258    remainder and divisor have the same sign...  :(
259    
260    Anyway, I replaced the bootfiles with fresh ones...
261    
262    ----------------------------------------------------------------------
263    Name: Matthias Blume
264    Date: 2002/03/29 14:10:00 EST
265    Tag: blume-20020329-inlprims
266    Description:
267    
268    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
269    
270    Primops have changed. This means that the bin/boot-file formats have
271    changed as well.
272    
273    To make sure that there is no confusion, I made a new version.
274    
275    
276    CHANGES:
277    
278    * removed REMT from mltree (remainder should never overflow).
279    
280    * added primops to deal with divisions of all flavors to the frontend
281    
282    * handled these primops all the way through so they map to their respective
283      MLRISC support
284    
285    * used these primops in the implementation of Int, Int32, Word, Word32
286    
287    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
288    
289    * parameterized INLMIN, INLMAX, and INLABS by a numkind
290    
291    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
292      floating point
293    
294    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
295      and Real (but Real.abs maps to a separate floating-point-only primop)
296    
297    
298    TODO items:
299    
300    * Hacked Alpha32 instruction selection, disabling the selection of REMx
301      instructions because the machine instruction encoder cannot handle
302      them.  (Hppa, PPC, and Sparc instruction selection did not handle
303      REM in the first place, and REM is supported by the x86 machine coder.)
304    
305    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
306      selection phase.  (The two can be streamlined because the hardware
307      delivers both quotient and remainder at the same time anyway.)
308    
309    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
310      (Currently the behavior is inconsistent both across architectures and
311      wrt. the draft Basis spec.)
312    
313    * Word8 should eventually be handled natively, too.
314    
315    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
316      as if there currently is no execution path that could trigger it in
317      SML/NJ.  (The assumptions underlying functions arith and promotable do not
318      hold for things like multiplication and division.)
319    
320    ----------------------------------------------------------------------
321    Name: Matthias Blume
322    Date: 2002/03/27 16:27:00 EST
323    Tag: blume-20020327-mlrisc-divisions
324    Description:
325    
326    Added support for all four division operations (ML's div, mod, quot,
327    and rem) to MLRISC.  In the course of doing so, I also rationalized
328    the naming (no more annoying switch-around of DIV and QUOT), by
329    parameterizing the operation by div_rounding_mode (which can be either
330    DIV_TO_ZERO or DIV_TO_NEGINF).
331    
332    The generic MLTreeGen functor takes care of compiling all four
333    operations down to only round-to-zero div.
334    
335    Missing pieces:
336    
337      * Doing something smarter than relying on MLTreeGen on architectures
338        like, e.g., the x86 where hardware division delivers both quotient and
339        remainder at the same time.  With this, the implementation of the
340        round-to-neginf operations could be further streamlined.
341    
342      * Remove inlining support for div/mod/rem from the frontend and replace it
343        with primops that get carried through to the backend.  Do this for all
344        int and word types.
345    
346    ----------------------------------------------------------------------
347    Name: Matthias Blume
348    Date: 2002/03/25 17:25:00 EST
349    Tag: blume-20020325-divmod
350    Description:
351    
352    I improved (hopefully without breaking them) the implementation of Int.div,
353    Int.mod, and Int.rem.   For this, the code in translate.sml now takes
354    advantage of the following observations:
355    
356      Let  q = x quot y      r = x rem y
357           d = x div  y      m = x mod y
358    
359    where "quot" is the round-to-zero version of integer division that
360    hardware usually provides.  Then we have:
361    
362         r = x - q * y        where neither the * nor the - will overflow
363         d = if q >= 0 orelse x = q * y then q else q - 1
364                              where neither the * nor the - will overflow
365         m = if q >= 0 orelse r = 0 then r else r + y
366                              where the + will not overflow
367    
368    This results in substantial simplification of the generated code.
369    The following table shows the number of CFG nodes and edges generated
370    for
371            fun f (x, y) = x OPER y
372            (* with OPER \in div, mod, quot, rem *)
373    
374    
375        OPER | nodes(old) | edges(old) | nodes(new) | edges(new)
376        --------------------------------------------------------
377         div |         24 |         39 |         12 |         16
378         mod |         41 |         71 |         12 |         16
379        quot |          8 |         10 |          8 |         10
380         rem |         10 |         14 |          8 |         10
381    
382    
383    ----------------------------------------------------------------------
384    Name: Matthias Blume
385    Date: 2002/03/25 22:06:00 EST
386    Tag: blume-20020325-cprotobug
387    Description:
388    
389    Fixed a bug in cproto (c prototype decoder).
390    
391    ----------------------------------------------------------------------
392    Name: Matthias Blume
393    Date: 2002/03/25 16:00:00 EST
394    Tag: blume-20020325-raw-primops
395    Description:
396    
397    I did some cleanup to Allen's new primop code and
398    replaced yesterday's bootfiles with new ones.
399    (But they are stored in the same place.)
400    
401    ----------------------------------------------------------------------
402    Name: Matthias Blume
403    Date: 2002/03/24 22:40:00 EST
404    Tag: blume-20020324-bootfiles
405    Description:
406    
407    Made the bootfiles that Allen asked for.
408    
409    ----------------------------------------------------------------------
410    Name: Allen Leung
411    Date: 2002/03/23 15:50:00 EST
412    Tag: leunga-20020323-flint-cps-rcc-primops
413    Description:
414    
415      1. Changes to FLINT primops:
416    
417        (* make a call to a C-function;
418         * The primop carries C function prototype information and specifies
419         * which of its (ML-) arguments are floating point. C prototype
420         * information is for use by the backend, ML information is for
421         * use by the CPS converter. *)
422      | RAW_CCALL of { c_proto: CTypes.c_proto,
423                       ml_args: ccall_type list,
424                       ml_res_opt: ccall_type option,
425                       reentrant : bool
426                     } option
427       (* Allocate uninitialized storage on the heap.
428        * The record is meant to hold short-lived C objects, i.e., they
429        * are not ML pointers.  With the tag, the representation is
430        * the same as RECORD with tag tag_raw32 (sz=4), or tag_fblock (sz=8)
431        *)
432      | RAW_RECORD of {tag:bool,sz:int}
433      and ccall_type = CCALL_INT32 | CCALL_REAL64 | CCALL_ML_PTR
434    
435      2.  These CPS primops are now overloaded:
436    
437           rawload of {kind:numkind}
438           rawstore of {kind:numkind}
439    
440          The one argument form is:
441    
442             rawload {kind} address
443    
444          The two argument form is:
445    
446             rawload {kind} [ml object, byte-offset]
447    
448      3. RAW_CCALL/RCC now takes two extra arguments:
449    
450         a. The first is whether the C call is reentrant, i.e., whether
451            ML state should be saved and restored.
452         b. The second argument is a string argument specifying the name of
453            library and the C function.
454    
455         These things are currently not handled in the code generator, yet.
456    
457      4. In CProto,
458    
459         An encoding type of "bool" means "ml object" and is mapped into
460         C prototype of PTR.  Note that "bool" is different than "string",
461         even though "string" is also mapped into PTR, because "bool"
462         is assigned an CPS type of BOGt, while "string" is assigned INT32t.
463    
464      5. Pickler/unpicker
465    
466         Changed to handle RAW_RECORD and newest RAW_CCALL
467    
468      6. MLRiscGen,
469    
470         1. Changed to handle the new rawload/rawstore/rawrecord operators.
471         2. Code for handling C Calls has been moved to a new module CPSCCalls,
472            in the file CodeGen/cpscompile/cps-c-calls.sml
473    
474      7. Added the conditional move operator
475    
476             condmove of branch
477    
478         to cps.  Generation of this is still buggy so it is currently
479         disabled.
480    
481    ----------------------------------------------------------------------
482    Name: Lal George
483    Date: 2002/03/22 14:18:25 EST
484    Tag: george-20020322-cps-branch-prob
485    Description:
486    
487    Implemented the Ball-Larus branch prediction-heuristics, and
488    incorporated graphical viewers for control flow graphs.
489    
490    Ball-Larus Heuristics:
491    ---------------------
492    See the file compiler/CodeGen/cpscompile/cpsBranchProb.sml.
493    
494    By design it uses the Dempster-Shafer theory for combining
495    probabilities.  For example, in the function:
496    
497        fun f(n,acc) = if n = 0 then acc else f(n-1, n*acc)
498    
499    the ball-larus heuristics predicts that the n=0 is unlikely
500    (OH-heuristic), and the 'then' branch is unlikely because of the
501    RH-heuristic -- giving the 'then' branch an even lower combined
502    probability using the Dempster-Shafer theory.
503    
504    Finally, John Reppy's loop analysis in MLRISC, further lowers the
505    probability of the 'then' branch because of the loop in the else
506    branch.
507    
508    
509    Graphical Viewing:
510    ------------------
511    I merely plugged in Allen's graphical viewers into the compiler. The
512    additional code is not much. At the top level, saying:
513    
514            Control.MLRISC.getFlag "cfg-graphical-view" := true;
515    
516    will display the graphical view of the control flow graph just before
517    back-patching.  daVinci must be in your path for this to work. If
518    daVinci is not available, then the default viewer can be changed
519    using:
520    
521            Control.MLRISC.getString "viewer"
522    
523    which can be set to "dot" or "vcg" for the corresponding viewers. Of
524    course, these viewers must be in your path.
525    
526    The above will display the compilation unit at the level of clusters,
527    many of which are small, boring, and un-interesting. Also setting:
528    
529            Control.MLRISC.getInt "cfg-graphical-view_size"
530    
531    will display clusters that are larger than the value set by the above.
532    
533    
534    ----------------------------------------------------------------------
535    Name: Matthias Blume
536    Date: 2002/03/21 22:20:00 EST
537    Tag: blume-20020321-kmp-bugfix
538    Description:
539    
540    Changed the interface to the KMP routine in PreString and fixed
541    a minor bug in one place where it was used.
542    
543    ----------------------------------------------------------------------
544    Name: Allen Leung
545    Date: 2002/03/21 20:30:00 EST
546    Tag: leunga-20020321-cfg
547    Description:
548    
549      Fixed a potential problem in cfg edge splitting.
550    
551    ----------------------------------------------------------------------
552    Name: Allen Leung
553    Date: 2002/03/21 17:15:00 EST
554    Tag: leunga-20020321-x86-fp-cfg
555    Description:
556    
557      1. Recoded the buggy parts of x86-fp.
558    
559         a. All the block reordering code has been removed.
560            We now depend on the block placement phases to do this work.
561    
562         b. Critical edge splitting code has been simplified and moved into the
563            CFG modules, as where they belong.
564    
565         Both of these were quite buggy and complex.  The code is now much, much
566         simpler.
567    
568      2. X86 backend.
569    
570         a. Added instructions for 64-bit support.  Instruction selection for
571            64-bit has not been committed, however, since that
572            requires changes to MLTREE which haven't been approved by
573            Lal and John.
574    
575         b. Added support for FUCOMI and FUCOMIP when generating code for
576            PentiumPro and above.  We only generate these instructions in
577            the fast-fp mode.
578    
579         c. Added cases for JP and JNP in X86FreqProps.
580    
581      3. CFG
582    
583         CFG now has a bunch of methods for edge splitting and merging.
584    
585      4. Machine description.
586    
587         John's simplification of MLTREE_BASIS.fcond broke a few machine
588         description things:
589    
590         rtl-build.{sig,sml} and hppa.mdl fixed.
591    
592         NOTE: the machine description stuff in the repository is still broken.
593               Again, I can't put my fixes in because that involves
594               changes to MLTREE.
595    
596    ----------------------------------------------------------------------
597    Name: Matthias Blume
598    Date: 2002/03/20 15:55:00 EST
599    Tag: blume-20020320-kmp
600    Description:
601    
602    Implemented Knuth-Morris-Pratt string matching in PreString and used
603    it for String.isSubstring, Substring.isSubstring, and
604    Substring.position.
605    
606    (Might need some stress-testing.  Simple examples worked fine.)
607    
608    ----------------------------------------------------------------------
609    Name: Matthias Blume
610    Date: 2002/03/19 16:37:00 EST
611    Tag: blume-20020319-witnesses
612    Description:
613    
614    Added a structure C.W and functions convert/Ptr.convert to ml-nlffi-lib.
615    
616    This implements a generic mechanism for changing constness qualifiers
617    anywhere within big C types without resorting to outright "casts".
618    (So far, functions such as C.rw/C.ro or C.Ptr.rw/C.Ptr.ro only let you
619    modify the constness at the outermost level.)
620    The implementation of "convert" is based on the idea of "witness"
621    values -- values that are not used by the operation but whose types
622    "testify" to their applicability.  On the implementation side, "convert"
623    is simply a projection (returning its second curried argument).  With
624    cross-module inlining, it should not result in any machine code being
625    generated.
626    
627    ----------------------------------------------------------------------
628    Name: Matthias Blume
629    Date: 2002/03/15 16:40:00 EST
630    Tag: blume-20020315-basis
631    Description:
632    
633    Provided (preliminary?) implementations for
634    
635      {String,Substring}.{concatWith,isSuffix,isSubstring}
636    
637    and
638    
639      Substring.full
640    
641    Those are in the Basis spec but they were missing in SML/NJ.
642    
643    ----------------------------------------------------------------------
644    Name: Matthias Blume
645    Date: 2002/03/14 21:30:00 EST
646    Tag: blume-20020314-controls
647    Description:
648    
649    Controls:
650    ---------
651    
652    1. Factored out the recently-added Controls : CONTROLS stuff and put
653       it into its own library $/controls-lib.cm.  The source tree for
654       this is under src/smlnj-lib/Controls.
655    
656    2. Changed the names of types and functions in this interface, so they
657       make a bit more "sense":
658    
659          module -> registry
660          'a registry -> 'a group
661    
662    3. The interface now deals in ref cells only.  The getter/setter interface
663       is (mostly) gone.
664    
665    4. Added a function that lets one register an already-existing ref cell.
666    
667    5. Made the corresponding modifications to the rest of the code so that
668       everything compiles again.
669    
670    6. Changed the implementation of Controls.MLRISC back to something closer
671       to the original.  In particular, this module (and therefore MLRISC)
672       does not depend on Controls.  There now is some link-time code in
673       int-sys.sml that registers the MLRISC controls with the Controls
674       module.
675    
676    CM:
677    ---
678    
679      * One can now specify the lambda-split aggressiveness in init.cmi.
680    
681    ----------------------------------------------------------------------
682    Name: Allen Leung
683    Date: 2002/03/13 17:30:00 EST
684    Tag: leunga-20020313-x86-fp-unary
685    Description:
686    
687    Bug fix for:
688    
689    > leunga@weaselbane:~/Yale/tmp/sml-dist{21} bin/sml
690    > Standard ML of New Jersey v110.39.1 [FLINT v1.5], March 08, 2002
691    > - fun f(x,(y,z)) = Real.~ y;
692    > [autoloading]
693    > [autoloading done]
694    >       fchsl   (%eax), 184(%esp)
695    > Error: MLRisc bug: X86MCEmitter.emitInstr
696    >
697    > uncaught exception Error
698    >   raised at: ../MLRISC/control/mlriscErrormsg.sml:16.14-16.19
699    
700    The problem was that the code generator did not generate any fp registers
701    in this case, and the ra didn't know that it needed to run the X86FP phase to
702    translate the pseudo fp instruction.   This only happened with unary fp
703    operators in certain situations.
704    
705    ----------------------------------------------------------------------
706    Name: Matthias Blume
707    Date: 2002/03/13 14:00:00 EST
708    Tag: blume-20020313-overload-etc
709    Description:
710    
711    1. Added _overload as a synonym for overload for backward compatibility.
712       (Control.overloadKW must be true for either version to be accepted.)
713    
714    2. Fixed bug in install script that caused more things to be installed
715       than what was requested in config/targets.
716    
717    3. Made CM aware of the (_)overload construct so that autoloading
718       works.
719    
720    ----------------------------------------------------------------------
721    Name: Matthias Blume
722    Date: 2002/03/12 22:03:00 EST
723    Tag: blume-20020312-url
724    Description:
725    
726    Forgot to update BOOT and srcarchiveurl.
727    
728    ----------------------------------------------------------------------
729    Name: Matthias Blume
730    Date: 2002/03/12 17:30:00 EST
731    Tag: blume-20020312-version110392
732    Description:
733    
734    Yet another version number bump (because of small changes to the
735    binfile format).  Version number is now 110.39.2.  NEW BOOTFILES!
736    
737    Changes:
738    
739      The new pid generation scheme described a few weeks ago was overly
740      complicated.  I implemented a new mechanism that is simpler and
741      provides a bit more "stability":  Once CM has seen a compilation
742      unit, it keeps its identity constant (as long as you do not delete
743      those crucial CM/GUID/* files).  This means that when you change
744      an interface, compile, then go back to the old interface, and
745      compile again, you arrive at the original pid.
746    
747      There now also is a mechanism that instructs CM to use the plain
748      environment hash as a module's pid (effectively making its GUID
749      the empty string).  For this, "noguid" must be specified as an
750      option to the .sml file in question within its .cm file.
751      This is most useful for code that is being generated by tools such
752      as ml-nlffigen (because during development programmers tend to
753      erase the tool's entire output directory tree including CM's cached
754      GUIDs).  "noguid" is somewhat dangerous (since it can be used to locally
755      revert to the old, broken behavior of SML/NJ, but in specific cases
756      where there is no danger of interface confusion, its use is ok
757      (I think).
758    
759      ml-nlffigen by default generates "noguid" annotations.  They can be
760      turned off by specifying -guid in its command line.
761    
762    ----------------------------------------------------------------------
763    Name: Lal George
764    Date: 2002/03/12 12 14:42:36 EST
765    Tag: george-20020312-frequency-computation
766    Description:
767    
768    Integrated jump chaining and static block frequency into the
769    compiler. More details and numbers later.
770    
771    ----------------------------------------------------------------------
772    Name: Lal George
773    Date: 2002/03/11 11 22:38:53 EST
774    Tag: george-20020311-jump-chain-elim
775    Description:
776    
777    Tested the jump chain elimination on all architectures (except the
778    hppa).  This is on by default right now and is profitable for the
779    alpha and x86, however, it may not be profitable for the sparc and ppc
780    when compiling the compiler.
781    
782    The gc test will typically jump to a label at the end of the cluster,
783    where there is another jump to an external cluster containing the actual
784    code to invoke gc. This is to allow factoring of common gc invocation
785    sequences. That is to say, we generate:
786    
787            f:
788               testgc
789               ja   L1      % jump if above to L1
790    
791            L1:
792               jmp L2
793    
794    
795    After jump chain elimination the 'ja L1' instructions is converted to
796    'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end
797    up being implemented in their long form (if L2 is far away) using:
798    
799            jbe     L3      % jump if below or equal to L3
800            jmp     L2
801         L3:
802            ...
803    
804    
805    For large compilation units L2  may be far away.
806    
807    
808    ----------------------------------------------------------------------
809    Name: Matthias Blume
810  Date: 2002/03/11 13:30:00 EST  Date: 2002/03/11 13:30:00 EST
811  Tag: blume-20020311-mltreeeval  Tag: blume-20020311-mltreeeval
812  Description:  Description:
# Line 23  Line 816 
816  ----------------------------------------------------------------------  ----------------------------------------------------------------------
817  Name: Allen Leung  Name: Allen Leung
818  Date: 2002/03/11 10:30:00 EST  Date: 2002/03/11 10:30:00 EST
819  Tag: leunga-20020310-runtime-string0  Tag: leunga-20020311-runtime-string0
820  Description:  Description:
821    
822     The representation of the empty string now points to a     The representation of the empty string now points to a

Legend:
Removed from v.1132  
changed lines
  Added in v.1240

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