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

Legend:
Removed from v.580  
changed lines
  Added in v.653

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