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

Legend:
Removed from v.572  
changed lines
  Added in v.641

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