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 836, Fri May 25 19:28:51 2001 UTC revision 939, Tue Sep 25 19:25:48 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/09/25 15:25:00 EDT
18    Tag: blume-20010925-exninfo
19    Description:
20    
21    I provided a non-hook implementation of exnName (at the toplevel) and
22    made the "dummy" implementation of exnMessage (at the toplevel) more
23    useful: if nothing gets "hooked in", then at least you are going to
24    see the exception name and a message indicating why you don't see more.
25    
26    [For the time being, programs that need exnMessage and want to use
27    ml-build should either use General.exnMessage (strongly recommended) or
28    refer to structure General at some other point so that CM sees a
29    static dependency.]
30    
31    [Similar remarks go for "print" and "use":  If you want to use their
32    functionality in stand-alone programs generated by ml-build, then use
33    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
34    
35    ----------------------------------------------------------------------
36    Name: Matthias Blume
37    Date: 2001/09/20 17:28:00 EDT
38    Tag: blume-20010920-slowfp
39    Description:
40    
41    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
42    
43    ----------------------------------------------------------------------
44    Name: Matthias Blume
45    Date: 2001/09/20 17:20:00 EDT
46    Tag: blume-20010920-canonicalpaths
47    Description:
48    
49    0. Updated the BOOT file (something that I forgot to do earlier).
50    
51    1. Small internal change to CM so that it avoids "/../" in filenames
52       as much as possible (but only where it is safe).
53    
54    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
55       that arguments that contain delimiters are passed through correctly.
56       This change also means that all "special" arguments of the form
57       @SMLxxx... must come first.
58    
59    3. Changed install script to put relative anchor names for tool commands
60       into pathconfig.
61    
62    ----------------------------------------------------------------------
63    Name: Matthias Blume
64    Date: 2001/09/18 15:35:00 EDT
65    Tag: blume-20010918-readme11036
66    Description:
67    
68    Added README files.
69    
70    ----------------------------------------------------------------------
71    Name: Matthias Blume
72    Date: 2001/09/18 11:45:00 EDT
73    Tag: Release_110_36 (retag)
74    Description:
75    
76    Fixed mistake in config/preloads. Retagged as 110.36.
77    
78    ----------------------------------------------------------------------
79    Name: Matthias Blume
80    Date: 2001/09/18 09:40:00 EDT
81    Tag: Release_110_36_orig (tag changed)
82    Description:
83    
84    New version (110.36).  New bootfiles.
85    
86    ----------------------------------------------------------------------
87    Name: Matthias Blume
88    Date: 2001/09/14 16:15:00 EDT
89    Tag: blume-20010914-x86fastfp
90    Description:
91    
92    John committed some changes that Allen made, in particular a (hopefully)
93    correctly working version of the x86-fp module.
94    
95    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
96    flag to "true".  Everything seems to compile to a fixpoint ok, and
97    "mandelbrot" speeds up by about 15%.
98    
99    ----------------------------------------------------------------------
100    Name: Matthias Blume
101    Date: 2001/09/13 11:20:00 EDT
102    Tag: blume-20010913-minimal
103    Description:
104    
105    1. Stefan Monnier's patch to fix a miscompilation problem that
106       was brought to light by John Reppy's work on Moby.
107    
108    2. Implemented a minimal "structure Compiler" that contains just
109       "version" and "architecture".  The minimal version will be
110       available when the full version is not.  This is for backward-
111       compatibility with code that wants to test Compiler.version.
112    
113    ----------------------------------------------------------------------
114    Name: Matthias Blume
115    Date: 2001/08/28 14:03:00 EDT
116    Tag: blume-20010828-ml-lex
117    Description:
118    
119    Fix for bug 1581, received from Neophytos Michael.
120    
121    ----------------------------------------------------------------------
122    Name: Matthias Blume
123    Date: 2001/08/27 11:20:00 EDT
124    Tag: blume-20010827-readme11035
125    Description:
126    
127    Fleshed out the README file for 110.35.
128    
129    ----------------------------------------------------------------------
130    Name: Matthias Blume
131    Date: 2001/08/24 17:10:00 EDT
132    Tag: Release_110_35
133    Description:
134    
135    New version number (110.35).  New bootfiles.
136    
137    ----------------------------------------------------------------------
138    Name: Lal George
139    Date: 2001/08/24 13:47:18 EDT 2001
140    Tag: george-20010824-MLRISC-graphs
141    Description:
142    
143     removed clusters from MLRISC completely and replaced with graphs.
144    
145    ----------------------------------------------------------------------
146    Name: Matthias Blume
147    Date: 2001/08/23 17:50:00 EDT
148    Tag: blume-20010823-toplevel
149    Description:
150    
151    - some reorganization of the code that implements various kinds of
152      environments in the compiler (static, dynamic, symbolic, combined)
153    - re-implemented the EnvRef module so that evalStream works properly
154      (if the stream contains references to "use", "CM.make", etc.)
155    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
156    
157    ----------------------------------------------------------------------
158    Name: Matthias Blume
159    Date: 2001/08/20 15:50 EDT
160    Tag: blume20010820-slipup
161    Description:
162    
163    I forgot to commit a few files.  Here they are...
164    
165    ----------------------------------------------------------------------
166    Name: Matthias Blume
167    Date: 2001/08/20 15:35:00 EDT
168    Tag: blume-20010820-debugprof
169    Description:
170    
171    !!!! NEW BOOTFILES !!!!
172    
173    This is another round of reorganizing the compiler sources.  This
174    time the main goal was to factor out all the "instrumentation"
175    passes (for profiling and backtracing) into their own library.
176    The difficulty was to do it in such a way that it does not depend
177    on elaborate.cm but only on elabdata.cm.
178    
179    Therefore there have been further changes to both elaborate.cm and
180    elabdata.cm -- more "generic" things have been moved from the former
181    to the latter.  As a result, I was forced to split the assignment
182    of numbers indicating "primtyc"s into two portions: SML-generic and
183    SML/NJ-specific.  Since it would have been awkward to maintain,
184    I bit the bullet and actually _changed_ the mapping between these
185    numbers and primtycs.  The bottom line of this is that you need
186    a new set of bin- and bootfiles.
187    
188    I have built new bootfiles for all architectures, so doing a fresh
189    checkout and config/install.sh should be all you need.
190    
191    The newly created library's name is
192    
193        $smlnj/viscomp/debugprof.cm
194    
195    and its sources live under
196    
197        src/compiler/DebugProf
198    
199    ----------------------------------------------------------------------
200    Name: Matthias Blume
201    Date: 2001/08/15 17:15:00 EDT
202    Tag: blume-20010815-compreorg
203    Description:
204    
205    This is a first cut at reorganizing the CM libraries that make up the
206    core of the compiler.  The idea is to separate out pieces that could
207    be used independently by tools, e.g., the parser, the typechecker, etc.
208    
209    The current status is a step in this direction, but it is not quite
210    satisfactory yet.  Expect more changes in the future.
211    
212    Here is the current (new) organization...
213    
214        What used to be $smlnj/viscomp/core.cm is now divided into
215        six CM libraries:
216    
217             $smlnj/viscomp/basics.cm
218                           /parser.cm
219                           /elabdata.cm
220                           /elaborate.cm
221                           /execute.cm
222                           /core.cm
223    
224        The CM files for these libraries live under src/system/smlnj/viscomp.
225        All these libraries are proxy libraries that contain precisely
226        one CM library component.  Here are the locations of the components
227        (all within the src/compiler tree):
228    
229             Basics/basics.cm
230             Parse/parser.cm
231             ElabData/elabdata.cm
232             Elaborator/elaborate.cm
233             Execution/execute.cm
234             core.cm
235    
236         [This organization is the same that has been used already
237         for a while for the architecture-specific parts of the visible
238         compiler and for the old version of core.cm.]
239    
240         As you will notice, many source files have been moved from their
241         respective original locations to a new home in one of the above
242         subtrees.
243    
244         The division of labor between the new libraries is the following:
245    
246             basics.cm:
247                - Simple, basic definitions that pertain to many (or all) of
248                  the other libraries.
249             parser.cm:
250                - The SML parser, producing output of type Ast.dec.
251                - The type family for Ast is also defined and exported here.
252             elabdata.cm:
253                - The datatypes that describe input and output of the elaborator.
254                  This includes types, absyn, and static environments.
255             elaborator.cm:
256                - The SML/NJ type checker and elaborator.
257                  This maps an Ast.dec (with a given static environment) to
258                  an Absyn.dec (with a new static environment).
259                - This libraries implements certain modules that used to be
260                  structures as functors (to remove dependencies on FLINT).
261             execute.cm:
262                - Everything having to do with executing binary code objects.
263                - Dynamic environments.
264             core.cm:
265                - SML/NJ-specific instantiations of the elaborator and MLRISC.
266                - Top-level modules.
267                - FLINT (this should eventually become its own library)
268    
269    Notes:
270    
271    I am not 100% happy with the way I separated the elaborator (and its
272    data structures) from FLINT.  Two instances of the same problem:
273    
274        1. Data structures contain certain fields that carry FLINT-specific
275           information.  I hacked around this using exn and the property list
276           module from smlnj-lib.  But the fact that there are middle-end
277           specific fields around at all is a bit annoying.
278    
279        2. The elaborator calculates certain FLINT-related information.  I tried
280           to make this as abstract as I could using functorization, but, again,
281           the fact that the elaborator has to perform calculations on behalf
282           of the middle-end at all is not nice.
283    
284        3. Having to used exn and property lists is unfortunate because it
285           weakens type checking.  The other alternative (parameterizing
286           nearly *everything*) is not appealing, though.
287    
288    I removed the "rebinding =" warning hack because due to the new organization
289    it was awkward to maintain it.  As a result, the compiler now issues some of
290    these warnings when compiling init.cmi during bootstrap compilation. On
291    the plus side, you also get a warning when you do, for example:
292       val op = = Int32.+
293    which was not the case up to now.
294    
295    I placed "assign" and "deref" into the _Core structure so that the
296    code that deals with the "lazy" keyword can find them there.  This
297    removes the need for having access to the primitive environment
298    during elaboration.
299    
300    ----------------------------------------------------------------------
301    Name: Matthias Blume
302    Date: 2001/08/13
303    Tag: blume-20010813-closures
304    Description:
305    
306    This fix was sent to us by Zhong Shao.  It is supposed to improve the
307    performance of certain loops by avoiding needless closure allocation.
308    
309    ----------------------------------------------------------------------
310    Name: Lal George
311    Date: 2001/07/31 10:03:23 EDT 2001
312    Tag: george-20010731-x86-fmalloc
313    Description: Fixed bug in x86 calls
314    
315        There was a bug where call instructions would mysteriously
316        vanish. The call instruction had to be one that returned
317        a floating point value.
318    
319    ----------------------------------------------------------------------
320    Name: Lal George
321    Date: 2001/07/19 16:36:29 EDT 2001
322    Tag: george-20010719-simple-cells
323    Description:
324    
325    I have dramatically simplified the interface for CELLS in MLRISC.
326    
327    In summary, the cells interface is broken up into three parts:
328    
329      1. CellsBasis : CELLS_BASIS
330    
331            CellsBasis is a top level structure and common for all
332            architectures.  it contains the definitions of basic datatypes
333            and utility  functions over these types.
334    
335      2. functor Cells() : CELLS
336    
337            Cells generates an interface for CELLS that incorporates the
338            specific resources on the target architecture, such as the
339            presence of special register classes, their number and size,
340            and various useful substructures.
341    
342      3. <ARCH>CELLS
343    
344            e.g. SparcCells: SPARCCELLS
345    
346            <ARCH>CELLS usually contains additional bindings for special
347            registers  on the architecture, such as:
348    
349                    val r0 : cell           (* register zero *)
350                    val y : cell            (* Y register *)
351                    val psr : cell          (* processor status register *)
352                    ...
353    
354            The structure returned by applying the Cells functor is opened
355            in this interface.
356    
357    The main implication of all this is that the datatypes for cells is
358    split between CellsBasis and CELLS -- a fairly simple change for user
359    code.
360    
361    In the old scheme the CELLS interface had a definitional binding of
362    the form:
363    
364            signature CELLS = sig
365    
366               structure CellsBasis = CellsBasis
367    
368               ...
369    
370            end
371    
372    With all the sharing constraints that goes on in MLRISC, this old
373    design  quickly leads to errors such as:
374    
375            "structure definition spec inside of sharing ... "
376    
377    
378    and appears to require an unacceptable amount of sharing and where
379    constraint hackery.
380    
381    I think this error message (the interaction of definitional specs and
382    sharing) requires more explanation on our web page.
383    
384    ----------------------------------------------------------------------
385    Name: Matthias Blume
386    Date: 2001/07/19 15:00:00 EDT
387    Tag: blume-20010719-libreorg
388    Description:
389    
390    This update puts together a fairly extensive but straightforward change
391    to the way the libraries that implement the interactive system are
392    organized:
393    
394       The biggest change is the elimination of structure Compiler.  As a
395       replacement for this structure, there is now a CM library
396       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
397       that exports all the substructures of the original structure Compiler
398       directly.  So instead of saying Compiler.Foo.bar one now simply
399       says Foo.bar.  (The CM libraries actually export a collection of
400       structures that is richer than the collection of substructures of
401       structure Compiler.)
402    
403       To make the transition smooth, there is a separate library called
404       $smlnj/compiler/compiler.cm which puts together and exports the
405       original structure Compiler (or at least something very close to it).
406    
407       There are five members of the original structure Compiler
408       that are not exported directly but which instead became members
409       of a new structure Backend (described by signature BACKEND).  These are:
410       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
411       Interact (: INTERACT), structure Machine (: MACHINE), and val
412       architecture (: string).
413    
414       Structure Compiler.Version has become structure CompilerVersion.
415    
416       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
417       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
418       or x86, respectively.
419       Each of these exports the same frontend structures that
420       $smlnj/compiler.cm exports.  But they do not have a structure Backend
421       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
422       Hppa, PPC, Sparc, or X86, respectively.
423    
424       Library $smlnj/compiler/all.cm exports the union of the exports of
425       $smlnj/compiler/<arch>.cm
426    
427       There are no structures <Arch>Compiler anymore, use
428       $smlnj/compiler/<arch>.cm instead.
429    
430       Library host-compiler-0.cm is gone.  Instead, the internal library
431       that instantiates CM is now called cm0.cm.  Selection of the host
432       compiler (backend) is no longer done here but. (Responsibility for it
433       now lies with $smlnj/compiler/current.cm.  This seems to be more
434       logical.)
435    
436       Many individual files have been moved or renamed.  Some files have
437       been split into multiple files, and some "dead" files have been deleted.
438    
439    Aside from these changes to library organization, there are also changes
440    to the way the code itself is organized:
441    
442       Structure Binfile has been re-implemented in such a way that it no
443       longer needs any knowledge of the compiler.  It exclusively deals
444       with the details of binfile layout.  It no longer invokes the
445       compiler (for the purpose of creating new prospective binfile
446       content), and it no longer has any knowledge of how to interpret
447       pickles.
448    
449       Structure Compile (: COMPILE) has been stripped down to the bare
450       essentials of compilation.  It no longer deals with linking/execution.
451       The interface has been cleaned up considerably.
452    
453       Utility routines for dealing with linking and execution have been
454       moved into their own substructures.
455    
456       (The ultimate goal of these changes is to provide a light-weight
457       binfile loader/linker (at least for, e.g., stable libraries) that
458       does not require CM or the compiler to be present.)
459    
460    CM documentation has been updated to reflect the changes to library
461    organization.
462    
463    ----------------------------------------------------------------------
464    Name: Matthias Blume
465    Date: 2001/07/10 17:30:00 EDT
466    Tag: Release_110_34
467    Description:
468    
469    Minor tweak to 110.34 (re-tagged):
470    
471      - README.html file added to CVS repository
472      - runtime compiles properly under FreeBSD 3.X and 4.X
473    
474    ----------------------------------------------------------------------
475    Name: Matthias Blume
476    Date: 2001/07/10 17:30:00 EDT
477    Tag: Release_110_34
478    Description:
479    
480    New version number (110.34). New bootfiles.
481    
482    ----------------------------------------------------------------------
483    Name: Matthias Blume
484    Date: 2001/07/09 16:00:00 EDT
485    Tag: blume-20010709-more-varargs
486    Description:
487    
488    I changed the handling of varargs in ml-nlffigen again:
489    The ellipsis ... will now simply be ignored (with an accompanying warning).
490    
491    The immediate effect is that you can actually call a varargs function
492    from ML -- but you can't actually supply any arguments beyond the ones
493    specified explicitly.  (For example, you can call printf with its format
494    string, but you cannot pass additional arguments.)
495    
496    This behavior is only marginally more useful than the one before, but
497    it has the advantage that a function or, more importantly, a function
498    type never gets dropped on the floor, thus avoiding follow-up problems with
499    other types that refer to the offending one.
500    
501    ----------------------------------------------------------------------
502    Name: Matthias Blume
503    Date: 2001/07/09 11:25:00 EDT
504    Tag: blume-20010709-varargs
505    Description:
506    
507    1. ckit-lib.cm now exports structure Error
508    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
509       with a warning accompanied by a source location.  Moreover, it
510       merely skips the offending function or type and proceeds with the
511       rest of its work.u  As a result, one can safely feed C code containing
512       "..." to ml-nlffigen.
513    3. There are some internal improvements to CM, providing slightly
514       more general string substitutions in the tools subsystem.
515    
516    ----------------------------------------------------------------------
517    Name: Matthias Blume
518    Date: 2001/06/27 15:10:00 EDT
519    Tag: blume-20010627-concur
520    Description:
521    
522    Fixed a small bug in CM's handling of parallel compilation.
523    (You could observe the bug by Control-C-interrupting an ordinary
524    CMB.make or CM.stabilize and then attaching some compile servers.
525    The result was that all of a sudden the previously interrupted
526    compilation would continue on its own.  This was because of
527    an over-optimization: CM did not bother to clean out certain queues
528    when no servers were attached "anyway", resulting in the contents
529    of these queues to grab control when new servers did get attached.)
530    
531    There is also another minor update to the CM manual.
532    
533    ----------------------------------------------------------------------
534    Name: Matthias Blume
535    Date: 2001/06/26 16:15:00 EDT
536    Tag: blume-20010626-cmdoc
537    Description:
538    
539    Minor typo fixed in CM manual (syntax diagram for libraries).
540    
541    ----------------------------------------------------------------------
542    Name: Matthias Blume
543    Date: 2001/06/25 22:55:00 EDT
544    Tag: blume-20010625-x86pc
545    Description:
546    
547    Fixed a nasty bug in the X86 assembly code that caused signal
548    handlers to fail (crash) randomly.
549    
550    ----------------------------------------------------------------------
551    Name: Matthias Blume
552    Date: 2001/06/25 12:05:00 EDT
553    Tag: blume-20010625-nlffigen
554    Description:
555    
556    This update fixes a number of minor bugs in ml-nlffigen as reported by
557    Nick Carter <nbc@andrew.cmu.edu>.
558    
559      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
560      2. Default names for generated files are now derived from the name of
561         the C file *without its directory*.  In particular, this causes generated
562         files to be placed locally even if the C file is in some system directory.
563      3. Default names for generated signatures and structures are also derived
564         from the C file name without its directory.  This avoids silly things
565         like "structure GL/GL".
566         (Other silly names are still possible because ml-nlffigen does not do
567          a thorough check of whether generated names are legal ML identifiers.
568          When in doubt, use command line arguments to force particular names.)
569    
570    ----------------------------------------------------------------------
571    Name: Matthias Blume
572    Date: 2001/06/21 12:25:00 EDT
573    Tag: blume-20010621-eXene
574    Description:
575    
576    eXene now compiles and (sort of) works again.
577    
578    The library name (for version > 110.33) is $/eXene.cm.
579    
580    I also added an new example in src/eXene/examples/nbody.  See the
581    README file there for details.
582    
583    ----------------------------------------------------------------------
584    Name: Matthias Blume
585    Date: 2001/06/20 16:40:00 EDT
586    Tag: blume-20010620-cml
587    Description:
588    
589    CML now compiles and works again.
590    
591    Libraries (for version > 110.33):
592    
593      $cml/cml.cm            Main CML library.
594      $cml/basis.cm          CML's version of $/basis.cm.
595      $cml/cml-internal.cm   Internal helper library.
596      $cml/core-cml.cm       Internal helper library.
597      $cml-lib/trace-cml.cm  Tracing facility.
598      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
599    
600    The installer (config/install.sh) has been taught how to properly
601    install this stuff.
602    
603    ----------------------------------------------------------------------
604    Name: Matthias Blume
605    Date: 2001/06/19 17:55:00 EDT
606    Tag: blume-20010619-instantiate
607    Description:
608    
609    This un-breaks the fix for bug 1432.
610    (The bug was originally fixed in 110.9 but I broke it again some
611    time after that.)
612    
613    ----------------------------------------------------------------------
614    Name: Matthias Blume
615    Date: 2001/06/19 17:25:00 EDT
616    Tag: blume-20010619-signals
617    Description:
618    
619    This should (hopefully) fix the long-standing signal handling bug.
620    (The runtime system was constructing a continuation record with an
621    incorrect descriptor which would cause the GC to drop data on the floor...)
622    
623    ----------------------------------------------------------------------
624    Name: Matthias Blume
625    Date: 2001/06/15 15:05:00 EDT
626    Tag: blume-20010615-moresparc
627    Description:
628    
629    Here is a short late-hour update related to Sparc c-calls:
630    
631     -- made handling of double-word arguments a bit smarter
632    
633     -- instruction selection phase tries to collapse certain clumsily
634        constructed ML-Trees; typical example:
635    
636            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
637    
638        This currently has no further impact on SML/NJ since mlriscGen does
639        not seem to generate such patterns in the first place, and c-calls
640        (which did generate them in the beginning) has meanwhile been fixed
641        so as to avoid them as well.
642    
643    ----------------------------------------------------------------------
644    Name: Matthias Blume
645    Date: 2001/06/15 15:05:00 EDT
646    Tag: blume-20010615-sparc
647    Description:
648    
649    The purpose of this update is to provide an implementation of NLFFI
650    on Sparc machines.
651    
652    Here are the changes in detail:
653    
654       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
655       the Sparc implementation of the c-calls API.
656       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
657       for accessing the ML frame.  Thus, we have a real frame pointer and
658       can freely modify %sp without need for an omit-frame-ptr phase.
659       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
660       this case.
661       * ml-nlffigen has been taught to produce code for different architectures
662       and calling conventions.
663       * In a way similar to what was done in the x86 case, the Sparc
664       backend uses its own specific extension to mltree.  (For example,
665       it needs to be able to generate UNIMP instructions which are part
666       of the calling convention.)
667       * ml-nlffi-lib was reorganized to make it more modular (in particular,
668       to make it easier to plug in new machine- and os-dependent parts).
669    
670    There are some other fairly unrelated bug fixes and cleanups as well:
671    
672       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
673       that they properly share their libraries with existing SML/NJ libraries.
674       * I fixed a minor cosmetic bug in CM, supressing certain spurious
675       follow-up error messages.
676       * Updates to CM/CMB documentation.
677    
678    TODO items:
679    
680       * MLRISC should use a different register as its asmTemp on the Sparc.
681         (The current %o2 is a really bad choice because it is part of the
682         calling conventions, so things might interfere in unexpected ways.)
683    
684    ----------------------------------------------------------------------
685    Name: Matthias Blume
686    Date: 2001/06/07
687    Tag: blume-20010607-calls
688    Description:
689    
690    A number of internal changes related to C calls and calling conventions:
691    
692    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
693       number of bytes popped implicitly (by the callee).  In most cases
694       this field is 0 but on x86/win32 it is some non-zero value.  This
695       is information provided for the benefit of the "omit-frameptr" pass.
696    2. The CALL instruction on the x86 carries a similar "pops" field.
697       The instruction selection phase copies its value from the ML-Tree
698       CALL statement.
699    3. On all other architectures, the instruction selection phase checks
700       whether "pops=0" and complains if not.
701    4. The c-calls implementation for x86 now accepts two calling conventions:
702       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
703       up after the call and pops is set to 0.  For "stdcall", the caller
704       does nothing, leaving the cleanup to the callee; pops is set to
705       the number of bytes that were pushed onto the stack.
706    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
707       distinguish between "ccall" and "stdcall".
708    6. The UNIMP instruction has been added to the supported Sparc instruction
709       set. (This is needed for implementing the official C calling convention
710       on this architecture.)
711    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
712       work with the latest CM.
713    
714    ----------------------------------------------------------------------
715    Name: Matthias Blume
716    Date: 2001/06/05 15:10:00 EDT
717    Tag: blume-20010605-cm-index
718    Description:
719    
720    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
721    
722    1. CM can now generate "index files".  These are human-readable files
723       that list on a per-.cm-file basis each toplevel symbol defined or
724       imported.  The location of the index file for
725       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
726       To enable index-file generation, set CM.Control.generate_index to true
727       or export an environment-symbol: export CM_GENERATE_INDEX=true.
728    
729       The CM manual has been updated accordingly.
730    
731    2. I made some slight modifications to the c-calls API in MLRISC.
732    
733         a) There is now a callback to support saving/restoring of
734            dedicated but caller-save registers around the actual call
735            instruction.
736         b) One can optionally specify a comment-annotation for the
737            call instruction.
738    
739    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
740       (For example, the comment annotation shows the C prototype of
741        the function being called.)
742    
743    ----------------------------------------------------------------------
744    Name: Matthias Blume
745    Date: 2001/06/01 13:30:00 EDT
746    Tag: blume-20010601-nlffi-cleanup
747    Description:
748    
749    This is mostly a cleanup of MLFFI stuff:
750    
751       - some signature files have been put into a more exposed place
752       - the ugly 'f type parameter is gone (simplifies types tremendously!)
753       - ml-nlffigen changed accordingly
754       - tutorial updated
755    
756    Other changes:
757    
758       - author's affiliation in CM manual(s) updated
759       - some more recognized keywords added to Allen's sml.sty
760    
761    ----------------------------------------------------------------------
762    Name: Matthias Blume
763  Date: 2001/05/25 15:30:00 EDT  Date: 2001/05/25 15:30:00 EDT
764  Tag: blume-20010525-iptr  Tag: blume-20010525-iptr
765  Description:  Description:
# Line 2291  Line 3037 
3037       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3038       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3039       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
3040       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3041       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3042       Dave's hands. :)       Dave's hands. :)
3043    

Legend:
Removed from v.836  
changed lines
  Added in v.939

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