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 874, Mon Jul 9 20:01:40 2001 UTC revision 1062, Wed Feb 13 21:15:14 2002 UTC
# Line 8  Line 8 
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  Name:
11  Date:  Date: yyyy/mm/dd
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/02/13 16:15:00 EST
18    Tag: blume-20020213-various
19    Description:
20    
21    1. More tweaks to ml-nlffigen:
22    
23       - better internal datastructures (resulting in slight speedup)
24       - "-match" option requires exact match
25       - "localized" gensym counters (untagged structs/unions nested within
26         other structs/unions or within typedefs get a fresh counter; their
27         tag will be prefixed by a concatenation of their parents' tags)
28       - bug fixes (related to calculation of transitive closure of types
29         to be included in the output)
30    
31    2. Minor Basis updates:
32    
33       - added implementations for List.collate and Option.app
34    
35    ----------------------------------------------------------------------
36    Name: Matthias Blume
37    Date: 2002/02/11 15:55:00 EST
38    Tag: blume-20020211-gensym
39    Description:
40    
41    Added a "-gensym" option to command line of ml-nlffigen.  This can be
42    used to specify a "stem" -- a string that is inserted in all "gensym'd"
43    names (ML structure names that correspond to unnamed C structs, unions,
44    and enums), so that separate runs of ml-nlffigen do not clash.
45    
46    ----------------------------------------------------------------------
47    Name: Matthias Blume
48    Date: 2002/02/11 12:05:00 EST
49    Tag: blume-20020211-gensml
50    Description:
51    
52    A quick fix for a problem with GenSML (in the pgraph-util library):
53    Make generation of toplevel "local" optional.  (Strictly speaking,
54    signature definitions within "local" are not legal SML.)
55    
56    Other than that: updates to INSTALL and cm/TODO.
57    
58    ----------------------------------------------------------------------
59    Name: Matthias Blume
60    Date: 2002/02/08 15:00:00 EST
61    Tag: blume-20020208-uniquepid
62    Description:
63    
64    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
65    
66    1. The installer (config/install.sh) has gotten smarter:
67    
68         - Configuration options are a bit easier to specify now
69           (in config/targets).
70         - Bug in recognizing .tar.bz2 files fixed.
71         - Installer automatically resolves dependencies between
72           configuration options (e.g., if you ask for eXene, you will
73           also get cml -- regardless whether you asked for it or not).
74         - Installer can run in "quieter mode" by setting the environment
75           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
76           "completely silent", though.
77         - Build HashCons library as part of smlnj-lib.
78    
79    2. A new scheme for assigning persistent identifiers to compilation
80       units (and, by extension, to types etc.) has been put into place.
81       This fixes a long-standing bug where types and even dynamic values
82       can get internally confused, thereby compromising type safety
83       (abstraction) and dynamic correctness.  See
84    
85         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
86    
87       for an example of how things could go wrong until now.
88    
89       The downside of the new scheme is that pids are not quite as
90       persistent as they used to be: CM will generate a fresh pid
91       for every compilation unit that it thinks it sees for the first
92       time.  That means that if you compile starting from a clean, fresh
93       source tree at two different times, you end up with different
94       binaries.
95    
96       Cutoff recompilation, however, has not been compromised because
97       CM keeps pid information in special caches between runs.
98    
99    ----------------------------------------------------------------------
100    Name: Lal George
101    Date: 2002/02/07 15:34:13 EST 2002
102    Tag: <none>
103    Description:
104    
105    Compilers that generate assembly code may produce  global labels
106    whose value is resolved at link time. The various peephole optimization
107    modules did not take this in account.
108    
109    TODO. The Labels.addrOf function should really return an option
110    type so that clients are forced to deal with this issue, rather
111    than an exception being raised.
112    
113    ----------------------------------------------------------------------
114    Name: Lal George
115    Date: 2002/02/06 13:55:02 EST
116    Tag: george-20020206-ra-breakup
117    Description:
118    
119    1. A bug fix from Allen.
120    
121        A typo causes extra fstp %st(0)'s to be generated at compensation
122        edges, which might cause stack underflow traps at runtime.  This
123        occurs in fft where there are extraneous fstps right before the 'into'
124        trap instruction (in this case they are harmless since none of the
125        integers overflow.)
126    
127    2. Pulled out various utility modules that were embedded in the modules
128       of the register allocator. I need these modules for other purposes, but
129       they are not complete enough to put into a library (just yet).
130    ----------------------------------------------------------------------
131    Name: Matthias Blume
132    Date: 2002/01/31 16:05:00 EST
133    Tag: blume-20020131-sparc-ccalls
134    Description:
135    
136    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
137       of extra stack space by mistake.  Fixed.
138    
139    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
140    
141    ----------------------------------------------------------------------
142    Name: Allen Leung
143    Date: 2002/01/30
144    Tag: leunga-20020130-nowhere-bug-fix
145    Description:
146    
147       MLRISC bug fixes:
148       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
149       2. MachineInt.fromString was negating its value.
150    
151    ----------------------------------------------------------------------
152    Name: Matthias Blume
153    Date: 2002/01/29
154    Tag: blume-20020129-INSTALL
155    Description:
156    
157    - Added somewhat detailed installation instructions (file INSTALL).
158    - Fixed curl-detection bug in config/install.sh.
159    - It is now possible to select the URL getter using the URLGETTER
160      environment variable:
161    
162          not set / "unknown"      --> automatic detection (script tries wget,
163                                       curl, and lynx)
164          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
165                                       how to properly invoke them)
166          other                    --> use $URLGETTER directly, it must take
167                                       precisely two command-line arguments
168                                       (source URL and destination file name)
169    
170    ----------------------------------------------------------------------
171    Name: Matthias Blume
172    Date: 2002/01/28
173    Tag: blume-20020128-sparc-ccalls
174    Description:
175    
176    - Fixed problem with calculation of "used" registers in sparc-c-calls.
177    - Make use of the allocParam argument in sparc-c-calls.
178    
179    ----------------------------------------------------------------------
180    Name: Matthias Blume
181    Date: 2002/01/28
182    Tag: blume-20020128-allocParam
183    Description:
184    
185    John Reppy:  Changes c-calls API to accept client-callback for
186    allocating extra stack space.
187    me: Corresponding changes to mlriscGen (using a dummy argument that
188        does not change the current behavior).
189    
190    ----------------------------------------------------------------------
191    Name: Matthias Blume
192    Date: 2002/01/28 12:00:00
193    Tag: Release_110_38
194    Description:
195    
196    This time for real!!!
197    
198    ----------------------------------------------------------------------
199    Name: Matthias Blume
200    Date: 2002/01/28 10:56:00 EST
201    Tag: blume-20020128-retraction
202    Description:
203    
204    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
205       with blume-Release_110_38-retracted.)
206    
207    1. Fixed a problem with incorrect rounding modes in real64.sml.
208       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
209    
210    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
211       and enums fixed.  The naming of corresponding ML identifiers should
212       now be consistent again.
213    
214    ----------------------------------------------------------------------
215    Name: Allen Leung
216    Date: 2002/01/27
217    Tag: leunga-20020127-nowhere
218    Description:
219    
220       Added a target called nowhere in the configuration scripts.
221       Enabling this will build the MLRISC 'nowhere' tool (for translating
222       programs with where-clauses into legal SML code) during installation.
223    
224    ----------------------------------------------------------------------
225    Name: Matthias Blume
226    Date: 2002/01/25 21:27:00 EST
227    Tag: blume-Release_110_38-retracted
228    Description:
229    
230    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
231    
232    README will be added later.
233    
234    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
235    (Release_110_38) removed.  Reason: Last-minute bug fixes.
236    
237    ----------------------------------------------------------------------
238    Name: Matthias Blume
239    Date: 2002/01/25
240    Tag: blume-20020125-ffi
241    Description:
242    
243    A large number of tweaks and improvements to ml-nlffi-lib and
244    ml-nlffigen:
245    
246       - ML represenation types have been streamlined
247       - getter and setter functions work with concrete values, not abstract
248         ones where possible
249       - ml-nlffigen command line more flexible (see README file there)
250       - some bugs have been fixed (hopefully)
251    
252    ----------------------------------------------------------------------
253    Name: Lal George
254    Date: 2002/01/24
255    Tag: george-20020124-risc-ra-interface
256    Description:
257    
258       There is a dramatic simplification in the interface to the
259       register allocator for RISC architectures as a result of making
260       parallel copy instructions explicit.
261    
262    ----------------------------------------------------------------------
263    Name: Matthias Blume
264    Date: 2002/01/22
265    Tag: blume-20020122-x86-ccalls
266    Description:
267    
268    Bug fix for c-calls on x86 (having to do with how char- and
269    short-arguments are being handled).
270    
271    ----------------------------------------------------------------------
272    Name: Matthias Blume
273    Date: 2002/01/21
274    Tag: blume-20020121-ff
275    Description:
276    
277    Another day of fiddling with the FFI...
278    
279    1. Bug fix/workaround:  CKIT does not complain about negative array
280       dimensions, so ml-nlffigen has to guard itself against this possibility.
281       (Otherwise a negative dimension would send it into an infinite loop.)
282    
283    2. Some of the abstract types (light objects, light pointers, most "base"
284       types) in structure C are now eqtypes.
285    
286    3. Added constructors and test functions for NULL function pointers.
287    
288    ----------------------------------------------------------------------
289    Name: Matthias Blume
290    Date: 2002/01/18
291    Tag: blume-20020118-ready-for-new-release
292    Description:
293    
294    Made config/srcarchiveurl point to a new place.  (Will provide boot
295    files shortly.)
296    
297    Maybe we christen this to be 110.38?
298    
299    ----------------------------------------------------------------------
300    Name: Matthias Blume
301    Date: 2002/01/18
302    Tag: blume-20020118-more-ffifiddle
303    Description:
304    
305    Today's FFI fiddling:
306    
307      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
308        C.Set.* that use concrete (MLRep.*) arguments and results instead
309        of abstract ones.
310    
311      - Provided word-style bit operations etc. for "int" representation
312        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
313        and Long.
314    
315    ----------------------------------------------------------------------
316    Name: Matthias Blume
317    Date: 2002/01/18
318    Tag: blume-20020118-use-x86-fp
319    Description:
320    
321    Now that x86-fast-fp seems to be working, I turned it back on again
322    by default.  (Seems to work fine now, even with the FFI.)
323    
324    Other than that, I added some documentation about the FFI to
325    src/ml-nlffigen/README and updated the FFI test examples in
326    src/ml-nlffi-lib/Tests/*.
327    
328    ----------------------------------------------------------------------
329    Name: Allen Leung
330    Date: 2002/01/17
331    Tag: leunga-20020117-x86-fast-fp-call
332    Description:
333    
334       1. Fixed a problem with handling return fp values when x86's fast fp
335          mode is turned on.
336    
337       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
338          of %f32.
339    
340       3. Added a constructor INT32lit to the ast of MLRISC tools.
341    
342    ----------------------------------------------------------------------
343    Name: Matthias Blume
344    Date: 2002/01/16
345    Tag: blume-20020116-ffifiddle
346    Description:
347    
348    More fiddling with the FFI interface:
349    
350     - Make constness 'c instead of rw wherever possible.  This eliminates
351       the need for certain explicit coercions.  (However, due to ML's
352       value polymorphism, there will still be many cases where explicit
353       coercions are necessary.  Phantom types are not the whole answer
354       to modeling a subtyping relationship in ML.)
355    
356     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
357    
358     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
359       clumsy workaround for varargs problem.)
360    
361    ----------------------------------------------------------------------
362    Name: Lal George
363    Date: 2002/01/15
364    Tag: <none>
365    Description:
366    
367    1. Since COPY instructions are no longer native to the architecture,
368       a generic functor can be used to implement the expandCopies function.
369    
370    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
371       TEXT segment.
372    
373    ----------------------------------------------------------------------
374    Name: Matthias Blume
375    Date: 2002/01/15
376    Tag: blume-20020115-ffiupdates
377    Description:
378    
379    1. Fix for bug resulting in single-precision float values being returned
380       incorrectly from FFI calls.
381    
382    2. Small modifications to C FFI API:
383    
384        - memory-allocation routines return straight objects (no options)
385          and raise an exception in out-of-memory situations
386        - unsafe extensions to cast between function pointers and pointers
387          from/to ints
388        - added structure C_Debug as an alternative to structure C where
389          pointer-dereferencing (|*| and |*!) always check for null-pointers
390        - added open_lib' to DynLinkage;  open_lib' works like open_lib
391          but also takes a (possibly empty) list of existing library handles
392          that the current library depends on
393    
394    ----------------------------------------------------------------------
395    Name: Matthias Blume
396    Date: 2002/01/10
397    Tag: blume-20020110-newffigen
398    Description:
399    
400    1. Updates to portable graph code.
401    
402    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
403       more scalable now so that even huge interfaces such as the one
404       for GTK compile in finite time and space. :-)
405       See src/ml-nlffigen/README for details on what's new.
406    
407    ----------------------------------------------------------------------
408    Name: Lal George
409    Date: 2001/01/09 14:31:35 EST 2002
410    Tag: george-20011206-rm-native-copy
411    Description:
412    
413            Removed the native COPY and FCOPY instructions
414            from all the architectures and replaced it with the
415            explicit COPY instruction from the previous commit.
416    
417            It is now possible to simplify many of the optimizations
418            modules that manipulate copies. This has not been
419            done in this change.
420    
421    ----------------------------------------------------------------------
422    Name: Lal George
423    Date: 2001/12/06 16:50:13 EST 2001
424    Tag: george-20011206-mlrisc-instruction
425    Description:
426    
427    Changed the representation of instructions from being fully abstract
428    to being partially concrete. That is to say:
429    
430      from
431            type instruction
432    
433      to
434            type instr                              (* machine instruction *)
435    
436            datatype instruction =
437                LIVE of {regs: C.cellset, spilled: C.cellset}
438              | KILL of {regs: C.cellset, spilled: C.cellset}
439              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
440              | ANNOTATION of {i: instruction, a: Annotations.annotation}
441              | INSTR of instr
442    
443    This makes the handling of certain special instructions that appear on
444    all architectures easier and uniform.
445    
446    LIVE and KILL say that a list of registers are live or killed at the
447    program point where they appear. No spill code is generated when an
448    element of the 'regs' field is spilled, but the register is moved to
449    the 'spilled' (which is present, more for debugging than anything else).
450    
451    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
452    We used to generate:
453    
454            DEFFREG f1
455            f1 := f2 + f3
456            trapb
457    
458    but now generate:
459    
460            f1 := f2 + f3
461            trapb
462            LIVE {regs=[f1,f2,f3], spilled=[]}
463    
464    Furthermore, the DEFFREG (hack) required that all floating point instruction
465    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
466    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
467    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
468    this architecture).
469    
470    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
471    all the architectures. This will result in further simplification of the
472    register allocator that must be aware of them for coalescing purposes, and
473    will also simplify certain aspects of the machine description that provides
474    callbacks related to parallel copies.
475    
476    ANNOTATION should be obvious, and now INSTR represents the honest to God
477    machine instruction set!
478    
479    The <arch>/instructions/<arch>Instr.sml files define certain utility
480    functions for making porting easier -- essentially converting upper case
481    to lower case. All machine instructions (of type instr) are in upper case,
482    and the lower case form generates an MLRISC instruction. For example on
483    the alpha we have:
484    
485      datatype instr =
486         LDA of {r:cell, b:cell, d:operand}
487       | ...
488    
489      val lda : {r:cell, b:cell, d:operand} -> instruction
490        ...
491    
492    where lda is just (INSTR o LDA), etc.
493    
494    ----------------------------------------------------------------------
495    Name: Matthias Blume
496    Date: 2001/11/22 21:40:00 EST
497    Tag: Release_110_37
498    Description:
499    
500    Release 110.37.  This time for real.
501    
502    ----------------------------------------------------------------------
503    Name: Matthias Blume
504    Date: 2001/11/21 16:35:00 EST
505    Tag: blume-20011121-foot-in-mouth
506    Description:
507    
508    Removed the "Release_110_37" tag because of a serious bug.
509    This will be re-tagged once the bug is fixed.
510    
511    ----------------------------------------------------------------------
512    Name: Matthias Blume
513    Date: 2001/11/21 16:14:00 EST
514    Tag: blume-20011121-forgottenfile
515    Description:
516    
517    Forgot to add a file.  (Just a .tex-file -- part of
518    the CM manual source.)
519    
520    ----------------------------------------------------------------------
521    Name: Matthias Blume
522    Date: 2001/11/21 16:10:00 EST
523    Tag: blume-20011121-invalid_110_37
524    Description:
525    
526    Note: I removed the original tag "Release_110_37" from this commit
527          because we found a serious bug in all non-x86 backends.
528          - Matthias
529    
530    1. Modifications to the SML/NJ code generator and to the runtime system
531       so that code object name strings are directly inserted into code
532       objects at code generation time.  The only business the runtime system
533       has with this is now to read the name strings on occasions.
534       (The encoding of the name string has also changed somewhat.)
535    
536    2. CM now implements a simple "set calculus" for specifying export lists.
537       In particular, it is now possible to refer to the export lists of
538       other libraries/groups/sources and form unions as well as differences.
539       See the latest CM manual for details.
540    
541    3. An separate notion of "proxy" libraries has again be eliminated from
542       CM's model.  (Proxy libraries are now simply a special case of using
543       the export list calculus.)
544    
545    4. Some of the existing libraries now take advantage of the new set
546       calculus.
547       (Notice that not all libraries have been converted because some
548       of the existing .cm-files are supposed to be backward compatible
549       with 110.0.x.)
550    
551    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
552       "General.exnMessage"!  The former relies on a certain hook to be
553       initialized, and that often does not happen in the stand-alone case.)
554    
555    ----------------------------------------------------------------------
556    Name: Lal George
557    Date: 2001/11/21  13:56:18 EST
558    Tag: george-2001121-pseudo-ops
559    Description:
560    
561      Implemented a complete redesign of MLRISC pseudo-ops. Now there
562      ought to never be any question of incompatabilities with
563      pseudo-op syntax expected by host assemblers.
564    
565      For now, only modules supporting GAS syntax are implemented
566      but more should follow, such as MASM, and vendor assembler
567      syntax, e.g. IBM as, Sun as, etc.
568    
569    ----------------------------------------------------------------------
570    Name: Matthias Blume
571    Date: 2001/11/14 11:52:00 EST
572    Tag: blume-20011114-srcname
573    Description:
574    
575    1. Routed the name of the current source file to mlriscgen where it
576       should be directly emitted into the code object.  (This last part
577       is yet to be done.)
578    
579    2. Some cleanup of the pgraph code to make it match the proposal that
580       I put out the other day.  (The proposal notwithstanding, things are
581       still in flux here.)
582    
583    ----------------------------------------------------------------------
584    Name: Lal George
585    Date: 2001/11/14 09:44:04 EST
586    Tag:
587    Description:
588    
589      Fix for a backpatching bug reported by Allen.
590    
591      Because the boundary between short and long span-dependent
592      instructions is +/- 128, there are an astounding number of
593      span-dependent instructions whose size is over estimated.
594    
595      Allen came up with the idea of letting the size of span
596      dependent instructions be non-monotonic, for a maxIter
597      number of times, after which the size must be monotonically
598      increasing.
599    
600      This table shows the number of span-dependent instructions
601      whose size was over-estimated as a function of maxIter, for the
602      file Parse/parse/ml.grm.sml:
603    
604         maxIter            # of instructions:
605            10                      687
606            20                      438
607            30                      198
608            40                        0
609    
610      In compiling the compiler, there is no significant difference in
611      compilation speed between maxIter=10 and maxIter=40. Actually,
612      my measurements showed that maxIter=40 was a tad faster than
613      maxIter=10! Also 96% of the  files in the compiler reach a fix
614      point within 13 iterations, so fixing maxIter at 40, while high,
615      is okay.
616    
617    ----------------------------------------------------------------------
618    Name: Matthias Blume
619    Date: 2001/10/31 15:25:00 EST
620    Tag: blume-20011031-pgraph
621    Description:
622    
623    CKIT:
624    * Changed the "Function" constructor of type Ast.ctype to carry optional
625      argument identifiers.
626    * Changed the return type of TypeUtil.getFunction accordingly.
627    * Type equality ignores the argument names.
628    * TypeUtil.composite tries to preserve argument names but gives up quickly
629      if there is a mismatch.
630    
631    installation script:
632    * attempts to use "curl" if available (unless "wget" is available as well)
633    
634    CM:
635    * has an experimental implementation of "portable graphs" which I will
636      soon propose as an implementation-independent library format
637    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
638    
639    NLFFI-LIB:
640    * some cleanup (all cosmetic)
641    
642    NLFFIGEN:
643    * temporarily disabled the mechanism that suppresses ML output for
644      C definitions whose identifiers start with an underscore character
645    * generate val bindings for enum constants
646    * user can request that only one style (light or heavy) is being used;
647      default is to use both (command-line arguments: -heavy and -light)
648    * fixed bug in handling of function types involving incomplete pointers
649    * generate ML entry points that take record arguments (i.e., using
650      named arguments) for C functions that have a prototype with named
651      arguments
652      (see changes to CKIT)
653    
654    ----------------------------------------------------------------------
655    Name: Allen Leung
656    Date: 2001/10/27 20:34:00 EDT
657    Tag: leunga-20011027-x86-fast-fp-call
658    Description:
659    
660       Fixed the bug described in blume-20010920-slowfp.
661    
662       The fix involves
663          1. generating FCOPYs in FSTP in ia32-svid
664          2. marking a CALL with the appropriate annotation
665    
666    ----------------------------------------------------------------------
667    Name: Matthias Blume
668    Date: 2001/10/16 11:32:00 EDT
669    Tag: blume-20011016-netbsd
670    Description:
671    
672    Underscore patch from Chris Richards (fixing problem with compiling
673    runtime system under recent NetBSD).
674    
675    ----------------------------------------------------------------------
676    Name: Allen Leung
677    Date: 2001/10/12 17:18:32 EDT 2001
678    Tag: leung-20011012-x86-printflowgraph
679    Description:
680    
681    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
682    
683    ----------------------------------------------------------------------
684    Name: Lal George
685    Date: 2001/10/11 23:51:34 EDT
686    Tag: george-20011011-too-many-instrs
687    Description:
688    
689    The representation of a program point never expected to see more
690    than 65536 instructions in a basic block!
691    
692    ----------------------------------------------------------------------
693    Name: Lal George
694    Date: 2001/10/09 09:41:37 EDT
695    Tag: george-20011008-mlrisc-labels
696    Description:
697    
698    Changed the machine description files to support printing of
699    local and global labels in assembly code, based on host assembler
700    conventions.
701    
702    ----------------------------------------------------------------------
703    Name: Matthias Blume
704    Date: 2001/09/25 15:25:00 EDT
705    Tag: blume-20010925-exninfo
706    Description:
707    
708    I provided a non-hook implementation of exnName (at the toplevel) and
709    made the "dummy" implementation of exnMessage (at the toplevel) more
710    useful: if nothing gets "hooked in", then at least you are going to
711    see the exception name and a message indicating why you don't see more.
712    
713    [For the time being, programs that need exnMessage and want to use
714    ml-build should either use General.exnMessage (strongly recommended) or
715    refer to structure General at some other point so that CM sees a
716    static dependency.]
717    
718    [Similar remarks go for "print" and "use":  If you want to use their
719    functionality in stand-alone programs generated by ml-build, then use
720    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
721    
722    ----------------------------------------------------------------------
723    Name: Matthias Blume
724    Date: 2001/09/20 17:28:00 EDT
725    Tag: blume-20010920-slowfp
726    Description:
727    
728    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
729    
730    ----------------------------------------------------------------------
731    Name: Matthias Blume
732    Date: 2001/09/20 17:20:00 EDT
733    Tag: blume-20010920-canonicalpaths
734    Description:
735    
736    0. Updated the BOOT file (something that I forgot to do earlier).
737    
738    1. Small internal change to CM so that it avoids "/../" in filenames
739       as much as possible (but only where it is safe).
740    
741    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
742       that arguments that contain delimiters are passed through correctly.
743       This change also means that all "special" arguments of the form
744       @SMLxxx... must come first.
745    
746    3. Changed install script to put relative anchor names for tool commands
747       into pathconfig.
748    
749    ----------------------------------------------------------------------
750    Name: Matthias Blume
751    Date: 2001/09/18 15:35:00 EDT
752    Tag: blume-20010918-readme11036
753    Description:
754    
755    Added README files.
756    
757    ----------------------------------------------------------------------
758    Name: Matthias Blume
759    Date: 2001/09/18 11:45:00 EDT
760    Tag: Release_110_36 (retag)
761    Description:
762    
763    Fixed mistake in config/preloads. Retagged as 110.36.
764    
765    ----------------------------------------------------------------------
766    Name: Matthias Blume
767    Date: 2001/09/18 09:40:00 EDT
768    Tag: Release_110_36_orig (tag changed)
769    Description:
770    
771    New version (110.36).  New bootfiles.
772    
773    ----------------------------------------------------------------------
774    Name: Matthias Blume
775    Date: 2001/09/14 16:15:00 EDT
776    Tag: blume-20010914-x86fastfp
777    Description:
778    
779    John committed some changes that Allen made, in particular a (hopefully)
780    correctly working version of the x86-fp module.
781    
782    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
783    flag to "true".  Everything seems to compile to a fixpoint ok, and
784    "mandelbrot" speeds up by about 15%.
785    
786    ----------------------------------------------------------------------
787    Name: Matthias Blume
788    Date: 2001/09/13 11:20:00 EDT
789    Tag: blume-20010913-minimal
790    Description:
791    
792    1. Stefan Monnier's patch to fix a miscompilation problem that
793       was brought to light by John Reppy's work on Moby.
794    
795    2. Implemented a minimal "structure Compiler" that contains just
796       "version" and "architecture".  The minimal version will be
797       available when the full version is not.  This is for backward-
798       compatibility with code that wants to test Compiler.version.
799    
800    ----------------------------------------------------------------------
801    Name: Matthias Blume
802    Date: 2001/08/28 14:03:00 EDT
803    Tag: blume-20010828-ml-lex
804    Description:
805    
806    Fix for bug 1581, received from Neophytos Michael.
807    
808    ----------------------------------------------------------------------
809    Name: Matthias Blume
810    Date: 2001/08/27 11:20:00 EDT
811    Tag: blume-20010827-readme11035
812    Description:
813    
814    Fleshed out the README file for 110.35.
815    
816    ----------------------------------------------------------------------
817    Name: Matthias Blume
818    Date: 2001/08/24 17:10:00 EDT
819    Tag: Release_110_35
820    Description:
821    
822    New version number (110.35).  New bootfiles.
823    
824    ----------------------------------------------------------------------
825    Name: Lal George
826    Date: 2001/08/24 13:47:18 EDT 2001
827    Tag: george-20010824-MLRISC-graphs
828    Description:
829    
830     removed clusters from MLRISC completely and replaced with graphs.
831    
832    ----------------------------------------------------------------------
833    Name: Matthias Blume
834    Date: 2001/08/23 17:50:00 EDT
835    Tag: blume-20010823-toplevel
836    Description:
837    
838    - some reorganization of the code that implements various kinds of
839      environments in the compiler (static, dynamic, symbolic, combined)
840    - re-implemented the EnvRef module so that evalStream works properly
841      (if the stream contains references to "use", "CM.make", etc.)
842    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
843    
844    ----------------------------------------------------------------------
845    Name: Matthias Blume
846    Date: 2001/08/20 15:50 EDT
847    Tag: blume20010820-slipup
848    Description:
849    
850    I forgot to commit a few files.  Here they are...
851    
852    ----------------------------------------------------------------------
853    Name: Matthias Blume
854    Date: 2001/08/20 15:35:00 EDT
855    Tag: blume-20010820-debugprof
856    Description:
857    
858    !!!! NEW BOOTFILES !!!!
859    
860    This is another round of reorganizing the compiler sources.  This
861    time the main goal was to factor out all the "instrumentation"
862    passes (for profiling and backtracing) into their own library.
863    The difficulty was to do it in such a way that it does not depend
864    on elaborate.cm but only on elabdata.cm.
865    
866    Therefore there have been further changes to both elaborate.cm and
867    elabdata.cm -- more "generic" things have been moved from the former
868    to the latter.  As a result, I was forced to split the assignment
869    of numbers indicating "primtyc"s into two portions: SML-generic and
870    SML/NJ-specific.  Since it would have been awkward to maintain,
871    I bit the bullet and actually _changed_ the mapping between these
872    numbers and primtycs.  The bottom line of this is that you need
873    a new set of bin- and bootfiles.
874    
875    I have built new bootfiles for all architectures, so doing a fresh
876    checkout and config/install.sh should be all you need.
877    
878    The newly created library's name is
879    
880        $smlnj/viscomp/debugprof.cm
881    
882    and its sources live under
883    
884        src/compiler/DebugProf
885    
886    ----------------------------------------------------------------------
887    Name: Matthias Blume
888    Date: 2001/08/15 17:15:00 EDT
889    Tag: blume-20010815-compreorg
890    Description:
891    
892    This is a first cut at reorganizing the CM libraries that make up the
893    core of the compiler.  The idea is to separate out pieces that could
894    be used independently by tools, e.g., the parser, the typechecker, etc.
895    
896    The current status is a step in this direction, but it is not quite
897    satisfactory yet.  Expect more changes in the future.
898    
899    Here is the current (new) organization...
900    
901        What used to be $smlnj/viscomp/core.cm is now divided into
902        six CM libraries:
903    
904             $smlnj/viscomp/basics.cm
905                           /parser.cm
906                           /elabdata.cm
907                           /elaborate.cm
908                           /execute.cm
909                           /core.cm
910    
911        The CM files for these libraries live under src/system/smlnj/viscomp.
912        All these libraries are proxy libraries that contain precisely
913        one CM library component.  Here are the locations of the components
914        (all within the src/compiler tree):
915    
916             Basics/basics.cm
917             Parse/parser.cm
918             ElabData/elabdata.cm
919             Elaborator/elaborate.cm
920             Execution/execute.cm
921             core.cm
922    
923         [This organization is the same that has been used already
924         for a while for the architecture-specific parts of the visible
925         compiler and for the old version of core.cm.]
926    
927         As you will notice, many source files have been moved from their
928         respective original locations to a new home in one of the above
929         subtrees.
930    
931         The division of labor between the new libraries is the following:
932    
933             basics.cm:
934                - Simple, basic definitions that pertain to many (or all) of
935                  the other libraries.
936             parser.cm:
937                - The SML parser, producing output of type Ast.dec.
938                - The type family for Ast is also defined and exported here.
939             elabdata.cm:
940                - The datatypes that describe input and output of the elaborator.
941                  This includes types, absyn, and static environments.
942             elaborator.cm:
943                - The SML/NJ type checker and elaborator.
944                  This maps an Ast.dec (with a given static environment) to
945                  an Absyn.dec (with a new static environment).
946                - This libraries implements certain modules that used to be
947                  structures as functors (to remove dependencies on FLINT).
948             execute.cm:
949                - Everything having to do with executing binary code objects.
950                - Dynamic environments.
951             core.cm:
952                - SML/NJ-specific instantiations of the elaborator and MLRISC.
953                - Top-level modules.
954                - FLINT (this should eventually become its own library)
955    
956    Notes:
957    
958    I am not 100% happy with the way I separated the elaborator (and its
959    data structures) from FLINT.  Two instances of the same problem:
960    
961        1. Data structures contain certain fields that carry FLINT-specific
962           information.  I hacked around this using exn and the property list
963           module from smlnj-lib.  But the fact that there are middle-end
964           specific fields around at all is a bit annoying.
965    
966        2. The elaborator calculates certain FLINT-related information.  I tried
967           to make this as abstract as I could using functorization, but, again,
968           the fact that the elaborator has to perform calculations on behalf
969           of the middle-end at all is not nice.
970    
971        3. Having to used exn and property lists is unfortunate because it
972           weakens type checking.  The other alternative (parameterizing
973           nearly *everything*) is not appealing, though.
974    
975    I removed the "rebinding =" warning hack because due to the new organization
976    it was awkward to maintain it.  As a result, the compiler now issues some of
977    these warnings when compiling init.cmi during bootstrap compilation. On
978    the plus side, you also get a warning when you do, for example:
979       val op = = Int32.+
980    which was not the case up to now.
981    
982    I placed "assign" and "deref" into the _Core structure so that the
983    code that deals with the "lazy" keyword can find them there.  This
984    removes the need for having access to the primitive environment
985    during elaboration.
986    
987    ----------------------------------------------------------------------
988    Name: Matthias Blume
989    Date: 2001/08/13
990    Tag: blume-20010813-closures
991    Description:
992    
993    This fix was sent to us by Zhong Shao.  It is supposed to improve the
994    performance of certain loops by avoiding needless closure allocation.
995    
996    ----------------------------------------------------------------------
997    Name: Lal George
998    Date: 2001/07/31 10:03:23 EDT 2001
999    Tag: george-20010731-x86-fmalloc
1000    Description: Fixed bug in x86 calls
1001    
1002        There was a bug where call instructions would mysteriously
1003        vanish. The call instruction had to be one that returned
1004        a floating point value.
1005    
1006    ----------------------------------------------------------------------
1007    Name: Lal George
1008    Date: 2001/07/19 16:36:29 EDT 2001
1009    Tag: george-20010719-simple-cells
1010    Description:
1011    
1012    I have dramatically simplified the interface for CELLS in MLRISC.
1013    
1014    In summary, the cells interface is broken up into three parts:
1015    
1016      1. CellsBasis : CELLS_BASIS
1017    
1018            CellsBasis is a top level structure and common for all
1019            architectures.  it contains the definitions of basic datatypes
1020            and utility  functions over these types.
1021    
1022      2. functor Cells() : CELLS
1023    
1024            Cells generates an interface for CELLS that incorporates the
1025            specific resources on the target architecture, such as the
1026            presence of special register classes, their number and size,
1027            and various useful substructures.
1028    
1029      3. <ARCH>CELLS
1030    
1031            e.g. SparcCells: SPARCCELLS
1032    
1033            <ARCH>CELLS usually contains additional bindings for special
1034            registers  on the architecture, such as:
1035    
1036                    val r0 : cell           (* register zero *)
1037                    val y : cell            (* Y register *)
1038                    val psr : cell          (* processor status register *)
1039                    ...
1040    
1041            The structure returned by applying the Cells functor is opened
1042            in this interface.
1043    
1044    The main implication of all this is that the datatypes for cells is
1045    split between CellsBasis and CELLS -- a fairly simple change for user
1046    code.
1047    
1048    In the old scheme the CELLS interface had a definitional binding of
1049    the form:
1050    
1051            signature CELLS = sig
1052    
1053               structure CellsBasis = CellsBasis
1054    
1055               ...
1056    
1057            end
1058    
1059    With all the sharing constraints that goes on in MLRISC, this old
1060    design  quickly leads to errors such as:
1061    
1062            "structure definition spec inside of sharing ... "
1063    
1064    
1065    and appears to require an unacceptable amount of sharing and where
1066    constraint hackery.
1067    
1068    I think this error message (the interaction of definitional specs and
1069    sharing) requires more explanation on our web page.
1070    
1071    ----------------------------------------------------------------------
1072    Name: Matthias Blume
1073    Date: 2001/07/19 15:00:00 EDT
1074    Tag: blume-20010719-libreorg
1075    Description:
1076    
1077    This update puts together a fairly extensive but straightforward change
1078    to the way the libraries that implement the interactive system are
1079    organized:
1080    
1081       The biggest change is the elimination of structure Compiler.  As a
1082       replacement for this structure, there is now a CM library
1083       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
1084       that exports all the substructures of the original structure Compiler
1085       directly.  So instead of saying Compiler.Foo.bar one now simply
1086       says Foo.bar.  (The CM libraries actually export a collection of
1087       structures that is richer than the collection of substructures of
1088       structure Compiler.)
1089    
1090       To make the transition smooth, there is a separate library called
1091       $smlnj/compiler/compiler.cm which puts together and exports the
1092       original structure Compiler (or at least something very close to it).
1093    
1094       There are five members of the original structure Compiler
1095       that are not exported directly but which instead became members
1096       of a new structure Backend (described by signature BACKEND).  These are:
1097       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
1098       Interact (: INTERACT), structure Machine (: MACHINE), and val
1099       architecture (: string).
1100    
1101       Structure Compiler.Version has become structure CompilerVersion.
1102    
1103       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
1104       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
1105       or x86, respectively.
1106       Each of these exports the same frontend structures that
1107       $smlnj/compiler.cm exports.  But they do not have a structure Backend
1108       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
1109       Hppa, PPC, Sparc, or X86, respectively.
1110    
1111       Library $smlnj/compiler/all.cm exports the union of the exports of
1112       $smlnj/compiler/<arch>.cm
1113    
1114       There are no structures <Arch>Compiler anymore, use
1115       $smlnj/compiler/<arch>.cm instead.
1116    
1117       Library host-compiler-0.cm is gone.  Instead, the internal library
1118       that instantiates CM is now called cm0.cm.  Selection of the host
1119       compiler (backend) is no longer done here but. (Responsibility for it
1120       now lies with $smlnj/compiler/current.cm.  This seems to be more
1121       logical.)
1122    
1123       Many individual files have been moved or renamed.  Some files have
1124       been split into multiple files, and some "dead" files have been deleted.
1125    
1126    Aside from these changes to library organization, there are also changes
1127    to the way the code itself is organized:
1128    
1129       Structure Binfile has been re-implemented in such a way that it no
1130       longer needs any knowledge of the compiler.  It exclusively deals
1131       with the details of binfile layout.  It no longer invokes the
1132       compiler (for the purpose of creating new prospective binfile
1133       content), and it no longer has any knowledge of how to interpret
1134       pickles.
1135    
1136       Structure Compile (: COMPILE) has been stripped down to the bare
1137       essentials of compilation.  It no longer deals with linking/execution.
1138       The interface has been cleaned up considerably.
1139    
1140       Utility routines for dealing with linking and execution have been
1141       moved into their own substructures.
1142    
1143       (The ultimate goal of these changes is to provide a light-weight
1144       binfile loader/linker (at least for, e.g., stable libraries) that
1145       does not require CM or the compiler to be present.)
1146    
1147    CM documentation has been updated to reflect the changes to library
1148    organization.
1149    
1150    ----------------------------------------------------------------------
1151    Name: Matthias Blume
1152    Date: 2001/07/10 17:30:00 EDT
1153    Tag: Release_110_34
1154    Description:
1155    
1156    Minor tweak to 110.34 (re-tagged):
1157    
1158      - README.html file added to CVS repository
1159      - runtime compiles properly under FreeBSD 3.X and 4.X
1160    
1161    ----------------------------------------------------------------------
1162    Name: Matthias Blume
1163    Date: 2001/07/10 17:30:00 EDT
1164    Tag: Release_110_34
1165    Description:
1166    
1167    New version number (110.34). New bootfiles.
1168    
1169    ----------------------------------------------------------------------
1170    Name: Matthias Blume
1171  Date: 2001/07/09 16:00:00 EDT  Date: 2001/07/09 16:00:00 EDT
1172  Tag: blume-20010709-more-varargs  Tag: blume-20010709-more-varargs
1173  Description:  Description:
# Line 2570  Line 3724 
3724       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3725       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3726       Please, don't be too harsh on me for messing with this code a bit more       Please, don't be too harsh on me for messing with this code a bit more
3727       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3728       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3729       Dave's hands. :)       Dave's hands. :)
3730    

Legend:
Removed from v.874  
changed lines
  Added in v.1062

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