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 570, Wed Mar 8 17:30:13 2000 UTC revision 656, Fri Jun 9 03:39:04 2000 UTC
# Line 11  Line 11 
11  Date:  Date:
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    ----------------------------------------------------------------------
15    Name: Matthias Blume
16    Date: 2000/06/09 12:40:00
17    Tag: blume-20000609-log
18    Description:
19    
20    - Removed all(?) remaining RCS Log entries from sources.
21    
22    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
23      anchored paths).
24    
25  ----------------------------------------------------------------------  ----------------------------------------------------------------------
26  Name:  Name: Matthias Blume
27  Date:  Date: 2000/06/07 17:00:00 JST
28  Tag:  Tag: blume-20000607-no-implicit-anchors
29    Description:
30    
31    1. This update changes the default setting for
32    CM.Control.implicit_anchors from true to false.  This means that
33    implicit anchors are no longer permitted by default.  I also tried to
34    make sure that nothing else still relies on implicit anchors.
35    (This is the next step on the schedule towards a CM that does not even
36    have the notion of implicit anchors anymore.)
37    
38    2. More CM manual updates.
39    
40    3. I managed to track down and fix the pickling bug I mentioned last
41    time.  Because of the previously existing workaround, this entails no
42    immediate practical changes.
43    
44    ----------------------------------------------------------------------
45    Name: Matthias Blume
46    Date: 2000/06/06 11:15:00 JST
47    Tag: blume-20000606-lazierpickle
48    Description:
49    
50    !!!! NEW BOOT FILES !!!!
51    
52    * The main purpose of this update is to make library pickles lazier in
53    order to reduce the initial space penalty for autoloading a library.
54    As a result, it is now possible to have $smlnj/compiler.cm
55    pre-registered.  This should take care of the many complaints or
56    inquiries about missing structure Compiler.  This required changes to
57    CM's internal data structures and small tweaks to some algorithms.
58    
59    As a neat additional effect, it is no longer necessary (for the sake
60    of lean heap image files) to distinguish between a "minimal" CM and a
61    "full" CM.  Now, there is only one CM (i.e., the "full" version:
62    $smlnj/cm.cm aka $smlnj/cm/full.cm), and it is always available at the
63    interactive top level. ($smlnj/cm/minimal.cm is gone.)
64    
65    To make the life of compiler-hackers easier, "makeml" now also
66    pre-registers $smlnj/cmb.cm (aka $smlnj/cmb/current.cm).  In other
67    words, after you bootstrap a new sml for the first time, you will not
68    have to autoload $smlnj/cmb.cm again afterwards.  (The first time
69    around you will still have to do it, though.)
70    
71    * A second change consists of major updates to the CM manual.  There
72    are now several appendices with summary information and also a full
73    specification of the CM description file syntax.
74    
75    * In directory src/system I added the script "allcross".  This script
76    invokes sml and cross-compiles the compiler for all supported
77    architectures.  (Useful when providing a new set of boot files.)
78    
79    * There seems to be a latent bug in my "lazy pickles" mechanism.  I
80    added a small tweak to pickle-util.sml to work around this problem,
81    but it is not a proper fix yet.  I will investigate further.  (The
82    effect of the bug was an inflation of library pickle size.)
83    
84    * Version number increased to 110.28.1 (to avoid compatibility problems).
85    
86    ----------------------------------------------------------------------
87    Name: Allen Leung
88    Date: 2000/05/25 17:28 EDT
89    Tag: leunga-20000525-ra
90    Description:
91    
92      Fixed a bug in freezing phase of the register allocator.
93    
94    ----------------------------------------------------------------------
95    Name: Allen Leung
96    Date: 2000/05/15 22:53 EDT
97    Tag: leunga-20000515-alpha-x86-ra
98    Description:
99    
100      1. Alpha
101    
102          Slight cleanup.  Removed the instruction SGNXL
103    
104      2. X86
105    
106          Added the following instructions to the instruction set:
107    
108            ROLx, RORx,
109            BTx, BTSx, BTLx, BTRx,
110            XCHGx, and variants with the LOCK prefix
111    
112      3. Register Allocation
113    
114          The module ra-rewrite-with-renaming has been improved.
115    
116      These have no effect on SML/NJ.
117    
118    ----------------------------------------------------------------------
119    Name: Matthias Blume
120    Date: 2000/05/15 16:20:00 JST
121    Tag: blume-20000515-lightrebuild
122    Description:
123    
124    1. I added an alternative to "-rebuild" to "makeml".  The difference is
125       that prior to calling CMB.make' the CM-variable "LIGHT" will be
126       defined.  In effect, the command will not build any cross-compiler
127       backends and therefore finish more quickly.
128    
129       The "fixpt" script also takes a "-light" switch to be able to use
130       this new facility while compiling for a fixpoint.
131    
132    2. I replaced all mentions of anchored paths in group owner specifications
133       with simple relative paths (usually starting with "..").
134       The rationale is that a library's internal workings should not be
135       compromised by the lack of some anchor.  (An anchor is necessary
136       for someone who wants to refer to the library by an anchored path,
137       but it should not be necessary to build the same library in the first
138       place.)
139    
140    3. I changed the way CM's tool mechanism determines the shell command
141       string used for things like ml-yacc etc. so that it does not break
142       when CM.Control.implicit_anchors is turned off.
143    
144    ----------------------------------------------------------------------
145    Name: Matthias Blume
146    Date: 2000/05/12 18:20:00 JST
147    Tag: blume-20000512-ml-build
148    Description:
149    
150    Fixed a bug in config/_ml-build that prevented ml-yacc and ml-lex from
151    getting installed properly (by config/install.sh).
152    
153    ----------------------------------------------------------------------
154    Name: Matthias Blume
155    Date: 2000/05/12 17:30:00 JST
156    Tag: blume-20000512-anchors
157    Description:
158    
159    !!! NEW BOOT FILES !!!
160    
161    This change is in preparation of fading out support for "implicitly
162    anchored path names".  I went through all sources and used the
163    explicit (and relatively new) $-notation.  See system/README and the
164    CM manual for more info on this.
165    
166    I also modified the anchoring scheme for some things such as "smlnj",
167    "MLRISC", "cm", etc. to take advantage of the fact that explicit
168    anchors are more expressive: anchor name and first arc do not have to
169    coincide.  This entails the following user-visible change:
170    
171    You have to write $smlnj/foo/bar instead of smlnj/foo/bar.  In
172    particular, when you fire up sml with a command-line argument, say,
173    e.g.:
174    
175       sml '$smlnj/cmb.cm'
176    
177    At the ML toplevel prompt:
178    
179       CM.autoload "$smlnj/cmb.cm";
180    
181    There is also a new controller in CM.Control that can be used to turn
182    off all remaining support for implicit anchors by saying:
183    
184        CM.autoload "$smlnj/
185        #set CM.Control.implicit_anchors false;
186    
187    This causes CM to reject implicitly anchored paths.  This is (for the
188    time being) less permissive than the "final" version where there will
189    be no more such implicit anchors and relative paths will be just that:
190    relative.
191    
192    The next step (version after next version?) will be to make the
193    default for CM.Control.implicit_anchors false.  After the dust has
194    settled, I can then produce the "final" version of this...
195    
196    Note: Since bootstrapping is a bit tricky, I provided new boot files.
197    
198    ----------------------------------------------------------------------
199    Name: Matthias Blume
200    Date: 2000/05/11 16:30:00 JST
201    Tag: blume-20000511-sources
202    Description:
203    
204    The main change is that I added function CM.sources as a generalized
205    version of the earlier CM.makedepend.  This entails the following
206    additional changes:
207    
208      - CM.makedepend has been dropped.
209    
210      - CM manual has been updated.
211    
212      - TOOLS signature and API have been changed.
213    
214    ----------------------------------------------------------------------
215    Name: Allen Leung
216    Date: 2000/05/10 21:17 EDT
217    Tag: leunga-20000510-moby-c--ssa
218    Description:
219    
220      Various bug fixes and new features for C--, Moby and MLRISC optimizations.
221    None of these affect SML/NJ.
222    
223    1. Register Allocation
224    
225        a. A new ra spilling module (ra/ra-spill-with-renaming) is implemented.
226           This module tries to remove local (i.e. basic block level) redundancies
227           during spilling.
228    
229        b. A new framework for performing region based register allocation.
230           Not yet entirely functional.
231    
232    2. X86
233    
234       a. DefUse for POP was missing the stack pointer [found by Lal]
235       b. Reload for CALL was incorrect in X86Spill [found by John]
236       c. Various fixes in X86Spill so that it can be used correctly for
237          the new spilling module.
238    
239    3. SSA/IR
240    
241       a. New module ir/dj-dataflow.sml implements elimination based
242          data flow analysis.
243    
244    4. MLRiscGen
245    
246       a. Fix for gc type annotation
247    
248    5. MDGen
249    
250       Various fixes for machine description -> ml code translation.  For ssa
251       only.
252    
253    ----------------------------------------------------------------------
254    Name: Allen Leung
255    Date: 2000/05/08 22:17 EDT
256    Tag: leunga-20000508-labexp
257    Description:
258    
259      Fermin has found a few assembly problems with constant expressions
260      generated in LabelExp.  Mostly, the problems involve extra parentheses,
261      which choke on dumb assemblers.  This is his fix.
262    
263    ----------------------------------------------------------------------
264    Name: Dave MacQueen
265    Date: 2000/04/09 14:00 EDT
266    Tag: dbm-20000502-Version_110_28
267    Description:
268    
269    1. Updated src/compiler/TopLevel/main/version.sml to version 110.28
270    
271    2. Updated config/version to 110.28
272    
273    3. Updated config/srcarchiveurl
274    
275    3. New boot files!
276       ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.28/
277    
278    ----------------------------------------------------------------------
279    Name: Matthias Blume
280    Date: 2000/05/01 19:05:00 JST
281    Tag: blume-20000501-noweb
282    Description:
283    
284    A new noweb tool has been added.  The existing system is entirely
285    unaffected by this, but some CM users have asked for renewed noweb
286    support.  Everything is documented in the CM manual.
287    
288    New (plugin) libraries:
289    
290       noweb-tool.cm
291       nw-ext.cm
292    
293    ----------------------------------------------------------------------
294    Name: Dave MacQueen
295    Date: 2000/04/30 12:40PM EDT
296    Tag: dbm-20000430-bug_fixes
297    Description:
298    
299    1. Fix for bug 1498
300       smlnj/src/system/Basis/Implementation/Unsafe/object.sig
301       smlnj/src/system/Basis/Implementation/Unsafe/object.sml
302         added toRealArray function
303       smlnj/src/compiler/MiscUtil/print/ppobj.sml
304         added check for tag Obj.RealArray to array printing case in ppObj
305    
306    2. Fix for bug 1510
307       smlnj/src/compiler/Semant/types/typesutil.sml
308         fixed definition of dummyargs (used by equalTycon) so that
309         dummy args are distinct types
310    
311    ----------------------------------------------------------------------
312    Name: Matthias Blume
313    Date: 2000/04/30 01:00:00 JST
314    Tag: blume-20000430-versions
315    Description:
316    
317    1. CM version numbering added.  This is an implementation of Lal's
318       proposal for adding version numbers and version checking to .cm
319       files.  Lal said that his proposal was just that -- a proposal.
320       For the time being I went ahead and implemented it so that people
321       can comment on it.  Everything is completely backward-compatible
322       (except for the stable library format, i.e., new bootfiles!).
323    
324       As usual, see the CM manual for details.
325    
326    2. An alternative syntax for anchored paths has been implemented.
327       Dave has recently voiced the same concerns that I had when I did
328       this, so there should be some support.  My take is that eventually
329       I will let support for the current syntax (where anchors are
330       "implicit") fade out in favor of the new, explicit syntax.
331       In order to be backward-compatible, both old and new syntax are
332       currently supported.
333    
334       Again, see the CM manual for details.
335    
336    3. Parallel make is trying to be slightly smarter:  When the master
337       process finds a "bottleneck", i.e., when there is only one
338       compilation unit that can be compiled and everybody else is
339       waiting on it, then it will simply compile it directly instead
340       of clumsily telling one of the slaves to do it.
341    
342    4. Support for "unsharing" added.  This is necessary in order to be
343       able to have two different versions of the same library running
344       at the same time (e.g., for trying out a new MLRISC while still
345       having the old MLRISC linked into the current compiler, etc.)
346       See the CM manual.
347    
348    5. Simple "makedepend" functionality added for generating Makefile
349       dependency information.  (This is rather crude at the moment.
350       Expect some changes here in the future.)
351    
352    6. ".fun" added as a recognized suffix for ML files. Also documented
353       explicitly in the manual that the fallback behavior (unknown suffix
354       -> ML file) is not an official feature!
355    
356    7. Small changes to the pickler for stable libraries.
357    
358    8. Several internal changes to CM (for cleanup/improvement).
359    
360    
361    !!!! NEW BINFILES !!!!
362    
363    ----------------------------------------------------------------------
364    Name: Matthias Blume
365    Date: 2000/04/28 17:30:00 JST
366    Tag: blume-20000428-pathconfig
367    Description:
368    
369    1. I changed config/install.sh to remove duplicate entries from the
370       lib/pathconfig file at the end.  Moreover, the final version of
371       lib/pathconfig is sorted alphabetically.  The same (sorting) is done
372       in src/system/installml.
373    
374    2. The config/install.sh script now consistently uses relative
375       pathnames in lib/pathconfig whenever the anchor is in the lib
376       directory.  (So far this was true for the libraries that come
377       pre-compiled and bundled as part of the bootfiles but not for
378       libraries that are compiled by the script itself.)
379    
380    ----------------------------------------------------------------------
381    Name: Matthias Blume
382    Date: 2000/04/26 13:10:00 JST
383    Tag: blume-20000426-fun_suffix
384    Description:
385    
386    Added ".fun" as a recognized file name suffix (for ML code).
387    
388    ----------------------------------------------------------------------
389    Name: Allen Leung
390    Date: 2000/04/25 17:00:00 EST
391    Tag: leunga-20000425-alpha-ra
392    Description:
393    
394    1. Alpha
395    
396        PSEUDOARITH was missing in AlphaRewrite.  This causes an endless loop
397    in C--.
398    
399    2. RA
400    
401       Added a flag "ra-dump-size" to print out the size of the flowgraph
402       and the interference graph.
403    
404    ----------------------------------------------------------------------
405    Name: Dave MacQueen
406    Date: 2000/04/25/
407    Tag: dbm-20000425-mlyacc_doc_examples
408    Description:
409      Updated mlyacc.tex sections 5 and 7 for SML '97 and CM.
410      Updated all three examples in src/ml-yacc/examples to run
411      under 110.* using CM.make.
412    
413    ----------------------------------------------------------------------
414    Name: Allen Leung
415    Date: 2000/04/20 23:04:00 EST
416    Tag: leunga-20000420-ssa-c---stuff
417    Description:
418    
419      This update synchronizes my repository with Yale's.  Most of these
420    changes, however, do not affect SML/NJ at all (the RA is an exception).
421    
422    1. Register Allocator
423    
424       a. An improvement in the interference graph construction:
425          Given a copy
426    
427                s <- t
428    
429          no interference edge between s and t is added for this definition of s.
430    
431       b. I've added two new spill heuristic modules that Fermin and I developed
432          (in the new library RA.cm). These are unused in SML/NJ but maybe
433          useful for others (Moby?)
434    
435    2. X86
436    
437       a. Various fixes in the backend provided by Fermin [C--] and Lal.
438    
439    3. Alpha
440    
441       a. Added the BSR instruction and code generation that goes with it [C--]
442       b. Other fixes too numerous to recount provided by Fermin [C--]
443    
444    4. Regmaps
445    
446       a. The regmaps are not initialized with the identity physical bindings
447          at creation time.  This is unneeded.
448    
449    5. MLRISC Optimizations
450    
451       a. The DJ-Graph module can now compute the iterated dominance frontiers
452          intersects with liveness incrementally in linear time! Woohoo!
453          This is now used in my new SSA construction algorithm.
454    
455       b. THe branch reorganization module is now smarter about linear chains of
456          basic blocks.
457    
458    
459    ----------------------------------------------------------------------
460    Name: Matthias Blume
461    Date: 2000/04/12 13:52:00 JST
462    Tag: blume_main_v110p27_1
463    Description:
464    
465    Changed install.sh script to handle archive files without version number
466    and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
467    name of the boot file archive.
468    
469    ----------------------------------------------------------------------
470    Name: Dave MacQueen
471    Date: 2000/04/09 14:00 EDT
472    Tag: dbm-20000410-Version_110_27
473    Description:
474    
475    1. Updated src/compiler/TopLevel/main/version.sml to version 110.27
476    
477    2. Updated src/config/version to 110.27
478    
479    3. New boot files!
480    
481    ----------------------------------------------------------------------
482    Name: Allen Leung
483    Date: 2000/04/09 19:09:00 EST
484    Tag: leunga-20000409-misc
485    Description:
486    
487    1.  Yet another fix for x86 assembly for idivl, imull, mull and friends.
488    
489    2.  Miscellaneous improvements to MLRISC (unused in sml/nj)
490    
491    ----------------------------------------------------------------------
492    Name: Stefan
493    Date: 2000/04/07 10:00:00 EDT
494    Tag: monnier-20000406-branch-handling
495    Description:
496    
497    Improved handling of branches (mostly those generated from
498    polymorphic equality), removed switchoff and changed the
499    default optimization settings (more cpsopt and less flintopt).
500    
501    ----------------------------------------------------------------------
502    Name: Allen Leung
503    Date: 2000/04/06 01:30:00 EST
504    Tag: leunga-20000406-peephole-x86-SSA-2
505    Description:
506    
507       Forgot a few files.
508    
509    ----------------------------------------------------------------------
510    Name: Allen Leung
511    Date: 2000/04/06 00:36:00 EST
512    Tag: leunga-20000406-peephole-x86-SSA
513    Description:
514    
515    1.  New Peephole code
516    
517    2.  Minor improvement to X86 instruction selection
518    
519    3.  Various fixes to SSA and machine description -> code translator
520    
521    ----------------------------------------------------------------------
522    Name: Matthias Blume
523    Date: 2000/04/05 12:30:00 JST
524    Tag: blume_main_v110p26p2_3
525    Description:
526    
527    This update just merges three minor cosmetic updates to CM's sources
528    to get ready for the 110.27 code freeze on Friday.  No functionality
529    has changed.
530    
531    ----------------------------------------------------------------------
532    Name: Allen Leung
533    Date: 2000/04/04 19:39:00 EST
534    Tag: leunga-20000404-x86-asm
535    Description:
536    
537    1.  Fixed a problem in X86 assembly.
538    
539        Things like
540    
541           jmp %eax
542           jmp (%eax)
543    
544        should be output as
545    
546           jmp *%eax
547           jmp *(%eax)
548    
549    2.  Assembly output
550    
551          Added a new flag
552    
553              "asm-indent-copies" (default to false)
554    
555          When this flag is on, parallel copies will be indented an extra level.
556    
557    ----------------------------------------------------------------------
558    Name: Allen Leung
559    Date: 2000/04/04 03:18:00 EST
560    Tag: leunga-20000404-C--Moby
561    Description:
562    
563        All of these fixes are related to C--, Moby, and my own optimization
564        stuff; so they shouldn't affect SML/NJ.
565    
566    1.  X86
567    
568        Various fixes related floating point, and extensions.
569    
570    2.  Alpha
571    
572        Some extra patterns related to loads with signed/zero extension
573        provided by Fermin.
574    
575    3.  Assembly
576    
577        When generating assemby, resolve the value of client defined constants,
578        instead of generating symbolic values.  This is controlled by the
579        new flag "asm-resolve-constants", which is default to true.
580    
581    4.  Machine Descriptions
582    
583        a. The precedence parser was slightly broken when parsing infixr symbols.
584        b. The type generalizing code had the bound variables reversed, resulting
585           in a problem during arity raising.
586        c. Various fixes in machine descriptions.
587    
588    ----------------------------------------------------------------------
589    Name: Matthias Blume
590    Date: 2000/04/03 16:05:00 JST
591    Tag: blume_main_v110p26p2_2
592    Description:
593    
594    I eliminated coreEnv from compInfo.  Access to the "Core" structure is
595    now done via the ordinary static environment that is context to each
596    compilation unit.
597    
598    To this end, I arranged that instead of "structure Core" as "structure
599    _Core" is bound in the pervasive environment.  Core access is done via
600    _Core (which can never be accidentially rebound because _Core is not a
601    legal surface-syntax symbol).
602    
603    The current solution is much cleaner because the core environment is
604    now simply part of the pervasive environment which is part of every
605    compilation unit's context anyway.  In particular, this eliminates all
606    special-case handling that was necessary until now in order to deal
607    with dynamic and symbolic parts of the core environment.
608    
609    Remaining hackery (to bind the "magic" symbol _Core) is localized in the
610    compilation mananger's bootstrap compiler (actually: in the "init group"
611    handling).  See the comments in src/system/smlnj/init/init.cmi for
612    more details.
613    
614    I also tried to track down all mentions of "Core" (as string argument
615    to Symbol.strSymbol) in the compiler and replaced them with a
616    reference to the new CoreSym.coreSym.  Seems cleaner since the actual
617    name appears in one place only.
618    
619    Binfile and bootfile format have not changed, but the switchover from
620    the old "init.cmi" to the new one is a bit tricky, so I supplied new
621    bootfiles anyway.
622    
623    ----------------------------------------------------------------------
624    Name: Allen Leung
625    Date: 2000/04/02 21:17:00 EST
626    Tag: leunga-20000402-mltree
627    Description:
628    
629       1. Renamed the constructor CALL in MLTREE by popular demand.
630       2. Added a bunch of files from my repository.  These are currently
631          used by other non-SMLNJ backends.
632    
633    ----------------------------------------------------------------------
634    Name: Allen Leung
635    Date: 2000/03/31 21:15:00 EST
636    Tag: leunga-20000331-aliasing
637    Description:
638    
639    This update contains a rewritten (and hopefully more correct) module
640    for extracting aliasing information from CPS.
641    
642       To turn on this feature:
643    
644            Compiler.Control.CG.memDisambiguate := true
645    
646       To pretty print the region information with assembly
647    
648           Compiler.Control.MLRISC.getFlag "asm-show-region" := true;
649    
650       To control how many levels of aliasing information are printed, use:
651    
652           Compiler.Control.MLRISC.getInt "points-to-show-level" := n
653    
654       The default of n is 3.
655    
656    ----------------------------------------------------------------------
657    Name: David MacQueen
658    Date: 2000/03/31 11:15:00 EST
659    Tag: dbm-20000331-runtime_fix
660    Description:
661    
662    This update contains:
663    
664    1. runtime/c-lib/c-libraries.c
665       includes added in revision 1.2 caused compilation errors on hppa-hpux
666    
667    2. fix for bug 1556
668       system/Basis/Implementation/NJ/internal-signals.sml
669    
670    ----------------------------------------------------------------------
671    Name: Matthias Blume
672    Date: 2000/03/31 18:00:00 JST
673    Tag: blume_main_v110p26p2_1
674    Description:
675    
676    This update contains:
677    
678    1. A small change to CM's handling of stable libraries:
679       CM now maintains one "global" modmap that is used for all stable
680       libraries.  The use of such a global modmap maximizes sharing and
681       minimizes the need for re-traversing parts of environments during
682       modmap construction.  (However, this has minor impact since modmap
683       construction seems to account for just one percent or less of total
684       compile time.)
685    
686    2. I added a "genmap" phase to the statistics.  This is where I got the
687       "one percent" number (see above).
688    
689    3. CM's new tool parameter mechanism just became _even_ better. :)
690       - The parser understands named parameters and recursive options.
691       - The "make" and "shell" tools use these new features.
692         (This makes it a lot easier to cascade these tools.)
693       - There is a small syntax change: named parameters use a
694    
695           <name> : ( <option> ... )            or
696           <name> : <string>
697    
698         syntax.  Previously, named parameters were implemented in an
699         ad-hoc fashion by each tool individually (by parsing strings)
700         and had the form
701    
702           <name>=<string>
703    
704       See the CM manual for a full description of these issues.
705    
706    ----------------------------------------------------------------------
707    Name: Matthias Blume
708    Date: 2000/03/30 18:00:00 JST
709    Tag: blume_main_v110p26p2_0
710    Description:
711    
712    !!!!! WARNING !!!!!!
713    !!  New binfiles  !!
714    !!!!!!!!!!!!!!!!!!!!
715    
716    This update contains:
717    
718    1. Moderate changes to CM:
719    
720       - Changes to CM's tools mechanism.  In particular, it is now possible
721       to have tools that accept additional "command line" parameters
722       (specified in the .cm file at each instance where the tool's class is
723       used).
724    
725       This was done to accomodate the new "make" and "shell" tools which
726       facilitate fairly seemless hookup to portions of code managed using
727       Makefiles or Shell scripts.
728    
729       There are no classes "shared" or "private" anymore.  Instead, the
730       sharing annotation is now a parameter to the "sml" class.
731    
732       There is a bit of generic machinery for implementing one's own
733       tools that accept command-line parameters.  However, I am not yet fully
734       satisfied with that part, so expect changes here in the future.
735    
736       All existing tools are described in the CM manual.
737    
738       - Slightly better error handling.  (CM now surpresses many followup
739       error messages that tended to be more annoying than helpful.)
740    
741    2. Major changes to the compiler's static environment data structures.
742    
743       - no CMStaticEnv anymore.
744            - no CMEnv, no "BareEnvironment" (actually, _only_ BareEnvironment,
745              but it is called Environment), no conversions between different
746              kinds of static environments
747    
748       - There is still a notion of a "modmap", but such modmaps are generated
749         on demand at the time when they are needed.  This sounds slow, but I
750         sped up the code that generates modmaps enough for this not to lead to
751         a slowdown of the compiler (at least I didn't detect any).
752    
753       - To facilitate rapid modmap generation, static environments now
754         contain an (optional) "modtree" structure.  Modtree annotations are
755         constructed by the unpickler during unpickling.  (This means that
756         the elaborator does not have to worry about modtrees at all.)
757         Modtrees have the advantage that they are compositional in the same
758         way as the environment data structure itself is compositional.
759         As a result, modtrees never hang on to parts of an environment that
760         has already been rendered "stale" by filtering or rebinding.
761    
762       - I went through many, many trials and errors before arriving at the
763         current solution.  (The initial idea of "linkpaths" did not work.)
764         But the result of all this is that I have touched a lot of files that
765         depend on the "modules" and "types" data structures (most of the
766         elaborator). There were a lot of changes during my "linkpath" trials
767         that could have been reverted to their original state but weren't.
768         Please, don't be too harsh on me for messing with this code a bit more
769         than what was strictly necessary...  (I _did_ resist the tempation
770         of doing any "global reformatting" to avoid an untimely death at
771         Dave's hands. :)
772    
773       - One positive aspect of the previous point:  At least I made sure that
774         all files that I touched now compile without warnings (other than
775         "polyEqual").
776    
777       - compiler now tends to run "leaner" (i.e., ties up less memory in
778         redundant modmaps)
779    
780    ----------------------------------------------------------------------
781    Name: Allen Leung
782    Date: 2000/03/29 18:00:00
783    Tag: leunga-20000327-mlriscGen_hppa_alpha_x86
784    Boot files (optional): ftp://react-ilp.cs.nyu.edu/leunga/110.26.1-sml.boot.x86-unix-20000330.tar.gz
785    Description:
786    
787       This update contains *MAJOR* changes to the way code is generated from CPS
788    in the module mlriscGen, and in various backend modules.
789    
790    CHANGES
791    =======
792    
793    1. MLRiscGen: forward propagation fix.
794    
795       There was a bug in forward propagation introduced at about the same time
796       as the MLRISC x86 backend, which prohibits coalescing to be
797       performed effectively in loops.
798    
799       Effect: speed up of loops in RISC architectures.
800               By itself, this actually slowed down certain benchmarks on the x86.
801    
802    2. MLRiscGen:  forward propagating addresses from consing.
803    
804       I've changed the way consing code is generated.  Basically I separated
805       out the initialization part:
806    
807            store tag,   offset(allocptr)
808            store elem1, offset+4(allocptr)
809            store elem2, offset+8(allocptr)
810            ...
811            store elemn, offset+4n(allocptr)
812    
813       and the address computation part:
814    
815            celladdr <- offset+4+alloctpr
816    
817       and move the address computation part
818    
819       Effect:  register pressure is generally lower as a result.  This
820                makes compilation of certain expressions much faster, such as
821                long lists with non-trivial elements.
822    
823                 [(0,0), (0,0), .... (0,0)]
824    
825    3. MLRiscGen: base pointer elimination.
826    
827        As part of the linkage mechanism, we generate the sequence:
828    
829         L:  ...  <- start of the code fragment
830    
831         L1:
832             base pointer <- linkreg - L1 + L
833    
834         The base pointer was then used for computing relocatable addresses
835       in the code fragment.  Frequently (such as in lots of continuations)
836       this is not needed.  We now eliminate this sequence whenever possible.
837    
838         For compile time efficiency, I'm using a very stupid local heuristic.
839       But in general, this should be done as a control flow analysis.
840    
841       Effect:  Smaller code size.  Speed up of most programs.
842    
843    4. Hppa back end
844    
845         Long jumps in span dependence resolution used to depend on the existence
846      of the base pointer.
847    
848         A jump to a long label L was expanded into the following sequence:
849    
850          LDIL %hi(L-8192), %r29
851          LDO  %lo(L-8192)(%r29), %r29
852          ADD  %r29, baseptr, %r29
853          BV,n %r0(%r29)
854    
855         In the presence of change (3) above, this will not work.  I've changed
856       it so that the following sequence of instructions are generated, which
857       doesn't mention the base pointer at all:
858    
859             BL,n  L', %r29           /* branch and link, L' + 4 -> %r29 */
860        L':  ADDIL L-(L'+4), %r29     /* Compute address of L */
861             BV,n  %r0(%r29)          /* Jump */
862    
863    5. Alpha back end
864    
865          New alpha instructions LDB/LDW have been added, as per Fermin's
866       suggestions.   This is unrelated to all other changes.
867    
868    6. X86 back end
869    
870         I've changed andl to testl in the floating point test sequence
871         whenever appropriate.  The Intel optimization guide states that
872         testl is perferable to andl.
873    
874    7. RA (x86 only)
875    
876         I've improved the spill propagation algorithm, using an approximation
877       of maximal weighted independent sets.   This seems to be necessary to
878       alleviate the negative effect in light of the slow down in (1).
879    
880         I'll write down the algorithm one of these days.
881    
882    8. MLRiscGen: frequencies
883    
884         I've added an annotation that states that all call gc blocks have zero
885       execution frequencies.  This improves register allocation on the x86.
886    
887    BENCHMARKS
888    ==========
889    
890       I've only perform the comparison on 110.25.
891    
892       The platforms are:
893    
894        HPPA  A four processor HP machine (E9000) with 5G of memory.
895        X86   A 300Hhz Pentium II with 128M of memory, and
896        SPARC An Ultra sparc 2 with 512M of memory.
897    
898       I used the following parameters for the SML benchmarks:
899    
900                 @SMLalloc
901         HPPA    256k
902         SPARC   512k
903         X86     256k
904    
905    COMPILATION TIME
906    ----------------
907       Here are the numbers comparing the compilation times of the compilers.
908       I've only compared 110.25 compiling the new sources versus
909       a fixpoint version of the new compiler compiling the same.
910    
911                     110.25                                  New
912               Total  Time in RA  Spill+Reload   Total  Time In RA Spill+Reload
913         HPPA   627s    116s        2684+3584     599s    95s       1003+1879
914         SPARC  892s    173s        2891+3870     708s    116s      1004+1880
915         X86    999s    315s       94006+130691   987s    296s    108877+141957
916    
917                   110.25         New
918                Code Size      Code Size
919         HPPA   8596736         8561421
920         SPARC  8974299         8785143
921         X86    9029180         8716783
922    
923       So in summary, things are at least as good as before.   Dramatic
924       reduction in compilation is obtained on the Sparc; I can't explain it,
925       but it is reproducible.  Perhaps someone should try to reproduce this
926       on their own machines.
927    
928    SML BENCHMARKS
929    --------------
930    
931        On the average, all benchmarks perform at least as well as before.
932    
933          HPPA         Compilation Time     Spill+Reload      Run Time
934                     110.25  New            110.25    New   110.25  New
935    
936          barnesHut  3.158  3.015  4.75%    1+1       0+0   2.980  2.922   2.00%
937              boyer  6.152  5.708  7.77%    0+0       0+0   0.218  0.213   2.34%
938       count-graphs  1.168  1.120  4.32%    0+0       0+0  22.705 23.073  -1.60%
939                fft  0.877  0.792 10.74%    1+3       1+3   0.602  0.587   2.56%
940        knuthBendix  3.180  2.857 11.32%    0+0       0+0   0.675  0.662   2.02%
941             lexgen  6.190  5.290 17.01%    0+0       0+0   0.913  0.788  15.86%
942               life  0.803  0.703 14.22%   25+25      0+0   0.153  0.140   9.52%
943              logic  2.048  2.007  2.08%    6+6       1+1   4.133  4.008   3.12%
944         mandelbrot  0.077  0.080 -4.17%    0+0       0+0   0.765  0.712   7.49%
945             mlyacc 22.932 20.937  9.53%  154+181    32+57  0.468  0.430   8.91%
946            nucleic  5.183  5.060  2.44%    2+2       0+0   0.125  0.120   4.17%
947      ratio-regions  3.357  3.142  6.84%    0+0       0+0  116.225 113.173 2.70%
948                ray  1.283  1.290 -0.52%    0+0       0+0   2.887  2.855   1.11%
949             simple  6.307  6.032  4.56%   28+30      5+7   3.705  3.658   1.28%
950                tsp  0.888  0.862  3.09%    0+0       0+0   7.040  6.893   2.13%
951               vliw 24.378 23.455  3.94%  106+127    25+45  2.758  2.707   1.91%
952      --------------------------------------------------------------------------
953       Average                     6.12%                                   4.09%
954    
955          SPARC        Compilation Time     Spill+Reload      Run Time
956                     110.25  New            110.25    New   110.25  New
957    
958          barnesHut  3.778  3.592  5.20%    2+2       0+0   3.648  3.453    5.65%
959              boyer  6.632  6.110  8.54%    0+0       0+0   0.258  0.242    6.90%
960       count-graphs  1.435  1.325  8.30%    0+0       0+0  33.672 34.737   -3.07%
961                fft  0.980  0.940  4.26%    3+9       2+6   0.838  0.827    1.41%
962        knuthBendix  3.590  3.138 14.39%    0+0       0+0   0.962  0.967   -0.52%
963             lexgen  6.593  6.072  8.59%    1+1       0+0   1.077  1.078   -0.15%
964               life  0.972  0.868 11.90%   26+26      0+0   0.143  0.140    2.38%
965              logic  2.525  2.387  5.80%    7+7       1+1   5.625  5.158    9.05%
966         mandelbrot  0.090  0.093 -3.57%    0+0       0+0   0.855  0.728   17.39%
967             mlyacc 26.732 23.827 12.19%  162+189    32+57  0.550  0.560   -1.79%
968            nucleic  6.233  6.197  0.59%    3+3       0+0   0.163  0.173   -5.77%
969      ratio-regions  3.780  3.507  7.79%    0+0       0+0 133.993 131.035   2.26%
970                ray  1.595  1.550  2.90%    1+1       0+0   3.440  3.418    0.63%
971             simple  6.972  6.487  7.48%   29+32      5+7   3.523  3.525   -0.05%
972                tsp  1.115  1.063  4.86%    0+0       0+0   7.393  7.265    1.77%
973               vliw 27.765 24.818 11.87%  110+135    25+45  2.265  2.135    6.09%
974      ----------------------------------------------------------------------------
975       Average                     6.94%                                    2.64%
976    
977          X86          Compilation Time     Spill+Reload      Run Time
978                     110.25  New            110.25    New   110.25  New
979    
980          barnesHut  5.530  5.420  2.03%  593+893   597+915   3.532  3.440   2.66%
981              boyer  8.768  7.747 13.19%  493+199   301+289   0.327  0.297  10.11%
982       count-graphs  2.040  2.010  1.49%  298+394   315+457  26.578 28.660  -7.26%
983                fft  1.327  1.302  1.92%  112+209   115+210   1.055  0.962   9.71%
984        knuthBendix  5.218  5.475 -4.69%  451+598   510+650   0.928  0.932  -0.36%
985             lexgen  9.970  9.623  3.60% 1014+841  1157+885   0.947  0.928   1.97%
986               life  1.183  1.183  0.00%  162+182   145+148   0.127  0.103  22.58%
987              logic  3.285  3.512 -6.45%  514+684   591+836   5.682  5.577   1.88%
988         mandelbrot  0.147  0.143  2.33%   38+41     33+54    0.703  0.690   1.93%
989             mlyacc 35.457 32.763  8.22% 3496+4564 3611+4860  0.552  0.550   0.30%
990            nucleic  7.100  6.888  3.07%  239+168   201+158   0.175  0.173   0.96%
991      ratio-regions  6.388  6.843 -6.65% 1182+257   981+300  120.142 120.345 -0.17%
992                ray  2.332  2.338 -0.29%  346+398   402+494   3.593  3.540   1.51%
993             simple  9.912  9.903  0.08% 1475+941  1579+1168  3.057  3.178  -3.83%
994                tsp  1.623  1.532  5.98%  266+200   250+211   8.045  7.878   2.12%
995               vliw 33.947 35.470 -4.29% 2629+2774 2877+3171  2.072  1.890   9.61%
996      ----------------------------------------------------------------------------
997       Average                     1.22%                                     3.36%
998    
999    ----------------------------------------------------------------------
1000    Name: Allen Leung
1001    Date: 2000/03/23 16:25:00
1002    Tag: leunga-20000323-fix_x86_alpha
1003    Description:
1004    
1005    1. X86 fixes/changes
1006    
1007       a.  The old code generated for SETcc was completely wrong.
1008           The Intel optimization guide is VERY misleading.
1009    
1010    2. ALPHA fixes/changes
1011    
1012       a.  Added the instructions LDBU, LDWU, STB, STW as per Fermin's suggestion.
1013       b.  Added a new mode byteWordLoadStores to the functor parameter to Alpha()
1014       c.  Added reassociation code for address computation.
1015    
1016    ----------------------------------------------------------------------
1017    Name: Allen Leung
1018    Date: 2000/03/22 01:23:00
1019    Tag: leunga-20000322-fix_x86_hppa_ra
1020    Description:
1021    
1022    1. X86 fixes/changes
1023    
1024       a.  x86Rewrite bug with MUL3 (found by Lal)
1025       b.  Added the instructions FSTS, FSTL
1026    
1027    2. PA-RISC fixes/changes
1028    
1029       a.  B label should not be a delay slot candidate!  Why did this work?
1030       b.  ADDT(32, REG(32, r), LI n) now generates one instruction instead of two,
1031           as it should be.
1032       c.  The assembly syntax for fstds and fstdd was wrong.
1033       d.  Added the composite instruction COMICLR/LDO, which is the immediate
1034           operand variant of COMCLR/LDO.
1035    
1036    3. Generic MLRISC
1037    
1038       a.  shuffle.sml rewritten to be slightly more efficient
1039       b.  DIV bug in mltree-simplify fixed (found by Fermin)
1040    
1041    4. Register Allocator
1042    
1043       a.  I now release the interference graph earlier during spilling.
1044           May improve memory usage.
1045    
1046    ----------------------------------------------------------------------
1047    Name: Matthias Blume
1048    Date: 2000/03/14 14:15:32
1049    Tag: blume_main_v110p26p1_2
1050    Description:
1051    
1052    1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
1053    additional argument called "template" which is an optional string that
1054    specifiel the layout of the tool command line.  See the CM manual for
1055    explanation.
1056    
1057    2. A special-purpose tool can be "regisitered" by simply dropping the
1058    corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
1059    directory where the .cm file lives that uses this tool.  (The
1060    behavior/misfeature until now was to look for the tool description
1061    files in the current working directory.)  As before, tool description
1062    files could also be anchored -- in which case they can live anywhere
1063    they like.  Following the recent e-mail discussion, this change should
1064    make it easier to have special-purpose tools that are shipped together
1065    with the sources of the program that uses them.
1066    
1067    ----------------------------------------------------------------------
1068    Name: Matthias Blume
1069    Date: 2000/03/10 07:48:34
1070    Tag: blume_main_v110p26p1_1
1071    Description:
1072    
1073    I added a re-written version of Dave's fixpt script to src/system.
1074    Changes relative to the original version:
1075      - sh-ified (not everybody has ksh)
1076      - automatically figures out which architecture it runs on
1077      - uses ./makeml a bit more cleverly
1078      - never invokes ./installml (and, thus, does not clobber your
1079        good and working installation of sml in case something goes wrong)
1080      - accepts max iteration count using option "-iter <n>"
1081      - accepts a "base" name using option "-base <base>"
1082    
1083    It does not build any extraneous heap images but directly rebuilds
1084    bin- and boot-hierarchies using makeml's "-rebuild" switch. Finally,
1085    it can incorporate existing bin- and boot- hierarchies.  For example,
1086    suppose the base is set to "sml" (which is the default).  Then it
1087    successively builds
1088    
1089            sml.bin.<arch>-unix and sml.boot.<arch>-unix
1090    then    sml1.bin.<arch>-unix and sml1.boot.<arch>-unix
1091    then    sml2.bin.<arch>-unix and sml2.boot.<arch>-unix
1092    ...
1093    then    sml<n>.bin.<arch>-unix and sml<n>.boot.<arch>-unix
1094    
1095    and so on.  If any of these already exist, it will just use what's
1096    there.  In particular, many people will have the initial set of bin
1097    and boot files around, so this saves time for at least one full
1098    rebuild.  Having sets of the form <base><k>.{bin,boot}.<arch>-unix for
1099    <k>=1,2,... is normally not a good idea when invoking fixpt.  However,
1100    they might be the result of an earlier partial run of fixpt (which
1101    perhaps got accidentially killed).  In this case, fixpt will quickly
1102    move through what exists before continuing where it left off earlier,
1103    and, thus, saves a lot of time.
1104    
1105    ----------------------------------------------------------------------
1106    Name: Allen Leung
1107    Date: 00/03/10 02:20:00
1108    Tag: leunga-20000310-fix_x86_asm_ra
1109    Description:
1110    
1111    More assembly output problems involving the indexed addressing mode
1112    on the x86 have been found and corrected. Thanks to Fermin Reig for the
1113    fix.
1114    
1115    The interface and implementation of the register allocator have been changed
1116    slightly to accommodate the possibility to skip the register allocation
1117    phases completely and go directly to memory allocation.  This is needed
1118    for C-- use.
1119    
1120    ----------------------------------------------------------------------
1121    Name: Matthias Blume
1122    Date: 00/03/09 10:23:53
1123    Tag: blume_main_v110p26p1_0
1124    Description:
1125    
1126    * Complete re-organization of library names.  Many libraries have been
1127    consolidated so that they share the same path anchor.  For example,
1128    all MLRISC-related libraries are anchored at MLRISC, most libraries that
1129    are SML/NJ-specific are under "smlnj".  Notice that names like
1130    host-cmb.cm or host-compiler.cm no longer exist.  See system/README
1131    for a complete description of the new naming scheme.  Quick reference:
1132    
1133       host-cmb.cm        -> smlnj/cmb.cm
1134       host-compiler.cm   -> smlnj/compiler.cm
1135       full-cm.cm         -> smlnj/cm.cm
1136       <arch>-<os>.cm     -> smlnj/cmb/<arch>-<os>.cm
1137       <arch>-compiler.cm -> smlnj/compiler/<arch>.cm
1138    
1139    * Bug fixes in CM.
1140        - exceptions in user code are being passed through (i.e., reach top level)
1141        - more bugs in paranoia mode fixed
1142        - bug related to checking group owners fixed
1143    
1144    * New install.sh script that automagically fetches archive files:
1145      The new file config/srcarchiveurl must contain the URL of the
1146      (remote) directory that contains bin files (or other source archives).
1147      If install.sh does not find the archive locally, it tries to get
1148      it from that remote directory.
1149      This should simplify installation further:  For machines that have
1150      access to the internet, just fetch <version>-config.tgz, unpack it,
1151      edit config/targets, and go (run config/install.sh).  The scipt will
1152      fetch everything else that it might need all by itself.
1153    
1154      For CVS users, this mechanism is not relevant for source archives, but
1155      it is convenient for getting new sets of binfiles.
1156    
1157      Archives should be tar files compressed with either gzip, compress, or
1158      bzip2.  The script recognizes .tgz, .tar, tar.gz, tz, .tar.Z, and .tar.bz2.
1159    
1160    ----------------------------------------------------------------------
1161    Name: Matthias Blume
1162    Date: 2000/03/07 04:01:04
1163    Tag: blume_main_v110_26_2
1164  Description:  Description:
1165    - size info in BOOTLIST
1166         * no fixed upper limits for number of bootfiles or length of
1167           bootfile names in runtime
1168         * falling back to old behavior if no BOOTLIST size info found
1169    - allocation size heuristics in .run-sml
1170         * tries to read cache size from /proc/cpuinfo (this is important for
1171            small-cache Celeron systems!)
1172    - install.sh robustified
1173    - CM manual updates
1174    - paranoid mode
1175         * no more CMB.deliver() (i.e., all done by CMB.make())
1176         * can re-use existing sml.boot.* files
1177         * init.cmi now treated as library
1178         * library stamps for consistency checks
1179    - sml.boot.<arch>-<os>/PIDMAP file
1180         * This file is read by the CM startup code.  This is used to minimize
1181           the amount of dynamic state that needs to be stowed away for the
1182           purpose of sharing between interactive system and user code.
1183    - CM.Anchor.anchor instead of CM.Anchor.{set,cancel}
1184         * Upon request by Elsa.  Anchors now controlled by get-set-pair
1185           like most other CM state variables.
1186    - Compiler.CMSA eliminated
1187         * No longer supported by CM anyway.
1188    - fixed bugs in pickler that kept biting Stefan
1189         * past refs to past refs (was caused by the possibility that
1190           ad-hoc sharing is more discriminating than hash-cons sharing)
1191         * integer overflow on LargeInt.minInt
1192    - ml-{lex,yacc} build scripts now use new mechanism
1193      for building standalone programs
1194    - fixed several gcc -Wall warnings that were caused by missing header
1195      files, missing initializations, etc., in runtime (not all warnings
1196      eliminated, though)

Legend:
Removed from v.570  
changed lines
  Added in v.656

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