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 652, Tue Jun 6 02:14:56 2000 UTC revision 799, Fri Mar 16 15:55:43 2001 UTC
# Line 11  Line 11 
11  Date:  Date:
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15    ----------------------------------------------------------------------
16    Name: Matthias Blume
17    Date: 2001/03/16 11:00:00 EST
18    Tag: blume-20010316-MLTREE-fixup
19    Description:
20    
21    This is a minor fixup for an (untagged) earlier commit by Allen.
22    (A file was missing).
23    
24    ----------------------------------------------------------------------
25    Name: Allen Leung
26    Date: Mon Mar  5 18:54:57 EST 2001
27    Tag: leunga-20010305-cut-support
28    
29    1. New support for alternative control-flow in MLTREE.
30       Currently we support
31    
32          FLOW_TO(CALL ...., [k1,...,kn])
33    
34       This is needed for 'cuts to' in C-- and try/handle-like constructs
35       in Moby
36    
37       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
38    
39    2. Register Allocator
40    
41       Changes in interface [from Fermin, John]
42    
43    3. Alpha 8-bit SLL support [Fermin]
44    
45    4. All architectures
46    
47       A new module (ClusterExpandCopies) for expanding parallel copies.
48    
49    ----------------------------------------------------------------------
50    Name: Allen Leung
51    Date: 2001/02/27 23:07:00 EST
52    Tag: leunga-20010227-minor-stuff
53    
54    1. Alpha bug fix for CMOVNE
55    2. Handle mltree COND(..,FCMP ...,...)
56    3. Bug fix in simplifier
57    
58    ----------------------------------------------------------------------
59    Name: Matthias Blume
60    Date: 2001/01/30 17:50:00 EST
61    Tag: blume-20010130-sync
62    Description:
63    
64    This is just a minor update to sync my devel branch with the main brach.
65    The only visible change is the addition of some README files.
66    
67    ----------------------------------------------------------------------
68    Name: Matthias Blume
69    Date: 2001/01/12 23:30:00 JST
70    Tag: blume-20010112-bootfiles
71    Description:
72    
73    Made a new set of bootfiles that goes with the current state of the
74    repository.
75    
76    ----------------------------------------------------------------------
77    Name: Matthias Blume
78    Date: 2001/01/12 21:20:00 JST
79    Tag: blume-20010112-sync
80    Description:
81    
82    I am just flushing out some minor changes that had accumulated in
83    my private branch in order to sync with the main tree.  (This is
84    mainly because I had CVS trouble when trying to merge _into_ my
85    private branch.)
86    
87    Most people should be completely unaffected by this.
88    
89    ----------------------------------------------------------------------
90    Name: Allen Leung
91    Date: Thu Jan 11 21:03:00 EST 2001
92    Tag: leunga-20010111-labexp=mltree
93    Description:
94    
95    1.  Removed the type LabelExp and replace it by MLTree.
96    2.  Rewritten mltree-simplify with the pattern matcher tool.
97    3.  There were some bugs in alpha code generator which would break
98        64-bit code generation.
99    4.  Redo the tools to generate code with the
100    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
101        are now generated by perl scripts.
102    
103    ----------------------------------------------------------------------
104    Name: Matthias Blume
105    Date: 2001/01/10 21:55:00 JST
106    Tag: blume-20010110-rcc
107    Description:
108    
109    The RCC stuff now seems to work (but only on the x86).
110    This required hacking of the c-calls interface (and -implementation) in
111    MLRISC.
112    
113    Normal compiler users should be unaffected.
114    
115    ----------------------------------------------------------------------
116    Name: Matthias Blume
117    Date: 2001/01/09 01:20:00 JST
118    Tag: blume-20010109-rcc
119    Description:
120    
121    This is a fairly big patch, flushing out a large number of pending
122    changes that I made to my development copy over the last couple of days.
123    
124    Of practical relevance at this moment is a workaround for a pickling
125    bug that Allen ran into the other day.  The cause of the bug itself is
126    still unknown and it might be hard to fix it properly, but the
127    workaround has some merits of its own (namely somewhat reducing pickling
128    overhead for certain libraries).  Therefore, I think this solution should
129    be satisfactory at this time.
130    
131    The rest of the changes (i.e., the vast majority) has to do with my
132    ongoing efforts of providing direct support for C function calls from
133    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
134    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
135    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
136    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
137    handle RCC.
138    
139    The last part (the changes to mlriscGen.sml) are still known to be
140    wrong on the x86 and not implemented on all other architectures.  But
141    the infrastructure is in place. I had to change a few functor
142    signatures in the backend to be able to route the CCalls interface
143    from MLRISC there, and I had to specialize the mltree type (on the
144    x86) to include the necessary extensions. (The extensions themselves
145    were already there and redy to go in MLRISC/x86).
146    
147    Everything should be very happy as soon as someone helps me with
148    mlriscGen.sml...
149    
150    In any case, nothing of this should matter to anyone as long as the
151    new primop is not being used (which is going to be the case unless you
152    find it where I hid it :). The rest of the compiler is completely
153    unaffected.
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume
157    Date: 2001/01/05 00:30:00 JST
158    Tag: blume-20010105-primops
159    Description:
160    
161    Added some experimental support for work that I am doing right now.
162    These changes mostly concern added primops, but there is also a new
163    experimental C library in the runtime system (but currently not enabled
164    anywhere except on Linux/X86).
165    
166    In the course of adding primops (and playing with them), I discovered that
167    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
168    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
169    To recover, I made type information in INL_PRIM mandatory and changed
170    prim.sml as well as built-in.sml accordingly.  The InLine structure now
171    has complete, correct type information (i.e., no bottom types).
172    
173    Since all these changes mean that we need new binfiles, I also bumped the
174    version number to 110.32.1.
175    
176    ----------------------------------------------------------------------
177    Name: Matthias Blume
178    Date: 2000/12/30 22:10:00 JST
179    Tag: blume-20001230-various
180    Description:
181    
182    Added proxy libraries for MLRISC and let MLRISC libraries refer
183    to each other using path anchors.  (See CM manual for explanation.)
184    
185    Updated CM documentation.
186    
187    Fixed some bugs in CM.
188    
189    Implemented "proxy" libraries (= syntactic sugar for CM).
190    
191    Added "-quiet" option to makeml and changed runtime system accordingly.
192    
193    Added cleanup handler for exportML to reset timers and compiler stats.
194    
195    ----------------------------------------------------------------------
196    Name: Lal George
197    Date: 2000/12/22 22:22:58 EST 2000
198    Tag: Release_110_32
199    Description:
200    
201            Infinite precision used throughout MLRISC.
202            see MLRISC/mltree/machine-int.sig
203    
204    ----------------------------------------------------------------------
205    Name: Matthias Blume
206    Date: 2000/12/22 23:16:00 JST
207    Tag: blume-20001222-warn
208    Description:
209    
210    Corrected wording and formatting of some CM warning message which I
211    broke in my previous patch.
212    
213    ----------------------------------------------------------------------
214    Name: Matthias Blume
215    Date: 2000/12/22 21:20:00 JST
216    Tag: blume-20001222-anchorenv
217    Description:
218    
219    Fixed CM's handling of anchor environments in connection with CMB.make.
220    
221    ----------------------------------------------------------------------
222    Name: Matthias Blume
223    Date: 2000/12/22 13:15:00 JST
224    Tag: blume-20001222-cleanup
225    Description:
226    
227    Removed src/cm/ffi which does not (and did not) belong here.
228    
229    ----------------------------------------------------------------------
230    Name: Matthias Blume
231    Date: 2000/12/21 23:55:00 JST
232    Tag: blume-20001221-exn
233    Description:
234    
235    Probably most important: CM no longer silently swallows all exceptions
236    in the compiler.
237    Plus: some other minor CM changes.  For example, CM now reports some
238    sizes for generated binfiles (code, data, envpickle, lambdapickle).
239    
240    ----------------------------------------------------------------------
241    Name: Matthias Blume
242    Date: 2000/12/15 00:01:05 JST
243    Tag: blume-20001215-dirtool
244    Description:
245    
246    - "dir" tool added.
247    - improvements and cleanup to Tools structure
248    - documentation updates
249    
250    ----------------------------------------------------------------------
251    Name: Allen Leung
252    Date: Thu Dec 14 03:45:24 EST 2000
253    Description:
254    Tag:  leunga-20001214-int-inf
255    Description:
256    
257       In IntInf, added these standard functions, which are missing from our
258    implementation:
259    
260        andb : int * int -> int
261        xorb : int * int -> int
262        orb  : int * int -> int
263        notb : int -> int
264         <<   : int * word -> int
265        ~>>  : int * word -> int
266    
267       Not tested, I hope they are correct.
268    
269    ----------------------------------------------------------------------
270    Name: Allen Leung
271    Date: Fri Dec  8 19:23:26 EST 2000
272    Description:
273    Tag:  leunga-20001208-nowhere
274    Description:
275    
276      Slight improvements to the 'nowhere' tool to handle OR-patterns,
277    to generate better error messages etc.  Plus a brief manual.
278    
279    ----------------------------------------------------------------------
280    Name: Lal George
281    Date: 2000/12/08 09:54:02 EST 2000
282    Tag: Release_110_31
283    Description:
284    
285    - Version 110.31
286    ----------------------------------------------------------------------
287    Name: Allen Leung
288    Date: Thu Dec  7 22:01:04 EST 2000
289    Tag:  leunga-20001207-cell-monster-hack
290    Description:
291    
292    Major MLRISC internal changes.  Affect all clients.
293    Summary:
294    
295    1.  Type CELLS.cell = int is now replaced by a datatype.
296        As a result, the old regmap is now gone.  Almost all interfaces
297        in MLRISC change as a consequence.
298    
299    2.  A new brand version of machine description tool (v3.0) that generates
300        modules expecting the new interface.  The old version is removed.
301    
302    3.  The RA interface has been further abstracted into two new functors.
303        RISC_RA and X86RA.  These functors have much simpler interfaces.
304        [See also directory MLRISC/demo.]
305    
306    4.  Some other new source->source code generation tools are available:
307    
308        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
309        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
310           I use this tool to generate the peephole optimizers---with the new
311           cell type changes, peephole rules are becoming difficult to write
312           without conditional pattern matching.
313    
314    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
315        cover the entire MLRISC source tree so many things broke.
316    
317    6.  CM files have been moved to the subdirectory MLRISC/cm.
318        They are moved because there are a lot of them and they clutter up the
319        root dir.
320    
321    7.  More detailed documentation to come...
322    
323        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
324        a makeml -rebuild first.  This is because of other other
325        changes that Matthias has made (see below).
326    
327    
328    ----------------------------------------------------------------------
329    Name: Matthias Blume
330    Date: 2000/11/30 23:12:00 JST
331    Tag: blume-20001130-filereorg
332    Description:
333    
334    Some manual updates and some file reorganizations in CM.
335    
336    ----------------------------------------------------------------------
337    Name: Matthias Blume
338    Date: 2000/11/24 17:45:00 JST
339    Tag: blume-20001124-link
340    Description:
341    
342    Drastically improved link traversal code for the case that the dynamic
343    value was already loaded at bootstrap time.  As a result, CM and CMB
344    now both load blazingly fast -- even on a very slow machine.  Also,
345    memory consumption has been further reduced by this.
346    
347    Warning: The format of the PIDMAP file has changed.  THerefore, to
348    bootstrap you have to do this:
349    
350    1. Run CMB.make
351    2. Make a symbolic link for the boot directory:
352         ln -s sml.boot.ARCH-OS xxx
353    3. "Rebuild" the boot directory:
354         ./makeml -boot xxx -rebuild sml ; rm xxx
355    4. Boot normally:
356          ./makeml
357    
358    ----------------------------------------------------------------------
359    Name: Matthias Blume
360    Date: 2000/11/21 21:20:00 JST
361    Tag: blume-20001121-tools
362    Description:
363    
364    Continued hacking on autoloading problem -- with success this time.
365    Also changed tool-plugin mechanism.  See new CM manual.
366    
367    ----------------------------------------------------------------------
368    Name: Matthias Blume
369    Date: 2000/11/19 14:30:00 JST
370    Tag:  blume-20001119-autoload
371    Description:
372    
373    Some hacking to make autoloading faster.  Success for CMB, no success
374    so far for CM.  There is a reduced structure CM' that autoloads faster.
375    (This is a temporary, non-documented hack to be eliminated again when
376    the general problem is solved.)
377    
378    ----------------------------------------------------------------------
379    Name: Matthias Blume
380    Date: 2000/11/17 14:10:00 JST
381    Tag: blume-20001117-pickle-lib
382    Description:
383    
384    1. Eliminated comp-lib.cm
385    2. Made pickle-lib.cm
386    3. Eliminated all uses of intset.sml (from comp-lib.cm)
387    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
388       equivalent constructs from smlnj-lib.cm (INtHashTable).
389    5. Point 4. also goes for those uses of intmap.* in MLRISC.
390       Duplicated intmap modules thrown out.
391    6. Hunted down all duplicated SCC code and replaced it with
392       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
393    7. Rewrote Feedback module.
394    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
395       should be thrown out and equivalent modules from smlnj-lib.cm
396       should be used (IntRedBlackSet, IntListSet, ...).
397    
398    Confirmed that compiler compiles to fixpoint.
399    
400    ----------------------------------------------------------------------
401    Name: Allen Leung
402    Date: 2000/11/10 18:00:00
403    Tag: leunga-20001110-new-x86-fp
404    
405    A new x86 floating point code generator has been added.
406    By default this is turned off.  To turn this on, do:
407    
408        CM.autoload "$smlnj/compiler.cm";
409        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
410    
411    Changes:
412    
413    1.  Changed FTAN to FPTAN so that the assembly output is correct.
414    2.  Changed the extension callback for FTANGENT to generate:
415    
416              fptan
417              fstp  %st(0)
418        instead of
419              fptan
420              fstpl ftempmem
421    
422    3.  Numerous assembly fixes for x86.
423    
424    5.  Cleaned up the machine code output module x86/x86MC.sml and added
425        support for a whole bunch of instructions and addressing modes:
426    
427          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
428          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
429          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
430          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
431          fxch %st(n)
432          fld %st(n)
433          fst %st(n)
434          fst mem
435          fstp %st(n)
436          fucom %st(n)
437          fucomp %st(n)
438    
439        All these are now generated when the fast fp mode is turned on.
440    
441    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
442    
443    ----------------------------------------------------------------------
444    Name: Matthias Blume
445    Date: 2000/11/09 11:20:00 JST
446    Tag: blume-20001109-scc
447    Description:
448    
449    Eliminated some code duplication:
450    
451    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
452       (Otherwise the functor is useless.)
453    2. Used GraphSCCFn where SCCUtilFun was used previously.
454    3. Got rid of SCCUtilFun (in comp-lib.cm).
455    
456    ----------------------------------------------------------------------
457    Name: Lal George
458    Date: 2000/11/06 09:02:21 EST 2000
459    Tag: Release_110_30
460    Description:
461    
462    - Version 110.30
463    ----------------------------------------------------------------------
464    Name: Matthias Blume
465    Date: 2000/11/04 14:45:00
466    Tag: blume-20001104-mlbuild
467    Description:
468    
469    - Made ml-build faster on startup.
470    - Documentation fixes.
471    
472    ----------------------------------------------------------------------
473    Name: Matthias Blume
474    Date: 2000/11/02 17:00:00 JST
475    Tag: blume-20001102-condcomp
476    Description:
477    
478    - Small tweaks to pickler -- new BOOTFILES!
479    - Version bumped to 110.29.2.
480    - Added conditional compilation facility to init.cmi (see comment there).
481    ----------------------------------------------------------------------
482    Name: Allen Leung
483    Date: 2000/10/23 19:31:00
484    Tag: leunga-20001023-demo-ra
485    
486    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
487    2. Test programs for the graph library updated
488    3. Some new MLRISC demo programs added
489    
490    ----------------------------------------------------------------------
491    Name: Matthias Blume
492    Date: 2000/08/31 22:15:00 JST
493    Tag: blume-20001017-errmsg
494    Description:
495    
496    More error message grief: Where there used to be no messages, there
497    now were some that had bogus error regions.  Fixed.
498    
499    ----------------------------------------------------------------------
500    Name: Matthias Blume
501    Date: 2000/08/31 17:30:00 JST
502    Tag: blume-20001017-v110p29p1
503    Description:
504    
505    I made a version 110.29.1 with new bootfiles.
506    
507    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
508              CM documentation changes and a small bugfix in CM's error reporting.
509    
510    ----------------------------------------------------------------------
511    Name: Lal George
512    Date: 2000/09/27 14:42:35 EDT
513    Tag: george-20000927-nodestatus
514    Description:
515    
516    Changed the type of the nodestatus, so that:
517    
518            SPILLED(~1)             is now SPILLED
519            SPILLED(m) where m>=0   is now MEMREG(m)
520            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
521    
522    ----------------------------------------------------------------------
523    Name: Matthias Blume
524    Date: 2000/09/07 14:45:00 JST
525    Tag: blume-20000907-cmerrmsg
526    Description:
527    
528    Small tweak to CM to avoid getting ML syntax error messages twice.
529    
530    ----------------------------------------------------------------------
531    Name: Matthias Blume
532    Date: 2000/08/31 18:00:00 JST
533    Tag: blume-20000831-cvsbootfiles
534    Description:
535    
536    New URL for boot files (because the 110.29 files on the BL server do
537    now work correctly with my updated install scripts for yacc and lex).
538    
539    ----------------------------------------------------------------------
540    Name: Matthias Blume
541    Date: 2000/08/08 12:33:00 JST
542    Tag: blume-20000808-manual
543    Description:
544    
545    Tiny update to CM manual.
546    
547    ----------------------------------------------------------------------
548    Name: Allen Leung
549    Date: 2000/08/7 19:31:00
550    Tag: leunga-20000807-a-whole-bunch-of-stuff
551    
552      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
553    and Mobdy.
554    
555    1.  x86
556    
557       a.  Fixes to peephole module by John and Dan.
558       b.  Assembly fix to SETcc by Allen.
559       c.  Fix to c-call by John.
560       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
561       e.  Instruction selection optimization to SETcc as suggested by John.
562    
563           For example,
564    
565            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
566    
567           should generate:
568    
569            MOVL a, x
570            SUBL b, x
571            SHRL 31, x
572    
573    2.  IR stuff
574    
575         A bunch of new DJ-graph related algorithms added.  These
576         speed up SSA construction.
577    
578    3.  SSA + Scheduling
579    
580         Added code for SSA and scheduling to the repository
581    
582    ----------------------------------------------------------------------
583    Name: Lal George
584    Date: 2000/07/27 11:53:14 EDT
585    
586    Tag: lal-20000727-linux-ppc
587    Description:
588    
589     Made changes to support Linux PPC.
590     p.s. I have confirmation that the 110.29 boot files work fine.
591    
592    ----------------------------------------------------------------------
593    Name: Matthias Blume
594    Date: 2000/07/27 17:40:00 JST
595    Tag: blume-20000727-scripts
596    Description:
597    
598    !!!! WARNING !!!!
599    You must recompile the runtime system!
600    !!!! WARNING !!!!
601    
602    This is basically another round of script-enhancements:
603    
604    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
605       and undefine CM preprocessor symbols.
606    
607    2. ml-build avoids generating a new heap image if it finds that the
608       existing one is still ok.  (The condition is that no ML file had to
609       be recompiled and all ML files are found to be older that the heap
610       file.)
611    
612       To make this work smoothly, I also hacked the runtime system as
613       well as SMLofNJ.SysInfo to get access to the heap image suffix
614       (.sparc-solaris, ...) that is currently being used.
615    
616       Moreover, the signature of CM.mk_standalone has changed.  See the
617       CM manual.
618    
619    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
620       CM manual for details.)
621    
622    4. More CM manual updates:
623        - all of the above has been documented.
624        - there is now a section describing the (CM-related) command line
625          arguments that are accepted by the "sml" command
626    
627    ----------------------------------------------------------------------
628    Name: Matthias Blume
629    Date: 2000/07/25 16:20:00 JST
630    Tag: blume-20000725-makedepend
631    Description:
632    
633    Added a script called ml-makedepend.  This can be used in makefiles
634    for Unix' make in a way very similar to the "makedepend" command for
635    C.
636    
637    The script internally uses function CM.sources.
638    
639    Synopsis:
640    
641        ml-makedepend [-f makefile] cmfile targetname
642    
643    The default for the makefile is "makefile" (or "Makefile" should
644    "makefile" not exist).
645    
646    ml-makedepend adds a cmfile/targetname-specific section to this
647    makefile (after removing the previous version of this section).  The
648    section contains a single dependency specification with targetname on
649    the LHS (targetname is an arbitrary name), and a list of files derived
650    from the cmfile on the RHS.  Some of the files on the RHS are
651    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
652    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
653    path names.  The makefile writer is responsible for making sure that
654    these variables have correct at the time "make" is invoked.
655    
656    ----------------------------------------------------------------------
657    Name: Matthias Blume
658    Date: 2000/07/22 23:30:00 JST
659    Tag: blume-20000722-urlupdate
660    Description:
661    
662    Changed BOOT and config/srcarchiveurl to point to BL server:
663    
664        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
665    
666    ----------------------------------------------------------------------
667    Name: Matthias Blume
668    Date: 2000/07/18 18:00:00 JST
669    Tag: blume-20000718-Version_110_29
670    Description:
671    
672    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
673    
674    2. Updated config/version to 110.29
675    
676    3. Updated config/srcarchiveurl
677    
678    3. New boot files!
679       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
680    
681    ----------------------------------------------------------------------
682    Name: Matthias Blume
683    Date: 2000/07/11 13:58:00 JST
684    Tag: blume-20000711-doctypo
685    Description:
686    
687    Fixed a few typos in CM manual.
688    
689    ----------------------------------------------------------------------
690    Name: Allen Leung
691    Date: 2000/06/15 00:38:00
692    Tag: leunga-20000704-sparc-x86
693    
694    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
695    2. fix to x86 RET bug [found by Dan Grossman]
696    3. sparc assembly bug fix for ticc instructions [found by Fermin]
697    
698       Affects c-- and moby only
699    
700    ----------------------------------------------------------------------
701    Name: Matthias Blume
702    Date: 2000/07/04 15:26:00
703    Tag: blume-20000704-trigger
704    Description:
705    
706    1. Improvements to CM manual.
707    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
708       of getting a back-trace.  The function, when called, raises an
709       internal exception which explicitly carries the full back-trace history,
710       so it is unaffected by any intervening handle-raise pairs ("trivial"
711       or not).  The interactive loop will print that history once it arrives
712       at top level.
713       Short of having all exceptions implicitly carry the full history, the
714       recommended way of using this facility is:
715         - compile your program with instrumentation "on"
716         - run it, when it raises an exception, look at the history
717         - if the history is "cut off" because of some handler, go and modify
718           your program so that it explicitly calls BTrace.trigger
719         - recompile (still instrumented), and rerun; look at the full history
720    
721    ----------------------------------------------------------------------
722    Name: Matthias Blume
723    Date: 2000/07/03 15:36:00 JST
724    Tag: blume-20000702-manual
725    Description:
726    
727    Small corrections and updates to CM manual.
728    
729    ----------------------------------------------------------------------
730    Name: Matthias Blume
731    Date: 2000/06/29 16:04:00 JST
732    Tag: blume-20000629-yacctool
733    Description:
734    
735    Changes:
736    
737    1. Class "mlyacc" now takes separate arguments to pass options to
738       generated .sml- and .sig-files independently.
739    2. Corresponding CM manual updates.
740    3. BTrace module now also reports call sites.  (However, for loop clusters
741       it only shows from where the cluster was entered.)  There are associated
742       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
743    
744    ----------------------------------------------------------------------
745    Name: Matthias Blume
746    Date: 2000/06/27 16:51:00 JST
747    Tag: blume-20000627-noweb
748    Description:
749    
750    Changes:
751    
752     1. Implemented "subdir" and "witness" options for noweb tool.
753        This caused some slight internal changes in CM's tool implementation.
754     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
755        some remaining issues from earlier path anchor changes.
756     3. Updated CM manual accordingly.
757    
758     4. Changed implementation of back-tracing so that I now consider it
759        ready for prime-time.
760    
761        In particular, you don't have to explicitly trigger the back-trace
762        anymore.  Instead, if you are running BTrace-instrumented code and
763        there is an uncaught exception (regardless of whether or not it was
764        raised in instrumented code), the top-level evalloop will print
765        the back-trace.
766    
767        Features:
768    
769          - Instrumented and uninstrumented code work together seemlessly.
770            (Of course, uninstrumented code is never mentioned in actual
771             back-traces.)
772    
773          - Asymptotic time- and space-complexity of instrumented code is
774            equal to that of uninstrumented code.  (This means that
775            tail-recursion is preserved by the instrumentation phase.)
776    
777          - Modules whose code has been instrumented in different sessions
778            work together without problem.
779    
780          - There is no penalty whatsoever on uninstrumented code.
781    
782          - There is no penalty on "raise" expressions, even in
783            instrumented code.
784    
785        A potential bug (or perhaps it is a feature, too):
786    
787          A back-trace reaches no further than the outermost instrumented
788          non-trivial "raise".  Here, a "trivial" raise is one that is the
789          sole RHS of a "handle" rule.  Thus, back-traces reach trough
790    
791               <exp> handle e => raise e
792    
793          and even
794    
795               <exp> handle Foo => raise Bar
796    
797          and, of course, through
798    
799               <exp> handle Foo => ...
800    
801         if the exception was not Foo.
802    
803         Back-traces always reach right through any un-instrumented code
804         including any of its "handle" expressions, trivial or not.
805    
806       To try this out, do the following:
807    
808         - Erase all existing binfiles for your program.
809           (You may keep binfiles for those modules where you think you
810            definitely don't need back-tracing.)
811         - Turn on back-trace instrumentation:
812              SMLofNJ.Internals.BTrace.mode (SOME true);
813         - Recompile your program.  (I.e., run "CM.make" or "use".)
814         - You may now turn instrumentation off again (if you want):
815              SMLofNJ.Internals.BTrace.mode (SOME false);
816         - Run your program as usual.  If it raises an exception that
817           reaches the interactive toplevel, then a back-trace will
818           automatically be printed.  After that, the toplevel loop
819           will print the exception history as usual.
820    
821    ----------------------------------------------------------------------
822    Name: Matthias Blume
823    Date: 2000/06/26 09:56:46 JST
824    Tag: blume-20000626-setup
825    Description:
826    
827    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
828          ML code before and after compiling a file (e.g., to set compiler
829          flags)
830    
831    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
832              - associated changes to btrace.sml (BTrace instrumentation pass)
833              - cleaner implementation of btimp.sml (BTrace tracing and report
834                module)
835    
836    CM manual: * new path encoding documented
837               * description of setup-parameter to "sml" added
838    
839    The biggest user-visible change to back-tracing is that it is no
840    longer necessary to compile all traced modules within the same
841    session.  (This was a real limitation.)
842    
843    ----------------------------------------------------------------------
844    Name: Matthias Blume
845    Date: 2000/06/24 12:40:00 JST
846    Tag: blume-20000624-startup
847    Description:
848    
849    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
850    bit too often -- to put it mildly. :)
851    
852    ----------------------------------------------------------------------
853    Name: Matthias Blume
854    Date: 2000/06/23 18:20:00 JST
855    Tag: blume-20000623-btrace
856    Description:
857    
858    This updates adds a backtrace facility to aid programmers in debugging
859    their programs.  This involves the following changes:
860    
861    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
862       keeping track of the current call stack.  When programs are compiled
863       in a special mode, the compiler will insert calls to these hooks
864       into the user program.
865       "Hook" means that it is possible for different implementations of
866       back-tracing to register themselves (at different times).
867    
868    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
869       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
870       It can be turned on using this call:
871         SMLofNJ.Internals.BTrace.mode (SOME true);
872       Turning it off again:
873         SMLofNJ.Internals.BTrace.mode (SOME false);
874       Querying the current status:
875         SMLofNJ.Internals.BTrace.mode NONE;
876       Annotated programs are about twice as big as normal ones, and they
877       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
878       where all hooks do nothing).  The slowdown with a plugin that is
879       actually useful (such as the one supplied by default) is even greater,
880       but in the case of the default plugin it is still only an constant
881       factor (amortized).
882    
883    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
884       with a sub-structure BTrace for controlling back-tracing.  In particular,
885       the above-mentioned function "mode" controls whether the annotation
886       phase is invoked by the compiler.  Another important function is
887       "trigger": when called it aborts the current execution and causes
888       the top-level loop to print a full back-trace.
889    
890    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
891       for back-tracing.  It keeps track of the dynamic call stack and in
892       addition to that it keeps a partial history at each "level" of that
893       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
894       d and b (at separate times, dynamically), then the report will show:
895    
896       GOTO   d
897             /c
898       GOTO  \b
899       CALL   a
900    
901       This shows that there was an initial non-tail call of a, then a
902       tail-call to b or c, looping behavior in a cluster of functions that
903       consist of b and c, and then a goto from that cluster (i.e., either from
904       b or from c) to d.
905    
906       Note that (depending on the user program) the amount of information
907       that the back-trace module has to keep track of at each level is bounded
908       by a constant.  Thus, the whole implementation has the same asymptotical
909       complexity as the original program (both in space and in time).
910    
911    5. compiler/TopLevel/interact/evalloop.sml has been modified to
912       handle the special exception SMLofNJ.Internals.BTrace.BTrace
913       which is raised by the "trigger" function mentioned above.
914    
915    Notes on usage:
916    
917    - Annotated code works well together with unannotated code:
918    Unannotated calls simply do not show up at all in the backtrace.
919    
920    - It is not a good idea to let modules that were annotated during
921    different sessions run at the same time.  This is because the compiler
922    chooses small integers to identify individual functions, and there
923    will be clashes if different modules were compiled in separate sessions.
924    (Nothing will crash, and you will even be told about the clashes, but
925    back-trace information will in general not be useful.)
926    
927    - Back-tracing can be confused by callcc and capture.
928    
929    - The only way of getting a back-trace right now is to explicitly
930    invoke the "trigger" function from your user program.  Eventually, we
931    should make every exception carry back-trace information (if
932    available).  But since this creates more overhead at "raise"-time
933    (similar to the current exnHistory overhead), I have not yet
934    implemented this.  (The implementation will be rather easy.)  With
935    exceptions carrying back-trace information, this facility will be even
936    more useful because users don't need to modify their programs...
937    
938    - While it is possible to compile the compiler with back-trace
939    annotations turned on (I did it to get some confidence in
940    correctness), you must make absolutely sure that core.sml and
941    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
942    be compiled with annotation because there is no core access yet, but
943    if you compile btimp.sml with annotation, then the system will go into
944    an infinite recursion and crash.)
945    Since CM currently does not know about BTrace, the only way to turn
946    annotations on and off for different modules of the compiler is to
947    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
948    this is awkward and clumsy.
949    
950    Sample sessions:
951    
952    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
953    - SMLofNJ.Internals.BTrace.mode (SOME true);
954    [autoloading]
955    [autoloading done]
956    val it = false : bool
957    - structure X = struct
958    -     fun main n = let
959    -         fun a (x, 0) = d x
960    -           | a (x, n) = b (x, n - 1)
961    -         and b (x, n) = c (x, n)
962    -         and c (x, n) = a (x, n)
963    -         and d x = e (x, 3)
964    -         and e (x, 0) = f x
965    -           | e (x, n) = e (x, n - 1)
966    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
967    -           | f n = n * g (n - 1)
968    -         and g n = a (n, 3)
969    -     in
970    -         f n
971    -     end
972    - end;
973    structure X : sig val main : int -> int end
974    - X.main 3;
975    *** BACK-TRACE ***
976    GOTO   stdIn:4.2-13.20: X.main[2].f
977    GOTO-( stdIn:4.2-13.20: X.main[2].e
978    GOTO   stdIn:4.2-13.20: X.main[2].d
979         / stdIn:4.2-13.20: X.main[2].a
980         | stdIn:4.2-13.20: X.main[2].b
981    GOTO-\ stdIn:4.2-13.20: X.main[2].c
982    CALL   stdIn:4.2-13.20: X.main[2].g
983    GOTO   stdIn:4.2-13.20: X.main[2].f
984    GOTO-( stdIn:4.2-13.20: X.main[2].e
985    GOTO   stdIn:4.2-13.20: X.main[2].d
986         / stdIn:4.2-13.20: X.main[2].a
987         | stdIn:4.2-13.20: X.main[2].b
988    GOTO-\ stdIn:4.2-13.20: X.main[2].c
989    CALL   stdIn:4.2-13.20: X.main[2].g
990    GOTO   stdIn:4.2-13.20: X.main[2].f
991    GOTO-( stdIn:4.2-13.20: X.main[2].e
992    GOTO   stdIn:4.2-13.20: X.main[2].d
993         / stdIn:4.2-13.20: X.main[2].a
994         | stdIn:4.2-13.20: X.main[2].b
995    GOTO-\ stdIn:4.2-13.20: X.main[2].c
996    CALL   stdIn:4.2-13.20: X.main[2].g
997    GOTO   stdIn:4.2-13.20: X.main[2].f
998    CALL   stdIn:2.15-17.4: X.main[2]
999    -
1000    
1001    (Note that because of a FLINt bug the above code currently does not
1002    compile without BTrace turned on.)
1003    
1004    Here is another example, using my modified Tiger compiler:
1005    
1006    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1007    - SMLofNJ.Internals.BTrace.mode (SOME true);
1008    [autoloading]
1009    [autoloading done]
1010    val it = false : bool
1011    - CM.make "sources.cm";
1012    [autoloading]
1013    ...
1014    [autoloading done]
1015    [scanning sources.cm]
1016    [parsing (sources.cm):parse.sml]
1017    [creating directory CM/SKEL ...]
1018    [parsing (sources.cm):tiger.lex.sml]
1019    ...
1020    [wrote CM/sparc-unix/semant.sml]
1021    [compiling (sources.cm):main.sml]
1022    [wrote CM/sparc-unix/main.sml]
1023    [New bindings added.]
1024    val it = true : bool
1025    - Main.compile ("../testcases/merge.tig", "foo.out");
1026    *** BACK-TRACE ***
1027    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
1028    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1029    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1030    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1031    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1032    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1033    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
1034         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
1035    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
1036    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1037    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
1038    CALL   main.sml:1.18-118.4: Main.compile[2]
1039    -
1040    
1041    ----------------------------------------------------------------------
1042    Name: Matthias Blumen
1043    Date: 2000/06/21 18:00:00 JST
1044    Tag: blume-20000621-manual
1045    Description:
1046    
1047    CM manual update: Path environments documented.
1048    
1049    ----------------------------------------------------------------------
1050    Name: Matthias Blume
1051    Date: 2000/06/19 13:40:00
1052    Tag: blume-20000619-manual
1053    Description:
1054    
1055    CM manual and system/README update.  This only covers the fact that
1056    there are no more implicit anchors.  (Path environments and the "bind"
1057    option to "cm" have yet to be documented.)
1058    
1059    ----------------------------------------------------------------------
1060    Name: Matthias Blume
1061    Date: 2000/06/19 11:05:00 JST
1062    Tag: blume-20000619-chdir-bugfix
1063    Description:
1064    
1065    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
1066    
1067    ----------------------------------------------------------------------
1068    Name: Matthias Blume
1069    Date: 2000/06/18 22:00:10 JST
1070    Tag: blume-20000618-implicit-anchors-really-gone
1071    Description:
1072    
1073    I updates the previous HISTORY entry where I forgot to mention that
1074    implicit anchors are no longer with us.
1075    
1076    The current update also gets rid of the (now useless) controller
1077    CM.Control.implicit_anchors.
1078    
1079    ----------------------------------------------------------------------
1080    Name: Matthias Blume
1081    Date: 2000/06/16 17:30:00 JST
1082    Tag: blume-20000616-anchorenv
1083    Description:
1084    
1085    This patch implements the long anticipated (just kidding :) "anchor
1086    environment" mechanism.  In the course of doing this, I also
1087    re-implemented CM's internal "SrcPath" module from scratch.  The new
1088    one should be more robust in certain boundary cases.  In any case, it
1089    is a lot cleaner than its predecessor (IMHO).
1090    
1091    This time, although there is yet another boot file format change, I
1092    kept the unpickler backward-compatible.  As a result, no new bootfiles
1093    are necessary and bootstrapping is straightforward.  (You cannot read
1094    new bootfiles into an old system, but the other way around is no
1095    problem.)
1096    
1097    Visible changes:
1098    
1099    ** 0. Implicit path anchors (without the leading $-symbol) are no
1100    longer recognized at all. This means that such path names are not
1101    illegal either.  For example, the name basis.cm simply refers to a
1102    local file called "basis.cm" (i.e, the name is an ordinary path
1103    relative to .cm-files directory).  Or, to put it differently, only
1104    names that start with $ are anchored paths.
1105    
1106    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
1107    vanished.
1108    
1109    John (Reppy) had critizised this as soon as I originally proposed and
1110    implemented it, but at that time I did not really deeply believe
1111    him. :) Now I came full-circle because I need the $<singlearc> syntax
1112    in another place where it cannot be seen as an abbreviation for
1113    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
1114    seems to mean (i.e., it "expands" into the corresponding anchor
1115    value).
1116    
1117    However, when paths are used as members in CM description files, it
1118    continues to be true that there must be at least another arc after the
1119    anchor.  This is now enforced separately during semantic analysis
1120    (i.e., from a lexical/syntactical point of view, the notation is ok.)
1121    
1122    ** 2. The "cm" class now accepts an option "bind".  The option's value
1123    is a sub-option list of precisely two items -- one labeled "anchor"
1124    and the other one labeled "value".  As you might expect, "anchor" is
1125    used to specify an anchor name to be bound, and "value" specifies what
1126    the anchor is being bound to.
1127    
1128    The value must be a directory name and can be given in either standard
1129    syntax (including the possibility that it is itself an anchored path)
1130    or native syntax.
1131    
1132    Examples:
1133    
1134       foo.cm (bind:(anchor:bar value:$mystuff/bar))
1135       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
1136    
1137    and so on.
1138    
1139    The meaning of this is that the .cm-file will be processed with an
1140    augmented anchor environment where the given anchor(s) is/are bound to
1141    the given values(s).
1142    
1143    The rationale for having this feature is this: Suppose you are trying
1144    to use two different (already stable) libraries a.cm and b.cm (that
1145    you perhaps didn't write yourself).  Further, suppose each of these
1146    two libraries internally uses its own auxiliary library $aux/lib.cm.
1147    Normally you would now have a problem because the anchor "lib" can not
1148    be bound to more than one value globally.  Therefore, the project that
1149    uses both a.cm and b.cm must locally redirect the anchor to some other
1150    place:
1151    
1152       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
1153       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
1154    
1155    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
1156    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
1157    
1158    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
1159    you when you do so at the time of CM.stabilize).  Therefore, you can
1160    also use an anchored path as the value:
1161    
1162      a.cm (bind:(anchor:lib value:$a-lib))
1163      b.cm (bind:(anchor:lib value:$b-lib))
1164    
1165    Now you can globally configure (using the usual CM.Anchor.anchor or
1166    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
1167    itself is always locally bound, setting it globally is no longer
1168    meaningful or necessary (but it does not hurt either).  In fact, "lib"
1169    can still be used as a global anchor for separate purposes.  As a
1170    matter of fact, one can locally define "lib" in terms of a global
1171    "lib":
1172    
1173      a.cm (bind:(anchor:lib value:$lib/a))
1174      b.cm (bind:(anchor:lib value:$lib/b))
1175    
1176    ** 3: The encoding of path names has changed.  This affects the way
1177    path names are shown in CM's progress report and also the internal
1178    protocol encoding used for parallel make.
1179    
1180    The encoding now uses one or more ':'-separated segments.  Each
1181    segments corresponds to a file that has been specified relative to the
1182    file given by its preceding segment.  The first segment is either
1183    relative to the CWD, absolute, or anchored.  Each segment itself is
1184    basically a Unix pathname; all segments but the first are relative.
1185    
1186    Example:
1187    
1188       $foo/bar/baz.cm:a/b/c.sml
1189    
1190    This path denotes the file bar/a/b/c.sml relative to the directory
1191    denoted by anchor "foo".  Notice that the encoding also includes
1192    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
1193    paths are resolved relative to the .cm-files directory, so baz.cm must
1194    be ignored to get the "real" pathname.
1195    
1196    To make this fact more obvious, CM puts the names of such "virtual
1197    arcs" into parentheses when they appear in progress reports. (No
1198    parentheses will appear in the internal protocol encoding.)  Thus,
1199    what you really see is:
1200    
1201      $foo/bar/(baz.cm):a/b/c.sml
1202    
1203    I find this notation to be much more informative than before.
1204    
1205    Another new feature of the encoding is that special characters
1206    including parentheses, colons, (back)slashes, and white space are
1207    written as \ddd (where ddd is the decimal encoding of the character).
1208    
1209    *** The CM manual still needs to be updated.
1210    
1211    ----------------------------------------------------------------------
1212    Name: Allen Leung
1213    Date: 2000/06/15 00:38:00
1214    Tag: leunga-20000615-x86-peephole
1215    
1216    x86 Peephole fix by Fermin.  Affects c-- and moby only.
1217    
1218    ----------------------------------------------------------------------
1219    Name: Matthias Blume
1220    Date: 2000/06/12 11:40:00
1221    Tag: blume-20000612-parmakefix
1222    Description:
1223    
1224    More cleanup after changing the file naming scheme: This time I
1225    repaired the parallel make mechanism for CMB.make which I broke earlier.
1226    
1227    ----------------------------------------------------------------------
1228    Name: Allen Leung
1229    Date: 2000/06/09 01:25:00
1230    Tag: leunga-20000609-various
1231    
1232    None of these things should affect normal SML/NJ operations
1233    
1234    1. Peephole improvements provided by Fermin (c--)
1235    2. New annotation DEFUSE for adding extra dependence (moby)
1236    3. New X86 LOCK instructions (moby)
1237    4. New machine description language for reservation tables (scheduling)
1238    5. Fixes to various optimization/analysis modules (branch chaining, dominator
1239       trees etc.)
1240    6. I've changed the CM files so that they can work with versions
1241       110.0.6, 110.25 and 110.28
1242    
1243    ----------------------------------------------------------------------
1244    Name: Matthias Blume
1245    Date: 2000/06/09 12:40:00
1246    Tag: blume-20000609-log
1247    Description:
1248    
1249    - Removed all(?) remaining RCS Log entries from sources.
1250    
1251    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
1252      anchored paths).
1253    
1254    ----------------------------------------------------------------------
1255    Name: Matthias Blume
1256    Date: 2000/06/07 17:00:00 JST
1257    Tag: blume-20000607-no-implicit-anchors
1258    Description:
1259    
1260    1. This update changes the default setting for
1261    CM.Control.implicit_anchors from true to false.  This means that
1262    implicit anchors are no longer permitted by default.  I also tried to
1263    make sure that nothing else still relies on implicit anchors.
1264    (This is the next step on the schedule towards a CM that does not even
1265    have the notion of implicit anchors anymore.)
1266    
1267    2. More CM manual updates.
1268    
1269    3. I managed to track down and fix the pickling bug I mentioned last
1270    time.  Because of the previously existing workaround, this entails no
1271    immediate practical changes.
1272    
1273  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1274  Name: Matthias Blume  Name: Matthias Blume
1275  Date: 2000/06/06 11:15:00 JST  Date: 2000/06/06 11:15:00 JST
# Line 544  Line 1803 
1803    
1804  3.  Assembly  3.  Assembly
1805    
1806      When generating assemby, resolve the value of client defined constants,      When generating assembly, resolve the value of client defined constants,
1807      instead of generating symbolic values.  This is controlled by the      instead of generating symbolic values.  This is controlled by the
1808      new flag "asm-resolve-constants", which is default to true.      new flag "asm-resolve-constants", which is default to true.
1809    
# Line 567  Line 1826 
1826    
1827  To this end, I arranged that instead of "structure Core" as "structure  To this end, I arranged that instead of "structure Core" as "structure
1828  _Core" is bound in the pervasive environment.  Core access is done via  _Core" is bound in the pervasive environment.  Core access is done via
1829  _Core (which can never be accidentially rebound because _Core is not a  _Core (which can never be accidentally rebound because _Core is not a
1830  legal surface-syntax symbol).  legal surface-syntax symbol).
1831    
1832  The current solution is much cleaner because the core environment is  The current solution is much cleaner because the core environment is
# Line 577  Line 1836 
1836  with dynamic and symbolic parts of the core environment.  with dynamic and symbolic parts of the core environment.
1837    
1838  Remaining hackery (to bind the "magic" symbol _Core) is localized in the  Remaining hackery (to bind the "magic" symbol _Core) is localized in the
1839  compilation mananger's bootstrap compiler (actually: in the "init group"  compilation manager's bootstrap compiler (actually: in the "init group"
1840  handling).  See the comments in src/system/smlnj/init/init.cmi for  handling).  See the comments in src/system/smlnj/init/init.cmi for
1841  more details.  more details.
1842    
# Line 692  Line 1951 
1951     (specified in the .cm file at each instance where the tool's class is     (specified in the .cm file at each instance where the tool's class is
1952     used).     used).
1953    
1954     This was done to accomodate the new "make" and "shell" tools which     This was done to accommodate the new "make" and "shell" tools which
1955     facilitate fairly seemless hookup to portions of code managed using     facilitate fairly seamless hookup to portions of code managed using
1956     Makefiles or Shell scripts.     Makefiles or Shell scripts.
1957    
1958     There are no classes "shared" or "private" anymore.  Instead, the     There are no classes "shared" or "private" anymore.  Instead, the
# Line 705  Line 1964 
1964    
1965     All existing tools are described in the CM manual.     All existing tools are described in the CM manual.
1966    
1967     - Slightly better error handling.  (CM now surpresses many followup     - Slightly better error handling.  (CM now suppresses many followup
1968     error messages that tended to be more annoying than helpful.)     error messages that tended to be more annoying than helpful.)
1969    
1970  2. Major changes to the compiler's static environment data structures.  2. Major changes to the compiler's static environment data structures.
# Line 839  Line 2098 
2098    
2099       I've changed andl to testl in the floating point test sequence       I've changed andl to testl in the floating point test sequence
2100       whenever appropriate.  The Intel optimization guide states that       whenever appropriate.  The Intel optimization guide states that
2101       testl is perferable to andl.       testl is preferable to andl.
2102    
2103  7. RA (x86 only)  7. RA (x86 only)
2104    
# Line 1021  Line 2280 
2280    
2281  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
2282  additional argument called "template" which is an optional string that  additional argument called "template" which is an optional string that
2283  specifiel the layout of the tool command line.  See the CM manual for  specifies the layout of the tool command line.  See the CM manual for
2284  explanation.  explanation.
2285    
2286  2. A special-purpose tool can be "regisitered" by simply dropping the  2. A special-purpose tool can be "registered" by simply dropping the
2287  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
2288  directory where the .cm file lives that uses this tool.  (The  directory where the .cm file lives that uses this tool.  (The
2289  behavior/misfeature until now was to look for the tool description  behavior/misfeature until now was to look for the tool description
# Line 1068  Line 2327 
2327  rebuild.  Having sets of the form <base><k>.{bin,boot}.<arch>-unix for  rebuild.  Having sets of the form <base><k>.{bin,boot}.<arch>-unix for
2328  <k>=1,2,... is normally not a good idea when invoking fixpt.  However,  <k>=1,2,... is normally not a good idea when invoking fixpt.  However,
2329  they might be the result of an earlier partial run of fixpt (which  they might be the result of an earlier partial run of fixpt (which
2330  perhaps got accidentially killed).  In this case, fixpt will quickly  perhaps got accidentally killed).  In this case, fixpt will quickly
2331  move through what exists before continuing where it left off earlier,  move through what exists before continuing where it left off earlier,
2332  and, thus, saves a lot of time.  and, thus, saves a lot of time.
2333    
# Line 1118  Line 2377 
2377    it from that remote directory.    it from that remote directory.
2378    This should simplify installation further:  For machines that have    This should simplify installation further:  For machines that have
2379    access to the internet, just fetch <version>-config.tgz, unpack it,    access to the internet, just fetch <version>-config.tgz, unpack it,
2380    edit config/targets, and go (run config/install.sh).  The scipt will    edit config/targets, and go (run config/install.sh).  The script will
2381    fetch everything else that it might need all by itself.    fetch everything else that it might need all by itself.
2382    
2383    For CVS users, this mechanism is not relevant for source archives, but    For CVS users, this mechanism is not relevant for source archives, but

Legend:
Removed from v.652  
changed lines
  Added in v.799

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