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

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

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