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 1124, Thu Mar 7 19:49:22 2002 UTC revision 1368, Sat Sep 13 04:44:43 2003 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Matthias Blume (blume (at) tti - c (dot) org)
17    Date: 2003/09/12 11:45:00 CDT
18    Tag: blume-20030912-various
19    Description:
20    
21     - fixed bug in Real.toLargeInt
22     - fixed bug in Posix.ProcEnv.times
23     - changed inputLine functions to return an option
24     - minor installer improvements / bugfixes
25     - changed default @SMLalloc parameter for x86/celeron to 64k
26    
27    ----------------------------------------------------------------------
28    Name: Matthias Blume (blume (at) tti - c (dot) org)
29    Date: 2003/09/09 22:00:00 CDT
30    Tag: Release_110_43
31    Description:
32    
33        New working release 110.43.  New bootfiles.
34    
35    ----------------------------------------------------------------------
36    Name: Matthias Blume (blume (at) tti - c (dot) org)
37    Date: 2003/09/09 19:20:00 CDT
38    Tag: blume-20030909-installer
39    Description:
40    
41    Rewrote large parts of config/install.sh in SML (config/libinstall.sml).
42    Modified config/install.bat to take advantage of it.  Also modified
43    config/install.sh (and called it config/new-install.sh) to take advantage
44    of it on Unix systems.  (The SML code is (supposed to be) platform-
45    independent.)
46    
47    The installer can now install everything under Win32
48    as well as under *nix as long as it compiles.
49    
50    Other changes:
51    
52      - made CML compile again under Win32
53      - made eXene compile under Win32 (by providing a fake structure UnixSock
54        and by using OS.Process.getEnv instead of Posix.ProcEnv.getenv)
55      - fixed a bug in nowhere: it assumed that type OS.Process.status is the
56        same as type int;  under Win32 it isn't
57      - fixed some slice-related problems in the win32-specific parts of CML
58      - added a functor argument "sameVol" to os-path-fn.sml in the Basis
59        (under Win32, the volume name is case-insensitive, and the
60        OS.Path code compares volume names for equality)
61    
62    ----------------------------------------------------------------------
63    Name: Matthias Blume (blume (at) tti - c (dot) org)
64    Date: 2003/09/08 11:55:00 CDT
65    Tag: blume-20030908-fullpath
66    Description:
67    
68    Made Win32 version of OS.FileSys.fullPath return current directory
69    when given an empty string.  This is what the spec says, and incidentally,
70    CM depends on it.  (CM otherwise goes into an infinite loop in certain
71    cases when presented with the name of a non-existing .cm file.)
72    
73    ----------------------------------------------------------------------
74    Name: Matthias Blume (blume (at) tti - c (dot) org)
75    Date: 2003/09/04 16:30:00 CDT
76    Tag: blume-20030905-slices-etc
77    Description:
78    
79      1. Changed interface to vectors and arrays in Basis to match
80         (draft) Basis spec.
81      2. Added signatures and implementations of slices according to
82         Basis spec.
83      3. Edited source code throughout the system to make it compile again
84         under 1. and 2.  (In some cases code had to be added to have it
85         match the new signatures.)
86      4. MLRISC should be backward-compatible: the copies of the originals
87         of files that needed to change under 3. were retained, the .cm files
88         check the compiler version number and use old versions when
89         appropriate.
90      5. Changed type of OS.FileSys.readDir and Posix.FileSys.readdir to
91         dirstream -> string option (in accordance with Basis spec).
92      6. When generating code that counts lines, ml-lex used function
93         CharVector.foldli, taking advantage of its old interface.
94         This has been replaced with the corresponding code from
95         CharVectorSlice.  (html-lex must be re-lexed!)
96      7. BitArray in smlnj-lib/Util has been extended/modified to match the
97         new MONO_ARRAY signature.  (Do we need BitArraySlice?)
98      8. Removed temporary additions (fromInternal, toInternal) from the
99         (now obsolete) IntInf in smlnj-lib/Util.
100      9. Cleaned up structure Byte.
101     10. Added localOffset, scan, and fromString to Date (according to spec).
102         Cleaned/corrected implementation of Date.
103         (Still need to check for correctness; implement better canonicalizeDate.)
104     11. Added "scan" to signature IEEE_REAL.
105     12. Some improvements to IntInf [in particular: efficiency-hack for
106         mod and rem when second operand is 2 (for parity checks).]
107     13. Changed representation of type Time.time, using a single IntInf.int
108         value counting microseconds.  This considerably simplified the
109         implementation of structure Time.  We now support negative time
110         values; scan and fromString handle signs.
111     14. Functor PrimIO now takes two additional arguments (VectorSlice and
112         ArraySlice).
113    
114    ----------------------------------------------------------------------
115    Name: Matthias Blume (blume (at) tti - c (dot) org)
116    Date: 2003/08/28 17:00:00 CDT
117    Tag: blume-20030828-intinf
118    Description:
119    
120    This is a major update which comes with a version number bump
121    (110.42.99 -- yes, we are really close to 110.43 :-), NEW BOOTFILES,
122    and an implementation of IntInf in the Basis.
123    
124    There are a fairly large number of related changes and updates throughout
125    the system:
126    
127    Basis:
128            - Implemented IntInf.
129            - Made LargeInt a projection of IntInf (by filtering through INTEGER).
130            - Added some missing Real64 operations, most notably Real.toLargeInt.
131            - Added FixedInt as a synonym for Int32.
132    
133    compiler:
134            * Added support for a built-in intinf type.
135              - literals
136              - pattern matching
137              - conversion shortcuts (Int32.fromLarge o Int.toLarge etc.)
138              - overloading on literals and operations
139    
140            This required adding a primitive type intinf, some additional
141            primops, and implementations for several non-trivial intinf
142            operations in Core.  (The intinf type is completely abstract
143            to the compiler; all operations get delegated back to the Core.)
144    
145            * Intinf equality is handled by polyequal.  However, the compiler
146            does not print its usual warning in this case (since polyequal
147            is the right thing to do there).
148    
149            * Improved the organization of structure InlineT.
150    
151            * A word about conversion primops:
152            If conversions involving intinf do not cancel out during
153            CPS contract, then the compiler must insert calls to Core functions.
154            Since all core access must be resolved already during the FLINT
155            translate phase, it would be too late a the time of CPS contract
156            to add new Core calls.  For this reason, conversion primops
157            for intinf carry two arguments:  1. the numeric argument that
158            they are supposed to convert, and 2. the Core function that
159            can help with this conversion if necessary.  If CPS contract
160            eliminates a primop, then the associated Core function becomes
161            dead and goes away.  Intinf conversion primops that do not get
162            eliminated by CPS contract get rewritten into calls of their
163            core functions by a separate, new phase.
164    
165    interactive system:
166            - Control.Print.intinfDepth controls max length of intinf constants
167            being printed. (Analogous to Control.Print.stringDepth.)
168            - Cleanup in printutil and pputil: got rid of unused stuff and
169            duplicates; replaced some of the code with code that makes better
170            use of library functionality.
171    
172    CM:
173            Bugfix: parse-errors in init group (system/smlnj/init/init.cmi)
174            are no longer silent.
175    
176    CKIT:
177            Fixed mismatched uses of Int32 and LargeInt.  I always decided
178            in favor of LargeInt -- which is now the same as IntInf.
179            CKIT-knowledgable people should check whether this is what's
180            intended and otherwise change things back to using Int32 or
181            FixedInt.
182    
183    Throughout the code:
184            Started using IntInf.int literals and built-in operations
185            (e.g., comparison with 0) where this seems appropriate.
186    
187    
188    ----------------------------------------------------------------------
189    Name: Dave MacQueen (dbm@cs.uchicago.edu)
190    Date: 2003/08/13 11:36:00 CDT
191    Tag: dbm-20030813-mcz-merge1
192    Description:
193    
194    Merging changes from the mcz-branch development branch into trunk.
195    These changes involve replacement of the emulated old prettyprinter
196    interface with direct use of the SML/NJ Lib PP library, and fixing
197    of a couple of bugs (895, 1186) relating to error messages.  A new
198    prettyprinter for ast datatypes (Elaborator/print/ppast.{sig,sml})
199    has been added.
200    
201    ----------------------------------------------------------------------
202    Name: Matthias Blume (blume (at) tti - c (dot) org)
203    Date: 2003/08/11 15:45:00 CDT
204    Tag: blume-20030811-windows
205    Description:
206    
207    Version number bumped to 110.42.9.  NEW BOOTFILES!!!
208    
209        http://smlnj.cs.uchicago.edu/dist/working/110.42.9/
210    
211    This patch restores SML/NJ's ability to run under win32.  There are a
212    number of changes, including fixes for several bugs that had gone
213    unnoticed until now:
214    
215      - uname "CYGWIN_NT*" is recognized as win32 (This is relevant only when
216        trying to run the win32 version from within cygwin.)
217    
218      - There are a number of simple .bat scripts that substitute for their
219        corresponding Unix shell-scripts.  (See below.)
220    
221      - The internals of ml-build have been modified slightly.  The main
222        difference is that instead of calling ".link-sml" (or link-sml.bat)
223        using OS.Process.system, the ML process delegates this task back
224        to the script.  Otherwise problems arise in mixed environments such
225        as Cygwin where scripts look and work like Unix scripts, but
226        where OS.Process.system cannot run them.
227    
228      - In CM, the srcpath pickler used native pathname syntax -- which
229        is incorrect in the case of cross-compilation.  The new pickle format
230        is independent of platform-specific naming conventions.
231    
232      - Path configuration files (such as lib/pathconfig) can now choose
233        between native and standard syntax.  Placing a line of the form
234    
235            standard!
236    
237        into the file causes all subsequent paths to be interpreted using
238        CM standard pathname syntax (= Unix conventions); a line
239    
240            native!
241    
242        switches back to native style.  This was needed so that
243        path config files can be written portably, see src/system/pathconfig.
244    
245      - Runtime system:
246    
247          - win32-filesys.c:  get_file_time and set_file_time now
248            access modification time, not creation time.
249    
250          - I/O code made aware of new array representation.
251    
252          - Bug fixes in X86.prim.masm.
253    
254       - src/system/makeml made aware of win32. (For use under cygwin
255            and other Unix-environments for windows.)
256    
257       - In Basis, fixed off-by-one error in win32-io.sml (function vecF)
258         which caused BinIO.inputAll to fail consistently.
259    
260    .bat scripts:
261    
262       Windows .bat scripts assume that SMLNJ_HOME is defined.
263    
264       - sml.bat, ml-yacc.bat, ml-lex.bat:  Driver scripts for standalone
265         applications (sml, ml-yacc, ml-lex).
266       - ml-build.bat: analogous to ml-build.
267       - config\install.bat:  Analogous to config/install.sh.  This requires
268         that SMLNJ_HOME is set and that Microsoft Visual C is ready to use.
269         (nmake etc. must be on the path, and vcvars32 must have been run.)
270         Moreover, sources for ml-lex and ml-yacc need to exist under src,
271         and the bootfile hierarchy must have been unpacked under
272         sml.boot.x86-win32.
273         The script is very primitive and does a poor job at error checking.
274         It only installs the base system, ml-lex, and ml-yacc.  No other
275         libraries are being installed (i.e., you get only those that
276         are part of the compiler.)
277       - link-sml.bat:  analogous to .link-sml, but not currently used
278    
279    Unrelated bug fixes:
280    
281      - ml-nlffigen now exports structures ST_* corresponding to incomplete
282        types.
283      - Added getDevice to PP/src/pp-debug-fn.sml.  (Would not compile
284        otherwise.)
285    
286    ----------------------------------------------------------------------
287    Name: Dave MacQueen (macqueen@cs.uchicago.edu)
288    Date: 2003/06/17
289    Tag: macqueen-20030617-bug895
290    Description:
291    
292    Modified compiler/Elaborator/print/pptype.sml to fix bug 895.
293    Tag will be used for new development branch (mcz-branch) for
294    use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago.
295    
296    ----------------------------------------------------------------------
297    Name: Matthias Blume (blume (at) tti - c (dot) org)
298    Date: 2003/05/27 16:55:00 CDT
299    Tag: blume-20030527-polyeq
300    Description:
301    
302    Tried to eliminated most cases of polymorphic equality.
303    
304    ----------------------------------------------------------------------
305    Name: Matthias Blume (blume (at) tti - c (dot) org)
306    Date: 2003/05/21 17:45:00 CDT
307    Tag: blume-20030517-complete
308    Description:
309    
310    Two changes:
311    
312      1. Added a flag for controlling whether non-exhaustive bindings will
313         be treated as errors (default is false).
314      2. Cleaned up the *entire* source tree so that CMB.make goes through
315         without a single non-exhaustive match- or bind warning.
316    
317    ----------------------------------------------------------------------
318    Name: Matthias Blume (blume (at) tti - c (dot) org)
319    Date: 2003/05/17 10:20:00 CDT
320    Tag: blume-20030517-absyn
321    Description:
322    
323    1. Added cases for IF, WHILE, ANDALSO, and ORELSE to Absyn.
324    
325       This mainly affects the quality of error messages.  However, some
326       of the code is now more straightforward than before. (Treatment of
327       the above four constructs in translate.sml is much simpler than
328       the "macro-expansion" that was going on before.  Plus, the mach-
329       compiler no longer gets invoked just to be able to compile an
330       if-expression.)
331    
332    2. The ErrorMsg.Error exception is now caught and absorbed by the
333       interactive loop.
334    
335    ----------------------------------------------------------------------
336    Name: Allen Leung
337    Date: 2003/05/16 13:05:00 CDT
338    Tag: leunga-20030516-cygwin-runtime
339    Description:
340    
341        Ported the runtime system to cygwin, which uses the unix
342    x86-unix bin files.  Missing/buggy features:
343    
344       o getnetbyname, getnetbyaddr: these functions seem to be missing in
345         the Cygwin library.
346       o Ctrl-C handling may be flaky.
347       o Windows system calls and Windows I/O are not supported.
348    
349       A new set of binfiles is located at:
350    
351         http://www.dorsai.org/~leunga/boot.x86-unix.tgz
352    
353       This is only needed for bootstrapping the cygwin version of smlnj.
354       Other x86 versions can use the existing binfiles.
355    
356    ----------------------------------------------------------------------
357    Name: Matthias Blume
358    Date: 2003/04/08 15:42:00 CDT
359    Tag: blume-20030408-listpair
360    Description:
361    
362    1. Added a target 'mlrisc' to installer.
363    
364    2. Added missing elements to structure ListPair.
365    
366    ----------------------------------------------------------------------
367    Name: Allen Leung
368    Date: 2003/01/07 10:40:00 EST
369    Tag: leunga-20030107-int-rem
370    Description:
371    
372    Fixed a bug in Int.rem(x,y) where y is a power of 2 on x86.
373    The arguments to the SUBL instruction were swapped.
374    
375    ----------------------------------------------------------------------
376    Name: Matthias Blume
377    Date: 2002/12/12 16:25:00 EST
378    Tag: blume-20021212-risc-ra
379    Description:
380    
381    Fixed a serious bug in the rewrite code for FP spilling/reloading that
382    sent the RA into an infinite loop when floating point registers get
383    spilled.  (Because of this bug, e.g., nucleic stopped compiling between
384    110.37 and 110.38.)
385    There was another set of potential problems related to the handling of
386    MLRISC annotations (but those did not yet cause real problems, apparently).
387    
388    ----------------------------------------------------------------------
389    Name: Matthias Blume
390    Date: 2002/12/06 22:40:00 EST
391    Tag: blume-20021206-cm-fileid
392    Description:
393    
394    Added a call of SrcPath.sync at the beginning of Parse.parse (in CM).
395    This fixes the problem of CM getting confused by files that suddenly
396    change their identity (e.g., by getting unlinked and recreated by some
397    text editor such as vi).  There might be a better/cheaper/cleaner way
398    of doing this, but for now this will have to do.
399    
400    ----------------------------------------------------------------------
401    Name: Matthias Blume
402    Date: 2002/10/28 09:50:00 EST
403    Tag: blume-20021028-typecheck
404    Description:
405    
406    Exported structure Typecheck from $smlnj/viscomp/core.cm.
407    
408    ----------------------------------------------------------------------
409    Name: Matthias Blume
410    Date: 2002/10/17 09:10:00 EDT
411    Tag: Release_110_42
412    Description:
413    
414    In good old tradition, there has been a slight hiccup so that we have
415    to patch 110.42 after the fact.   The old release tag has been replaced
416    (see below).
417    
418    The change solves a problem with two competing approaches the
419    configuration problem regarding MacOS 10.1 vs. MacOS 10.2 which got in
420    each other's way.
421    
422    This change only affects the runtime system code and the installer script.
423    (No new bootfiles.)
424    
425    ----------------------------------------------------------------------
426    Name: Matthias Blume
427    Date: 2002/10/16 12:00:00 EDT
428    Tag: Release_110_42_removed
429    Description:
430    
431    New working release.  New bootfiles.
432    
433    ----------------------------------------------------------------------
434    Name: Matthias Blume
435    Date: 2002/10/10 13:10:00 EDT
436    Tag: blume-20021010-ppc-divs
437    Description:
438    
439    The mltree operator DIVS must be implemented with an overflow check on
440    the PPC because the hardware indicates divide-by-zero using "overflow" as
441    well.
442    
443    ----------------------------------------------------------------------
444    Name: Matthias Blume
445    Date: 2002/07/23 11:45:00
446    Tag: blume-20020723-smlnj-home
447    Description:
448    
449    Sml now senses the SMLNJ_HOME environment variable.  If this is set,
450    then the bin dir is assumed to be in $SMLNJ_HOME/bin and (unless
451    CM_PATHCONFIG is also set), the path configuration file is assumed
452    to be in $SMLNJ_HOME/lib/pathconfig.  This way one can easily move
453    the entire tree to some other place and everything will "just work".
454    
455    (Companion commands such as ml-build and ml-makedepend also sense this
456    variable.)
457    
458    ----------------------------------------------------------------------
459    Name: Matthias Blume
460    Date: 2002/07/12 21:19:00 EDT
461    Tag: blume-20020712-liveness
462    Description:
463    
464    Exported two useful "step" functions from liveness module (MLRISC).
465    
466    ----------------------------------------------------------------------
467    Name: Matthias Blume
468    Date: 2002/07/05 16:00 EDT
469    Tag: Release_110_41
470    Description:
471    
472    New working release.  New bootfiles.
473    
474    ----------------------------------------------------------------------
475    Name: Matthias Blume
476    Date: 2002/07/05 10:25:00 EDT
477    Tag: blume-20020705-btimp
478    Description:
479    
480    Exported structure BTImp from $smlnj/viscomp/debugprof.cm so that
481    other clients can set up backtracing support.
482    
483    ----------------------------------------------------------------------
484    Name: Matthias Blume
485    Date: 2002/06/25 17:23:00 EDT
486    Tag: blume-20020625-fpmax
487    Description:
488    
489    Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point
490    case.  (The sense of the isNaN test was reversed -- which made min and
491    max always return their first argument.)
492    
493    ----------------------------------------------------------------------
494    Name: Matthias Blume
495    Date: 2002/06/11
496    Tag: blume-20020611-unixpath
497    Description:
498    
499    Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch.
500    
501    ----------------------------------------------------------------------
502    Name: Matthias Blume
503    Date: 2002/06/10 16:35:00 EDT
504    Tag: blume-20020610-ieeereal
505    Description:
506    
507    I back-ported my implementation of IEEEReal.fromString from the
508    idlbasis-devel branch so that we can test it.
509    
510    Another small change is that ppDec tries to give more information
511    than just "<sig>" in the case of functors.  However, this code is
512    broken in some mysterious way if the functor's body's signature
513    has not been declared by ascription but gets inferred from the
514    implementation.  This needs fixing...
515    
516    ----------------------------------------------------------------------
517    Name: Matthias Blume
518    Date: 2002/05/31
519    Tag: blume-20020531-btrace-mode
520    Description:
521    
522    Resurrected SMLofNJ.Internals.BTrace.mode.  (It accidentally fell by
523    the wayside when I switched over to using Controls everywhere.)
524    
525    ----------------------------------------------------------------------
526    Name: Lal George
527    Date: 2002/05/23 12:21:40 EDT
528    Tag: george-20020523-visual-labels
529    Description:
530    
531    Labels are now displayed in the graphical output to make
532    the fall-through and target blocks obvious.
533    
534    ----------------------------------------------------------------------
535    Name: Matthias Blume
536    Date: 2002/05/22 11:03:00 EDT
537    Tag: blume-20020522-shrink
538    Description:
539    
540    John tweaked yesterday's fix for 1131 to handle an out-of-memory
541    situation that comes up when allocating huge arrays.
542    
543    ----------------------------------------------------------------------
544    Name: Matthias Blume
545    Date: 2002/05/21 16:00:00 EDT
546    Tag: Release_110_40
547    Description:
548    
549    New working release (110.40).  New bootfiles.
550    
551    [Also: John Reppy fixed GC bug 1131.]
552    
553    ----------------------------------------------------------------------
554    Name: Matthias Blume
555    Date: 2002/05/21 12:35:00 EDT
556    Tag: blume-20020521-cmdoc
557    Description:
558    
559    CM documentation update.
560    
561    ----------------------------------------------------------------------
562    Name: Matthias Blume
563    Date: 2002/05/21 10:55:00 EDT
564    Tag: blume-20020521-misc
565    Description:
566    
567    - John tweaked runtime to be silent on heap export (except when
568      GC messages are on).
569    - I added a few more things (cross-compiling versions of CMB) to
570      config/preloads (as suggestions).
571    
572    ----------------------------------------------------------------------
573    Name: Matthias Blume
574    Date: 2002/05/20 22:25:00 EDT
575    Tag: blume-20020520-controls
576    Description:
577    
578    - Added ControlUtil structure to control-lib.cm.
579    - Use it throughout.
580    - Used Controls facility to define MLRISC controls (as opposed to
581      registering MLRISC control ref cells with Controls after the fact)
582    - Fixed messed-up controls priorities.
583    
584    * Removed again all the stuff from config/preloads that one wouldn't
585      be able to preload at the time the initial heap image is built.
586      (Many libraries, e.g., CML, do not exist yet at this time.  The
587       only libraries that can be preloaded via config/preloads are those
588       that come bundled with the bootfiles.)
589    
590    ----------------------------------------------------------------------
591    Name: Matthias Blume
592    Date: 2002/05/20 10:59:00 EDT
593    Tag: blume-20020520-preloads
594    Description:
595    
596    Added a lot of commented-out suggestions for things to be included
597    in config/preloads.
598    
599    ----------------------------------------------------------------------
600    Name: Allen Leung
601    Date: 2002/05/18 14:20:00 EDT
602    Tag: leunga-20020518-mdl
603    Description:
604    
605    o Made the mdl tool stuff compile and run again.
606    o I've disabled all the stuff that depends on RTL specifications; they
607      are all badly broken anyway.
608    
609    ----------------------------------------------------------------------
610    Name: Matthias Blume
611    Date: 2002/05/17 16:49:00 EDT
612    Tag: blume-20020517-controls
613    Description:
614    
615    0. John Reppy made several modifications to the SML/NJ library.
616       In particular, there is a shiny new controls-lib.cm.
617    
618    1. Pushed new controls interface through compiler so that everything
619       compiles again.
620    
621    2. Added FormatComb and FORMAT_COMB to the CML version of the
622       SML/NJ library (so that CML compiles again).
623    
624    3. Modified init scripts because XXX_DEFAULT environment variables
625       are no longer with us.  (Boot-time initialization is now done
626       using the same environment variables that are also used for
627       startup-time initialization of controls.)
628    
629    ----------------------------------------------------------------------
630    Name: Lal George
631    Date: 2002/05/15 09:20:10 EDT
632    Tag: george-20020515-pseudo-op-decls
633    Description:
634    
635            All pseudo-ops emitted before the first segment declaration
636    such as TEXT, DATA, and BSS directives are assumed to be global
637    declarations and are emitted first in the assembly file. This is
638    useful in a number of situations where one has pseudo-ops that are not
639    specific to any segment, and also works around the constraint that one
640    cannot have client pseudo-ops in the TEXT segment.
641    
642            Because no segment is associated with these declarations it is
643    an error to allocate any space or objects before the first segment
644    directive and an exception will be raised. However, we cannot make
645    this check for client pseudo-ops.
646    
647            These top level declarations are a field in the CFG graph_info.
648    In theory you can continue to add to this field after the CFG has been
649    built -- provided you know what you are doing;-)
650    
651    ----------------------------------------------------------------------
652    Name: Matthias Blume
653    Date: 2002/05/13 16:40:00 EDT
654    Tag: blume-20020513-pp-etc
655    Description:
656    
657    A few minor bugfixes:
658    
659      - Stopgap measure for bug recently reported by Elsa Gunter (ppDec).
660        (Bogus printouts for redefined bindings still occur.  Compiler
661        bug should no longer occur now.  We need to redo the prettyprinter
662        from scratch.)
663    
664      - CM pathname printer now also adds escape sequences for ( and )
665    
666      - commend and docu fixes for ml-nlffi
667    
668    ----------------------------------------------------------------------
669    Name: Matthias Blume
670    Date: 2002/05/10 16:40:00 EDT
671    Tag: blume-20020510-erg-textio
672    Description:
673    
674    Applied the following bugfix provided by Emden Gansner:
675    
676        Output is corrupted when outputSubstr is used rather than output.
677    
678        The problem occurs when a substring
679    
680            ss = (s, dataStart, dataLen)
681    
682        where dataStart > 0, fills a stream buffer with avail bytes left.
683        avail bytes of s, starting at index dataStart, are copied into the
684        buffer, the buffer is flushed, and then the remaining dataLen-avail
685        bytes of ss are copied into the beginning of the buffer. Instead of
686        starting this copy at index dataStart+avail in s, the current code
687        starts the copy at index avail.
688    
689        Fix:
690        In text-io-fn.sml, change line 695 from
691             val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0)
692        to
693             val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0)
694    
695    ----------------------------------------------------------------------
696    Name: Matthias Blume
697    Date: 2002/04/12 13:55:00 EDT
698    Tag: blume-20020412-assyntax
699    Description:
700    
701    1. Grabbed newer assyntax.h from the XFree86 project.
702    2. Fiddled with how to compile X86.prim.asm without warnings.
703    3. (Very) Minor cleanup in CM.
704    
705    ----------------------------------------------------------------------
706    Name: Matthias Blume
707    Date: 2002/04/01 (no joke!) 17:07:00 EST
708    Tag: blume-20020401-x86div
709    Description:
710    
711    Added full support for div/mod/rem/quot on the x86, using the machine
712    instruction's two results (without clumsily recomputing the remainder)
713    directly where appropriate.
714    
715    Some more extensive power-of-two support was added to the x86 instruction
716    selector (avoiding expensive divs, mods, and muls where they can be
717    replaced with cheaper shifts and masks).  However, this sort of thing
718    ought to be done earlier, e.g., within the CPS optimizer so that
719    all architectures benefit from it.
720    
721    The compiler compiles to a fixed point, but changes might be somewhat
722    fragile nevertheless.  Please, report any strange things that you might
723    see wrt. div/mod/quot/rem...
724    
725    ----------------------------------------------------------------------
726    Name: Matthias Blume
727    Date: 2002/03/29 17:22:00
728    Tag: blume-20020329-div
729    Description:
730    
731    Fixed my broken div/mod logic.  Unfortunately, this means that the
732    inline code for div/mod now has one more comparison than before.
733    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
734    The problem was with quotient = 0, because that alone does not tell
735    us which way the rounding went.  One then has to look at whether
736    remainder and divisor have the same sign...  :(
737    
738    Anyway, I replaced the bootfiles with fresh ones...
739    
740    ----------------------------------------------------------------------
741    Name: Matthias Blume
742    Date: 2002/03/29 14:10:00 EST
743    Tag: blume-20020329-inlprims
744    Description:
745    
746    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
747    
748    Primops have changed. This means that the bin/boot-file formats have
749    changed as well.
750    
751    To make sure that there is no confusion, I made a new version.
752    
753    
754    CHANGES:
755    
756    * removed REMT from mltree (remainder should never overflow).
757    
758    * added primops to deal with divisions of all flavors to the frontend
759    
760    * handled these primops all the way through so they map to their respective
761      MLRISC support
762    
763    * used these primops in the implementation of Int, Int32, Word, Word32
764    
765    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
766    
767    * parameterized INLMIN, INLMAX, and INLABS by a numkind
768    
769    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
770      floating point
771    
772    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
773      and Real (but Real.abs maps to a separate floating-point-only primop)
774    
775    
776    TODO items:
777    
778    * Hacked Alpha32 instruction selection, disabling the selection of REMx
779      instructions because the machine instruction encoder cannot handle
780      them.  (Hppa, PPC, and Sparc instruction selection did not handle
781      REM in the first place, and REM is supported by the x86 machine coder.)
782    
783    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
784      selection phase.  (The two can be streamlined because the hardware
785      delivers both quotient and remainder at the same time anyway.)
786    
787    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
788      (Currently the behavior is inconsistent both across architectures and
789      wrt. the draft Basis spec.)
790    
791    * Word8 should eventually be handled natively, too.
792    
793    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
794      as if there currently is no execution path that could trigger it in
795      SML/NJ.  (The assumptions underlying functions arith and promotable do not
796      hold for things like multiplication and division.)
797    
798    ----------------------------------------------------------------------
799    Name: Matthias Blume
800    Date: 2002/03/27 16:27:00 EST
801    Tag: blume-20020327-mlrisc-divisions
802    Description:
803    
804    Added support for all four division operations (ML's div, mod, quot,
805    and rem) to MLRISC.  In the course of doing so, I also rationalized
806    the naming (no more annoying switch-around of DIV and QUOT), by
807    parameterizing the operation by div_rounding_mode (which can be either
808    DIV_TO_ZERO or DIV_TO_NEGINF).
809    
810    The generic MLTreeGen functor takes care of compiling all four
811    operations down to only round-to-zero div.
812    
813    Missing pieces:
814    
815      * Doing something smarter than relying on MLTreeGen on architectures
816        like, e.g., the x86 where hardware division delivers both quotient and
817        remainder at the same time.  With this, the implementation of the
818        round-to-neginf operations could be further streamlined.
819    
820      * Remove inlining support for div/mod/rem from the frontend and replace it
821        with primops that get carried through to the backend.  Do this for all
822        int and word types.
823    
824    ----------------------------------------------------------------------
825    Name: Matthias Blume
826    Date: 2002/03/25 17:25:00 EST
827    Tag: blume-20020325-divmod
828    Description:
829    
830    I improved (hopefully without breaking them) the implementation of Int.div,
831    Int.mod, and Int.rem.   For this, the code in translate.sml now takes
832    advantage of the following observations:
833    
834      Let  q = x quot y      r = x rem y
835           d = x div  y      m = x mod y
836    
837    where "quot" is the round-to-zero version of integer division that
838    hardware usually provides.  Then we have:
839    
840         r = x - q * y        where neither the * nor the - will overflow
841         d = if q >= 0 orelse x = q * y then q else q - 1
842                              where neither the * nor the - will overflow
843         m = if q >= 0 orelse r = 0 then r else r + y
844                              where the + will not overflow
845    
846    This results in substantial simplification of the generated code.
847    The following table shows the number of CFG nodes and edges generated
848    for
849            fun f (x, y) = x OPER y
850            (* with OPER \in div, mod, quot, rem *)
851    
852    
853        OPER | nodes(old) | edges(old) | nodes(new) | edges(new)
854        --------------------------------------------------------
855         div |         24 |         39 |         12 |         16
856         mod |         41 |         71 |         12 |         16
857        quot |          8 |         10 |          8 |         10
858         rem |         10 |         14 |          8 |         10
859    
860    
861    ----------------------------------------------------------------------
862    Name: Matthias Blume
863    Date: 2002/03/25 22:06:00 EST
864    Tag: blume-20020325-cprotobug
865    Description:
866    
867    Fixed a bug in cproto (c prototype decoder).
868    
869    ----------------------------------------------------------------------
870    Name: Matthias Blume
871    Date: 2002/03/25 16:00:00 EST
872    Tag: blume-20020325-raw-primops
873    Description:
874    
875    I did some cleanup to Allen's new primop code and
876    replaced yesterday's bootfiles with new ones.
877    (But they are stored in the same place.)
878    
879    ----------------------------------------------------------------------
880    Name: Matthias Blume
881    Date: 2002/03/24 22:40:00 EST
882    Tag: blume-20020324-bootfiles
883    Description:
884    
885    Made the bootfiles that Allen asked for.
886    
887    ----------------------------------------------------------------------
888    Name: Allen Leung
889    Date: 2002/03/23 15:50:00 EST
890    Tag: leunga-20020323-flint-cps-rcc-primops
891    Description:
892    
893      1. Changes to FLINT primops:
894    
895        (* make a call to a C-function;
896         * The primop carries C function prototype information and specifies
897         * which of its (ML-) arguments are floating point. C prototype
898         * information is for use by the backend, ML information is for
899         * use by the CPS converter. *)
900      | RAW_CCALL of { c_proto: CTypes.c_proto,
901                       ml_args: ccall_type list,
902                       ml_res_opt: ccall_type option,
903                       reentrant : bool
904                     } option
905       (* Allocate uninitialized storage on the heap.
906        * The record is meant to hold short-lived C objects, i.e., they
907        * are not ML pointers.  With the tag, the representation is
908        * the same as RECORD with tag tag_raw32 (sz=4), or tag_fblock (sz=8)
909        *)
910      | RAW_RECORD of {tag:bool,sz:int}
911      and ccall_type = CCALL_INT32 | CCALL_REAL64 | CCALL_ML_PTR
912    
913      2.  These CPS primops are now overloaded:
914    
915           rawload of {kind:numkind}
916           rawstore of {kind:numkind}
917    
918          The one argument form is:
919    
920             rawload {kind} address
921    
922          The two argument form is:
923    
924             rawload {kind} [ml object, byte-offset]
925    
926      3. RAW_CCALL/RCC now takes two extra arguments:
927    
928         a. The first is whether the C call is reentrant, i.e., whether
929            ML state should be saved and restored.
930         b. The second argument is a string argument specifying the name of
931            library and the C function.
932    
933         These things are currently not handled in the code generator, yet.
934    
935      4. In CProto,
936    
937         An encoding type of "bool" means "ml object" and is mapped into
938         C prototype of PTR.  Note that "bool" is different than "string",
939         even though "string" is also mapped into PTR, because "bool"
940         is assigned an CPS type of BOGt, while "string" is assigned INT32t.
941    
942      5. Pickler/unpicker
943    
944         Changed to handle RAW_RECORD and newest RAW_CCALL
945    
946      6. MLRiscGen,
947    
948         1. Changed to handle the new rawload/rawstore/rawrecord operators.
949         2. Code for handling C Calls has been moved to a new module CPSCCalls,
950            in the file CodeGen/cpscompile/cps-c-calls.sml
951    
952      7. Added the conditional move operator
953    
954             condmove of branch
955    
956         to cps.  Generation of this is still buggy so it is currently
957         disabled.
958    
959    ----------------------------------------------------------------------
960    Name: Lal George
961    Date: 2002/03/22 14:18:25 EST
962    Tag: george-20020322-cps-branch-prob
963    Description:
964    
965    Implemented the Ball-Larus branch prediction-heuristics, and
966    incorporated graphical viewers for control flow graphs.
967    
968    Ball-Larus Heuristics:
969    ---------------------
970    See the file compiler/CodeGen/cpscompile/cpsBranchProb.sml.
971    
972    By design it uses the Dempster-Shafer theory for combining
973    probabilities.  For example, in the function:
974    
975        fun f(n,acc) = if n = 0 then acc else f(n-1, n*acc)
976    
977    the ball-larus heuristics predicts that the n=0 is unlikely
978    (OH-heuristic), and the 'then' branch is unlikely because of the
979    RH-heuristic -- giving the 'then' branch an even lower combined
980    probability using the Dempster-Shafer theory.
981    
982    Finally, John Reppy's loop analysis in MLRISC, further lowers the
983    probability of the 'then' branch because of the loop in the else
984    branch.
985    
986    
987    Graphical Viewing:
988    ------------------
989    I merely plugged in Allen's graphical viewers into the compiler. The
990    additional code is not much. At the top level, saying:
991    
992            Control.MLRISC.getFlag "cfg-graphical-view" := true;
993    
994    will display the graphical view of the control flow graph just before
995    back-patching.  daVinci must be in your path for this to work. If
996    daVinci is not available, then the default viewer can be changed
997    using:
998    
999            Control.MLRISC.getString "viewer"
1000    
1001    which can be set to "dot" or "vcg" for the corresponding viewers. Of
1002    course, these viewers must be in your path.
1003    
1004    The above will display the compilation unit at the level of clusters,
1005    many of which are small, boring, and un-interesting. Also setting:
1006    
1007            Control.MLRISC.getInt "cfg-graphical-view_size"
1008    
1009    will display clusters that are larger than the value set by the above.
1010    
1011    
1012    ----------------------------------------------------------------------
1013    Name: Matthias Blume
1014    Date: 2002/03/21 22:20:00 EST
1015    Tag: blume-20020321-kmp-bugfix
1016    Description:
1017    
1018    Changed the interface to the KMP routine in PreString and fixed
1019    a minor bug in one place where it was used.
1020    
1021    ----------------------------------------------------------------------
1022    Name: Allen Leung
1023    Date: 2002/03/21 20:30:00 EST
1024    Tag: leunga-20020321-cfg
1025    Description:
1026    
1027      Fixed a potential problem in cfg edge splitting.
1028    
1029    ----------------------------------------------------------------------
1030    Name: Allen Leung
1031    Date: 2002/03/21 17:15:00 EST
1032    Tag: leunga-20020321-x86-fp-cfg
1033    Description:
1034    
1035      1. Recoded the buggy parts of x86-fp.
1036    
1037         a. All the block reordering code has been removed.
1038            We now depend on the block placement phases to do this work.
1039    
1040         b. Critical edge splitting code has been simplified and moved into the
1041            CFG modules, as where they belong.
1042    
1043         Both of these were quite buggy and complex.  The code is now much, much
1044         simpler.
1045    
1046      2. X86 backend.
1047    
1048         a. Added instructions for 64-bit support.  Instruction selection for
1049            64-bit has not been committed, however, since that
1050            requires changes to MLTREE which haven't been approved by
1051            Lal and John.
1052    
1053         b. Added support for FUCOMI and FUCOMIP when generating code for
1054            PentiumPro and above.  We only generate these instructions in
1055            the fast-fp mode.
1056    
1057         c. Added cases for JP and JNP in X86FreqProps.
1058    
1059      3. CFG
1060    
1061         CFG now has a bunch of methods for edge splitting and merging.
1062    
1063      4. Machine description.
1064    
1065         John's simplification of MLTREE_BASIS.fcond broke a few machine
1066         description things:
1067    
1068         rtl-build.{sig,sml} and hppa.mdl fixed.
1069    
1070         NOTE: the machine description stuff in the repository is still broken.
1071               Again, I can't put my fixes in because that involves
1072               changes to MLTREE.
1073    
1074    ----------------------------------------------------------------------
1075    Name: Matthias Blume
1076    Date: 2002/03/20 15:55:00 EST
1077    Tag: blume-20020320-kmp
1078    Description:
1079    
1080    Implemented Knuth-Morris-Pratt string matching in PreString and used
1081    it for String.isSubstring, Substring.isSubstring, and
1082    Substring.position.
1083    
1084    (Might need some stress-testing.  Simple examples worked fine.)
1085    
1086    ----------------------------------------------------------------------
1087    Name: Matthias Blume
1088    Date: 2002/03/19 16:37:00 EST
1089    Tag: blume-20020319-witnesses
1090    Description:
1091    
1092    Added a structure C.W and functions convert/Ptr.convert to ml-nlffi-lib.
1093    
1094    This implements a generic mechanism for changing constness qualifiers
1095    anywhere within big C types without resorting to outright "casts".
1096    (So far, functions such as C.rw/C.ro or C.Ptr.rw/C.Ptr.ro only let you
1097    modify the constness at the outermost level.)
1098    The implementation of "convert" is based on the idea of "witness"
1099    values -- values that are not used by the operation but whose types
1100    "testify" to their applicability.  On the implementation side, "convert"
1101    is simply a projection (returning its second curried argument).  With
1102    cross-module inlining, it should not result in any machine code being
1103    generated.
1104    
1105    ----------------------------------------------------------------------
1106    Name: Matthias Blume
1107    Date: 2002/03/15 16:40:00 EST
1108    Tag: blume-20020315-basis
1109    Description:
1110    
1111    Provided (preliminary?) implementations for
1112    
1113      {String,Substring}.{concatWith,isSuffix,isSubstring}
1114    
1115    and
1116    
1117      Substring.full
1118    
1119    Those are in the Basis spec but they were missing in SML/NJ.
1120    
1121    ----------------------------------------------------------------------
1122    Name: Matthias Blume
1123    Date: 2002/03/14 21:30:00 EST
1124    Tag: blume-20020314-controls
1125    Description:
1126    
1127    Controls:
1128    ---------
1129    
1130    1. Factored out the recently-added Controls : CONTROLS stuff and put
1131       it into its own library $/controls-lib.cm.  The source tree for
1132       this is under src/smlnj-lib/Controls.
1133    
1134    2. Changed the names of types and functions in this interface, so they
1135       make a bit more "sense":
1136    
1137          module -> registry
1138          'a registry -> 'a group
1139    
1140    3. The interface now deals in ref cells only.  The getter/setter interface
1141       is (mostly) gone.
1142    
1143    4. Added a function that lets one register an already-existing ref cell.
1144    
1145    5. Made the corresponding modifications to the rest of the code so that
1146       everything compiles again.
1147    
1148    6. Changed the implementation of Controls.MLRISC back to something closer
1149       to the original.  In particular, this module (and therefore MLRISC)
1150       does not depend on Controls.  There now is some link-time code in
1151       int-sys.sml that registers the MLRISC controls with the Controls
1152       module.
1153    
1154    CM:
1155    ---
1156    
1157      * One can now specify the lambda-split aggressiveness in init.cmi.
1158    
1159    ----------------------------------------------------------------------
1160    Name: Allen Leung
1161    Date: 2002/03/13 17:30:00 EST
1162    Tag: leunga-20020313-x86-fp-unary
1163    Description:
1164    
1165    Bug fix for:
1166    
1167    > leunga@weaselbane:~/Yale/tmp/sml-dist{21} bin/sml
1168    > Standard ML of New Jersey v110.39.1 [FLINT v1.5], March 08, 2002
1169    > - fun f(x,(y,z)) = Real.~ y;
1170    > [autoloading]
1171    > [autoloading done]
1172    >       fchsl   (%eax), 184(%esp)
1173    > Error: MLRisc bug: X86MCEmitter.emitInstr
1174    >
1175    > uncaught exception Error
1176    >   raised at: ../MLRISC/control/mlriscErrormsg.sml:16.14-16.19
1177    
1178    The problem was that the code generator did not generate any fp registers
1179    in this case, and the ra didn't know that it needed to run the X86FP phase to
1180    translate the pseudo fp instruction.   This only happened with unary fp
1181    operators in certain situations.
1182    
1183    ----------------------------------------------------------------------
1184    Name: Matthias Blume
1185    Date: 2002/03/13 14:00:00 EST
1186    Tag: blume-20020313-overload-etc
1187    Description:
1188    
1189    1. Added _overload as a synonym for overload for backward compatibility.
1190       (Control.overloadKW must be true for either version to be accepted.)
1191    
1192    2. Fixed bug in install script that caused more things to be installed
1193       than what was requested in config/targets.
1194    
1195    3. Made CM aware of the (_)overload construct so that autoloading
1196       works.
1197    
1198    ----------------------------------------------------------------------
1199    Name: Matthias Blume
1200    Date: 2002/03/12 22:03:00 EST
1201    Tag: blume-20020312-url
1202    Description:
1203    
1204    Forgot to update BOOT and srcarchiveurl.
1205    
1206    ----------------------------------------------------------------------
1207    Name: Matthias Blume
1208    Date: 2002/03/12 17:30:00 EST
1209    Tag: blume-20020312-version110392
1210    Description:
1211    
1212    Yet another version number bump (because of small changes to the
1213    binfile format).  Version number is now 110.39.2.  NEW BOOTFILES!
1214    
1215    Changes:
1216    
1217      The new pid generation scheme described a few weeks ago was overly
1218      complicated.  I implemented a new mechanism that is simpler and
1219      provides a bit more "stability":  Once CM has seen a compilation
1220      unit, it keeps its identity constant (as long as you do not delete
1221      those crucial CM/GUID/* files).  This means that when you change
1222      an interface, compile, then go back to the old interface, and
1223      compile again, you arrive at the original pid.
1224    
1225      There now also is a mechanism that instructs CM to use the plain
1226      environment hash as a module's pid (effectively making its GUID
1227      the empty string).  For this, "noguid" must be specified as an
1228      option to the .sml file in question within its .cm file.
1229      This is most useful for code that is being generated by tools such
1230      as ml-nlffigen (because during development programmers tend to
1231      erase the tool's entire output directory tree including CM's cached
1232      GUIDs).  "noguid" is somewhat dangerous (since it can be used to locally
1233      revert to the old, broken behavior of SML/NJ, but in specific cases
1234      where there is no danger of interface confusion, its use is ok
1235      (I think).
1236    
1237      ml-nlffigen by default generates "noguid" annotations.  They can be
1238      turned off by specifying -guid in its command line.
1239    
1240    ----------------------------------------------------------------------
1241    Name: Lal George
1242    Date: 2002/03/12 12 14:42:36 EST
1243    Tag: george-20020312-frequency-computation
1244    Description:
1245    
1246    Integrated jump chaining and static block frequency into the
1247    compiler. More details and numbers later.
1248    
1249    ----------------------------------------------------------------------
1250    Name: Lal George
1251    Date: 2002/03/11 11 22:38:53 EST
1252    Tag: george-20020311-jump-chain-elim
1253    Description:
1254    
1255    Tested the jump chain elimination on all architectures (except the
1256    hppa).  This is on by default right now and is profitable for the
1257    alpha and x86, however, it may not be profitable for the sparc and ppc
1258    when compiling the compiler.
1259    
1260    The gc test will typically jump to a label at the end of the cluster,
1261    where there is another jump to an external cluster containing the actual
1262    code to invoke gc. This is to allow factoring of common gc invocation
1263    sequences. That is to say, we generate:
1264    
1265            f:
1266               testgc
1267               ja   L1      % jump if above to L1
1268    
1269            L1:
1270               jmp L2
1271    
1272    
1273    After jump chain elimination the 'ja L1' instructions is converted to
1274    'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end
1275    up being implemented in their long form (if L2 is far away) using:
1276    
1277            jbe     L3      % jump if below or equal to L3
1278            jmp     L2
1279         L3:
1280            ...
1281    
1282    
1283    For large compilation units L2  may be far away.
1284    
1285    
1286    ----------------------------------------------------------------------
1287    Name: Matthias Blume
1288    Date: 2002/03/11 13:30:00 EST
1289    Tag: blume-20020311-mltreeeval
1290    Description:
1291    
1292    A functor parameter was missing.
1293    
1294    ----------------------------------------------------------------------
1295    Name: Allen Leung
1296    Date: 2002/03/11 10:30:00 EST
1297    Tag: leunga-20020311-runtime-string0
1298    Description:
1299    
1300       The representation of the empty string now points to a
1301    legal null terminated C string instead of unit.  It is now possible
1302    to convert an ML string into C string with InlineT.CharVector.getData.
1303    This compiles into one single machine instruction.
1304    
1305    ----------------------------------------------------------------------
1306    Name: Allen Leung
1307    Date: 2002/03/10 23:55:00 EST
1308    Tag: leunga-20020310-x86-call
1309    Description:
1310    
1311       Added machine generation for CALL instruction (relative displacement mode)
1312    
1313    ----------------------------------------------------------------------
1314    Name: Matthias Blume
1315    Date: 2002/03/08 16:05:00
1316    Tag: blume-20020308-entrypoints
1317    Description:
1318    
1319    Version number bumped to 110.39.1.  NEW BOOTFILES!
1320    
1321    Entrypoints: non-zero offset into a code object where execution should begin.
1322    
1323    - Added the notion of an entrypoint to CodeObj.
1324    - Added reading/writing of entrypoint info to Binfile.
1325    - Made runtime system bootloader aware of entrypoints.
1326    - Use the address of the label of the first function given to mlriscGen
1327      as the entrypoint.  This address is currently always 0, but it will
1328      not be 0 once we turn on block placement.
1329    - Removed the linkage cluster code (which was The Other Way(tm) of dealing
1330      with entry points) from mlriscGen.
1331    
1332    ----------------------------------------------------------------------
1333    Name: Allen Leung
1334    Date: 2002/03/07 20:45:00 EST
1335    Tag: leunga-20020307-x86-cmov
1336    Description:
1337    
1338       Bug fixes for CMOVcc on x86.
1339    
1340       1. Added machine code generation for CMOVcc
1341       2. CMOVcc is now generated in preference over SETcc on PentiumPro or above.
1342       3. CMOVcc cannot have an immediate operand as argument.
1343    
1344    ----------------------------------------------------------------------
1345    Name: Matthias Blume
1346    Date: 2002/03/07 16:15:00 EST
1347    Tag: blume-20020307-controls
1348    Description:
1349    
1350    This is a very large but mostly boring patch which makes (almost)
1351    every tuneable compiler knob (i.e., pretty much everything under
1352    Control.* plus a few other things) configurable via both the command
1353    line and environment variables in the style CM did its configuration
1354    until now.
1355    
1356    Try starting sml with '-h' (or, if you are brave, '-H')
1357    
1358    To this end, I added a structure Controls : CONTROLS to smlnj-lib.cm which
1359    implements the underlying generic mechanism.
1360    
1361    The interface to some of the existing such facilities has changed somewhat.
1362    For example, the MLRiscControl module now provides mkFoo instead of getFoo.
1363    (The getFoo interface is still there for backward-compatibility, but its
1364    use is deprecated.)
1365    
1366    The ml-build script passes -Cxxx=yyy command-line arguments through so
1367    that one can now twiddle the compiler settings when using this "batch"
1368    compiler.
1369    
1370    TODO items:
1371    
1372    We should go through and throw out all controls that are no longer
1373    connected to anything.  Moreover, we should go through and provide
1374    meaningful (and correct!) documentation strings for those controls
1375    that still are connected.
1376    
1377    Currently, multiple calls to Controls.new are accepted (only the first
1378    has any effect).  Eventually we should make sure that every control
1379    is being made (via Controls.new) exactly once.  Future access can then
1380    be done using Controls.acc.
1381    
1382    Finally, it would probably be a good idea to use the getter-setter
1383    interface to controls rather than ref cells.  For the time being, both
1384    styles are provided by the Controls module, but getter-setter pairs are
1385    better if thread-safety is of any concern because they can be wrapped.
1386    
1387    *****************************************
1388    
1389    One bug fix: The function blockPlacement in three of the MLRISC
1390    backpatch files used to be hard-wired to one of two possibilities at
1391    link time (according to the value of the placementFlag).  But (I
1392    think) it should rather sense the flag every time.
1393    
1394    *****************************************
1395    
1396    Other assorted changes (by other people who did not supply a HISTORY entry):
1397    
1398    1. the cross-module inliner now works much better (Monnier)
1399    2. representation of weights, frequencies, and probabilities in MLRISC
1400       changed in preparation of using those for weighted block placement
1401       (Reppy, George)
1402    
1403    ----------------------------------------------------------------------
1404  Name: Lal George  Name: Lal George
1405  Date: 2002/03/07 14:44:24 EST 2002  Date: 2002/03/07 14:44:24 EST 2002
1406  Tag: george-20020307-weighted-block-placement  Tag: george-20020307-weighted-block-placement

Legend:
Removed from v.1124  
changed lines
  Added in v.1368

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