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

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

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