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 721, Mon Nov 6 14:03:39 2000 UTC revision 874, Mon Jul 9 20:01:40 2001 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Matthias Blume
17    Date: 2001/07/09 16:00:00 EDT
18    Tag: blume-20010709-more-varargs
19    Description:
20    
21    I changed the handling of varargs in ml-nlffigen again:
22    The ellipsis ... will now simply be ignored (with an accompanying warning).
23    
24    The immediate effect is that you can actually call a varargs function
25    from ML -- but you can't actually supply any arguments beyond the ones
26    specified explicitly.  (For example, you can call printf with its format
27    string, but you cannot pass additional arguments.)
28    
29    This behavior is only marginally more useful than the one before, but
30    it has the advantage that a function or, more importantly, a function
31    type never gets dropped on the floor, thus avoiding follow-up problems with
32    other types that refer to the offending one.
33    
34    ----------------------------------------------------------------------
35    Name: Matthias Blume
36    Date: 2001/07/09 11:25:00 EDT
37    Tag: blume-20010709-varargs
38    Description:
39    
40    1. ckit-lib.cm now exports structure Error
41    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
42       with a warning accompanied by a source location.  Moreover, it
43       merely skips the offending function or type and proceeds with the
44       rest of its work.u  As a result, one can safely feed C code containing
45       "..." to ml-nlffigen.
46    3. There are some internal improvements to CM, providing slightly
47       more general string substitutions in the tools subsystem.
48    
49    ----------------------------------------------------------------------
50    Name: Matthias Blume
51    Date: 2001/06/27 15:10:00 EDT
52    Tag: blume-20010627-concur
53    Description:
54    
55    Fixed a small bug in CM's handling of parallel compilation.
56    (You could observe the bug by Control-C-interrupting an ordinary
57    CMB.make or CM.stabilize and then attaching some compile servers.
58    The result was that all of a sudden the previously interrupted
59    compilation would continue on its own.  This was because of
60    an over-optimization: CM did not bother to clean out certain queues
61    when no servers were attached "anyway", resulting in the contents
62    of these queues to grab control when new servers did get attached.)
63    
64    There is also another minor update to the CM manual.
65    
66    ----------------------------------------------------------------------
67    Name: Matthias Blume
68    Date: 2001/06/26 16:15:00 EDT
69    Tag: blume-20010626-cmdoc
70    Description:
71    
72    Minor typo fixed in CM manual (syntax diagram for libraries).
73    
74    ----------------------------------------------------------------------
75    Name: Matthias Blume
76    Date: 2001/06/25 22:55:00 EDT
77    Tag: blume-20010625-x86pc
78    Description:
79    
80    Fixed a nasty bug in the X86 assembly code that caused signal
81    handlers to fail (crash) randomly.
82    
83    ----------------------------------------------------------------------
84    Name: Matthias Blume
85    Date: 2001/06/25 12:05:00 EDT
86    Tag: blume-20010625-nlffigen
87    Description:
88    
89    This update fixes a number of minor bugs in ml-nlffigen as reported by
90    Nick Carter <nbc@andrew.cmu.edu>.
91    
92      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
93      2. Default names for generated files are now derived from the name of
94         the C file *without its directory*.  In particular, this causes generated
95         files to be placed locally even if the C file is in some system directory.
96      3. Default names for generated signatures and structures are also derived
97         from the C file name without its directory.  This avoids silly things
98         like "structure GL/GL".
99         (Other silly names are still possible because ml-nlffigen does not do
100          a thorough check of whether generated names are legal ML identifiers.
101          When in doubt, use command line arguments to force particular names.)
102    
103    ----------------------------------------------------------------------
104    Name: Matthias Blume
105    Date: 2001/06/21 12:25:00 EDT
106    Tag: blume-20010621-eXene
107    Description:
108    
109    eXene now compiles and (sort of) works again.
110    
111    The library name (for version > 110.33) is $/eXene.cm.
112    
113    I also added an new example in src/eXene/examples/nbody.  See the
114    README file there for details.
115    
116    ----------------------------------------------------------------------
117    Name: Matthias Blume
118    Date: 2001/06/20 16:40:00 EDT
119    Tag: blume-20010620-cml
120    Description:
121    
122    CML now compiles and works again.
123    
124    Libraries (for version > 110.33):
125    
126      $cml/cml.cm            Main CML library.
127      $cml/basis.cm          CML's version of $/basis.cm.
128      $cml/cml-internal.cm   Internal helper library.
129      $cml/core-cml.cm       Internal helper library.
130      $cml-lib/trace-cml.cm  Tracing facility.
131      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
132    
133    The installer (config/install.sh) has been taught how to properly
134    install this stuff.
135    
136    ----------------------------------------------------------------------
137    Name: Matthias Blume
138    Date: 2001/06/19 17:55:00 EDT
139    Tag: blume-20010619-instantiate
140    Description:
141    
142    This un-breaks the fix for bug 1432.
143    (The bug was originally fixed in 110.9 but I broke it again some
144    time after that.)
145    
146    ----------------------------------------------------------------------
147    Name: Matthias Blume
148    Date: 2001/06/19 17:25:00 EDT
149    Tag: blume-20010619-signals
150    Description:
151    
152    This should (hopefully) fix the long-standing signal handling bug.
153    (The runtime system was constructing a continuation record with an
154    incorrect descriptor which would cause the GC to drop data on the floor...)
155    
156    ----------------------------------------------------------------------
157    Name: Matthias Blume
158    Date: 2001/06/15 15:05:00 EDT
159    Tag: blume-20010615-moresparc
160    Description:
161    
162    Here is a short late-hour update related to Sparc c-calls:
163    
164     -- made handling of double-word arguments a bit smarter
165    
166     -- instruction selection phase tries to collapse certain clumsily
167        constructed ML-Trees; typical example:
168    
169            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
170    
171        This currently has no further impact on SML/NJ since mlriscGen does
172        not seem to generate such patterns in the first place, and c-calls
173        (which did generate them in the beginning) has meanwhile been fixed
174        so as to avoid them as well.
175    
176    ----------------------------------------------------------------------
177    Name: Matthias Blume
178    Date: 2001/06/15 15:05:00 EDT
179    Tag: blume-20010615-sparc
180    Description:
181    
182    The purpose of this update is to provide an implementation of NLFFI
183    on Sparc machines.
184    
185    Here are the changes in detail:
186    
187       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
188       the Sparc implementation of the c-calls API.
189       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
190       for accessing the ML frame.  Thus, we have a real frame pointer and
191       can freely modify %sp without need for an omit-frame-ptr phase.
192       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
193       this case.
194       * ml-nlffigen has been taught to produce code for different architectures
195       and calling conventions.
196       * In a way similar to what was done in the x86 case, the Sparc
197       backend uses its own specific extension to mltree.  (For example,
198       it needs to be able to generate UNIMP instructions which are part
199       of the calling convention.)
200       * ml-nlffi-lib was reorganized to make it more modular (in particular,
201       to make it easier to plug in new machine- and os-dependent parts).
202    
203    There are some other fairly unrelated bug fixes and cleanups as well:
204    
205       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
206       that they properly share their libraries with existing SML/NJ libraries.
207       * I fixed a minor cosmetic bug in CM, supressing certain spurious
208       follow-up error messages.
209       * Updates to CM/CMB documentation.
210    
211    TODO items:
212    
213       * MLRISC should use a different register as its asmTemp on the Sparc.
214         (The current %o2 is a really bad choice because it is part of the
215         calling conventions, so things might interfere in unexpected ways.)
216    
217    ----------------------------------------------------------------------
218    Name: Matthias Blume
219    Date: 2001/06/07
220    Tag: blume-20010607-calls
221    Description:
222    
223    A number of internal changes related to C calls and calling conventions:
224    
225    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
226       number of bytes popped implicitly (by the callee).  In most cases
227       this field is 0 but on x86/win32 it is some non-zero value.  This
228       is information provided for the benefit of the "omit-frameptr" pass.
229    2. The CALL instruction on the x86 carries a similar "pops" field.
230       The instruction selection phase copies its value from the ML-Tree
231       CALL statement.
232    3. On all other architectures, the instruction selection phase checks
233       whether "pops=0" and complains if not.
234    4. The c-calls implementation for x86 now accepts two calling conventions:
235       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
236       up after the call and pops is set to 0.  For "stdcall", the caller
237       does nothing, leaving the cleanup to the callee; pops is set to
238       the number of bytes that were pushed onto the stack.
239    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
240       distinguish between "ccall" and "stdcall".
241    6. The UNIMP instruction has been added to the supported Sparc instruction
242       set. (This is needed for implementing the official C calling convention
243       on this architecture.)
244    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
245       work with the latest CM.
246    
247    ----------------------------------------------------------------------
248    Name: Matthias Blume
249    Date: 2001/06/05 15:10:00 EDT
250    Tag: blume-20010605-cm-index
251    Description:
252    
253    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
254    
255    1. CM can now generate "index files".  These are human-readable files
256       that list on a per-.cm-file basis each toplevel symbol defined or
257       imported.  The location of the index file for
258       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
259       To enable index-file generation, set CM.Control.generate_index to true
260       or export an environment-symbol: export CM_GENERATE_INDEX=true.
261    
262       The CM manual has been updated accordingly.
263    
264    2. I made some slight modifications to the c-calls API in MLRISC.
265    
266         a) There is now a callback to support saving/restoring of
267            dedicated but caller-save registers around the actual call
268            instruction.
269         b) One can optionally specify a comment-annotation for the
270            call instruction.
271    
272    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
273       (For example, the comment annotation shows the C prototype of
274        the function being called.)
275    
276    ----------------------------------------------------------------------
277    Name: Matthias Blume
278    Date: 2001/06/01 13:30:00 EDT
279    Tag: blume-20010601-nlffi-cleanup
280    Description:
281    
282    This is mostly a cleanup of MLFFI stuff:
283    
284       - some signature files have been put into a more exposed place
285       - the ugly 'f type parameter is gone (simplifies types tremendously!)
286       - ml-nlffigen changed accordingly
287       - tutorial updated
288    
289    Other changes:
290    
291       - author's affiliation in CM manual(s) updated
292       - some more recognized keywords added to Allen's sml.sty
293    
294    ----------------------------------------------------------------------
295    Name: Matthias Blume
296    Date: 2001/05/25 15:30:00 EDT
297    Tag: blume-20010525-iptr
298    Description:
299    
300      - put the official 110.33-README (as it appears on the ftp server) under
301        CVS
302      - fixed a small bug related to incomplete pointer types in
303        ml-nlffigen
304      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
305        (it does not need the 'f type parameter)
306    
307    ----------------------------------------------------------------------
308    Name: Matthias Blume
309    Date: 2001/05/23 14:30:00 EDT
310    Tag: Release_110_33
311    Description:
312    
313    New version number (110.33).  New bootfiles.
314    
315    ----------------------------------------------------------------------
316    Name: Matthias Blume
317    Date: 2001/05/22 18:06:00 EDT
318    Tag: blume-20010522-targets
319    Description:
320    
321    Made install.sh use file config/targets.customized if it exists, falling
322    back to config/targets if it doesn't.  This way one can have a customized
323    version of the targets file without touching the "real thing", thus
324    eliminating the constant fear of accidentally checking something bogus
325    back into the CVS repository...  (File config/targets.customized must
326    not be added to the repository!)
327    
328    ----------------------------------------------------------------------
329    Name: Matthias Blume
330    Date: 2001/05/22 16:30:00 EDT
331    Tag: blume-20010522-minitut
332    Description:
333    
334    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
335       struct returns.
336    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
337       incomplete, preliminary documentation for NLFFI.
338    
339    ----------------------------------------------------------------------
340    Name: Matthias Blume
341    Date: 2001/05/14 11:30:00 EDT
342    Tag: blume-20010514-script
343    Description:
344    
345    Some bugs in install script fixed.
346    
347    In addition to that I also made a slight change to the NLFFI API:
348    Functors generated by ml-nlffigen now take the dynamic library as a
349    straight functor argument, not as a suspended one.  (The original
350    functor code used to force the suspension right away anyway, so there
351    was nothing gained by this complication of the interface.)
352    
353    ----------------------------------------------------------------------
354    Name: Matthias Blume
355    Date: 2001/05/11 14:35:00 EDT
356    Tag: blume-20010511-ml-nlffi
357    Description:
358    
359    I finally took the plunge and added my new FFI code to the main
360    repository.  For x86-linux it is now ready for prime-time.
361    
362    There are two new subdirectories of "src":
363    
364      - ml-nlffi-lib:
365           The utility library for programs using the FFI interface.
366           Here is the implementation of $/c.cm and its associated low-level
367           partners $/c-int.cm and $/memory.cm.
368      - ml-nlffigen:
369           A stand-alone program for generating ML glue code from C source
370           code.
371    
372    Building ml-nlffigen requires $/ckit-lib.cm.
373    
374    The config/install.sh script has been updates to do the Right Thing
375    (hopefully).
376    
377    Notice that the source tree for the C-Kit will not be put under "src"
378    but directly under the installation root directory.  (This is the
379    structure that currently exists on the CVS server when you check out
380    module "sml".)  Fortunately, config/install.sh knows about this oddity.
381    
382    Bugs: No documentation yet.
383    
384    ----------------------------------------------------------------------
385    Name: Matthias Blume
386    Date: 2001/05/09 16:35:00 EDT
387    Tag: blume-20010509-cpscontract
388    Description:
389    
390    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
391    wrapper/unwrapper elimination did not decrement usage counts and some
392    dead variables got overlooked by the dead-up logic.)
393    
394    ----------------------------------------------------------------------
395    Name: Lal George
396    Date: 2001/05/08  17:26:09 EDT
397    Tag: george-20010508-omit-frameptr
398    Description:
399    
400    Changes to implement the omit-frame-pointer optimization to support
401    raw C calls. For now, there is only support on the Intel x86, but
402    other architectures will follow as more experience is gained with this.
403    
404    
405    ----------------------------------------------------------------------
406    Name: Matthias Blume
407    Date: 2001/05/07 14:40:00 EDT
408    Tag: blume-20010507-proxies
409    Description:
410    
411    I made into "proxy libraries" all libraries that qualify for such a
412    change.  (A qualifying library is a library that has another library or
413    groups as its sole member and repeats that member's export list
414    verbatim.  A proxy library avoids this repetition by omitting its export
415    list, effectively inheriting the list that its (only) member exports.
416    See the CM manual for more explanation.)
417    The main effect is that explicit export lists for these libraries
418    do not have to be kepts in sync, making maintenance a bit easier.
419    
420    I also added copyright notices to many .cm-files.
421    
422    Last but not least, I made a new set of bootfiles.
423    
424    ----------------------------------------------------------------------
425    Name: Matthias Blume
426    Date: 2001/05/04 17:00:00 EDT
427    Tag: blume-20010504-cm-lsplit
428    Description:
429    
430    0. John merged pending changes to $/smlnj-lib.cm
431    
432    1. Allen's previous change accidentally backed out of one of Lal's
433       earlier changes.  I undid this mistake (re-introducing Lal's change).
434    
435    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
436       within the compiler where applicable.  There is some code simplification
437       because of that.
438    
439    3. The "split" phase (in FLINT) is now part of the default list of phases.
440       Compiler.Control.LambdaSplitting.* can be used to globally control the
441       lambda-splitting (cross-module-inlining) engine.  In addition to that,
442       it can now also be controlled on a per-source basis: CM has been taught
443       a new tool parameter applicable to ML source files.
444    
445       - To turn lambda-splitting off completely:
446            local open Compiler.Control.LambdaSplitting in
447                val _ = set Off
448            end
449       - To make "no lambda-splitting" the global default (but allow per-source
450         overriding); this is the initial setting:
451            local open Compiler.Control.LambdaSplitting in
452                val _ = set (Default NONE)
453            end
454       - To make "lambda-splitting with aggressiveness a" the global default
455         (and allow per-source overriding):
456            local open Compiler.Control.LambdaSplitting in
457                val _ = set (Default (SOME a))
458            end
459    
460       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
461         write (in the respective .cm-file):
462            a.sml (lambdasplitting:off)
463       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
464            a.sml (lambdasplitting:on)
465       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
466         <a> is a decimal non-negative integer):
467            a.sml (lambdasplitting:<a>)
468       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
469            a.sml (lambdasplitting:infinity)
470       - To use the global default for a.sml:
471            a.sml (lambdasplitting:default)
472         or simply
473            a.sml
474    
475    ----------------------------------------------------------------------
476    Name: Allen Leung
477    Date: 2001/05/04 01:57:00 EDT
478    Tag: leunga-20010504-sync
479    Description:
480    
481      MLRISC features.
482    
483      1. Fix to CMPXCHG instructions.
484      2. Changed RA interface to allow annotations in callbacks.
485      3. Added a new method to the stream interface to allow annotations updates.
486    
487    ----------------------------------------------------------------------
488    Name: Matthias Blume
489    Date: 2001/05/01 11:45:00 EDT
490    Tag: blume-20010501-pcedittmp
491    Description:
492    
493    Changed install.sh to use the current working directory instead of
494    /usr/tmp for a temporary file (pcedittmp).  The previous choice
495    of /usr/tmp caused trouble with MacOS X because of file premission
496    problems.
497    
498    ----------------------------------------------------------------------
499    Name: Matthias Blume
500    Date: 2001/04/20 11:10:00 EDT
501    Tag: blume-20010420-inMLflag
502    Description:
503    
504     - added vp_limitPtrMask to vproc-state.h
505       (for use by the raw-C-calls mechanism to implement proper interrupt
506        handling)
507     - made the ML compiler aware of various data-structure offsets so it
508       can generate code for accessing the vp_inML flag and vp_limitPtrMask
509     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
510       raw C-calls
511    
512    ----------------------------------------------------------------------
513    Name: Lal George
514    Date: 2001/04/20 09:15:28 EDT
515    Tag: george-20010420-macosX
516    Description:
517    
518     - Changes to port to Mac OS X; Darwin.
519    
520     - In the process I found that sqrt was broken on the PPC, because the
521       fsqrt instruction is not implemented.
522    
523    ----------------------------------------------------------------------
524    Name: Matthias Blume
525    Date: 2001/04/18 12:45:00 EDT
526    Tag: blume-20010418-ccalls
527    Description:
528    
529     - fixed two off-by-4 errors in the x86-specific c-calls implementation
530       (this bug prevented structure arguments containing pointers from being
531        passed correctly)
532     - changed the raw-C-call code in mlriscGen.sml in such a way that
533       structure arguments are represented as a pointer to the beginning
534       of the structure (instead of having a series of synthesized arguments,
535       one for each structure member)
536    
537     - made makeml script's verbosity level configurable via environment
538       variable (MAKEML_VERBOSITY)
539    
540     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
541       in rawmem-x86.sml; we are now using the real thing
542    
543    ----------------------------------------------------------------------
544    Name: Matthias Blume
545    Date: 2001/03/22 16:25:00 EST
546    Tag: blume-20010322-bootfiles
547    Description:
548    
549    Created a new set of bootfiles (for your automatic installation convenience).
550    
551    ----------------------------------------------------------------------
552    Name: Matthias Blume
553    Date: 2001/03/22 15:10:00 EST
554    Tag: blume-20010322-rawmem-parcm
555    Description:
556    
557    1. All "raw memory access" primitives for the new FFI are implemented now
558       (at least on the x86).
559    2. Some further cleanup of CM's parallel make mechanism.
560    
561    ----------------------------------------------------------------------
562    Name: Matthias Blume
563    Date: 2001/03/19 17:53:00 EST
564    Tag: blume-20010319-parallel
565    Description:
566    
567    Parallel make (using compile servers) now works again.
568    
569    To this end, CM.stabilize and CMB.make have been modified to work in
570    two passes when compile servers are attached:
571       1. Compile everything, do not perform stabilization; this pass
572          uses compile servers
573       2. Stabilize everything; this pass does not use compile servers
574    If there are no compile servers, the two passes are combined into one
575    (as before).  Splitting the passes increases the inherent parallelism
576    in the dependency graph because the entire graph including all
577    libraries is available at the same time.  This, in turn, improves
578    server utilization.  The downside is that the master process will
579    have to do some extra work after compilation is done (because for
580    technical reasons it must re-read all the binfiles during stabilization).
581    
582    ----------------------------------------------------------------------
583    Name: Matthias Blume
584    Date: 2001/03/16 12:22:00 EST
585    Tag: blume-20010316-bootfiles
586    Description:
587    
588    Created a new set of bootfiles (for your automatic installation convenience).
589    
590    ----------------------------------------------------------------------
591    Name: Matthias Blume
592    Date: 2001/03/16 11:00:00 EST
593    Tag: blume-20010316-MLTREE-fixup
594    Description:
595    
596    This is a minor fixup for an (untagged) earlier commit by Allen.
597    (A file was missing).
598    
599    ----------------------------------------------------------------------
600    Name: Allen Leung
601    Date: Mon Mar  5 18:54:57 EST 2001
602    Tag: leunga-20010305-cut-support
603    
604    1. New support for alternative control-flow in MLTREE.
605       Currently we support
606    
607          FLOW_TO(CALL ...., [k1,...,kn])
608    
609       This is needed for 'cuts to' in C-- and try/handle-like constructs
610       in Moby
611    
612       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
613    
614    2. Register Allocator
615    
616       Changes in interface [from Fermin, John]
617    
618    3. Alpha 8-bit SLL support [Fermin]
619    
620    4. All architectures
621    
622       A new module (ClusterExpandCopies) for expanding parallel copies.
623    
624    ----------------------------------------------------------------------
625    Name: Allen Leung
626    Date: 2001/02/27 23:07:00 EST
627    Tag: leunga-20010227-minor-stuff
628    
629    1. Alpha bug fix for CMOVNE
630    2. Handle mltree COND(..,FCMP ...,...)
631    3. Bug fix in simplifier
632    
633    ----------------------------------------------------------------------
634    Name: Matthias Blume
635    Date: 2001/01/30 17:50:00 EST
636    Tag: blume-20010130-sync
637    Description:
638    
639    This is just a minor update to sync my devel branch with the main brach.
640    The only visible change is the addition of some README files.
641    
642    ----------------------------------------------------------------------
643    Name: Matthias Blume
644    Date: 2001/01/12 23:30:00 JST
645    Tag: blume-20010112-bootfiles
646    Description:
647    
648    Made a new set of bootfiles that goes with the current state of the
649    repository.
650    
651    ----------------------------------------------------------------------
652    Name: Matthias Blume
653    Date: 2001/01/12 21:20:00 JST
654    Tag: blume-20010112-sync
655    Description:
656    
657    I am just flushing out some minor changes that had accumulated in
658    my private branch in order to sync with the main tree.  (This is
659    mainly because I had CVS trouble when trying to merge _into_ my
660    private branch.)
661    
662    Most people should be completely unaffected by this.
663    
664    ----------------------------------------------------------------------
665    Name: Allen Leung
666    Date: Thu Jan 11 21:03:00 EST 2001
667    Tag: leunga-20010111-labexp=mltree
668    Description:
669    
670    1.  Removed the type LabelExp and replace it by MLTree.
671    2.  Rewritten mltree-simplify with the pattern matcher tool.
672    3.  There were some bugs in alpha code generator which would break
673        64-bit code generation.
674    4.  Redo the tools to generate code with the
675    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
676        are now generated by perl scripts.
677    
678    ----------------------------------------------------------------------
679    Name: Matthias Blume
680    Date: 2001/01/10 21:55:00 JST
681    Tag: blume-20010110-rcc
682    Description:
683    
684    The RCC stuff now seems to work (but only on the x86).
685    This required hacking of the c-calls interface (and -implementation) in
686    MLRISC.
687    
688    Normal compiler users should be unaffected.
689    
690    ----------------------------------------------------------------------
691    Name: Matthias Blume
692    Date: 2001/01/09 01:20:00 JST
693    Tag: blume-20010109-rcc
694    Description:
695    
696    This is a fairly big patch, flushing out a large number of pending
697    changes that I made to my development copy over the last couple of days.
698    
699    Of practical relevance at this moment is a workaround for a pickling
700    bug that Allen ran into the other day.  The cause of the bug itself is
701    still unknown and it might be hard to fix it properly, but the
702    workaround has some merits of its own (namely somewhat reducing pickling
703    overhead for certain libraries).  Therefore, I think this solution should
704    be satisfactory at this time.
705    
706    The rest of the changes (i.e., the vast majority) has to do with my
707    ongoing efforts of providing direct support for C function calls from
708    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
709    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
710    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
711    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
712    handle RCC.
713    
714    The last part (the changes to mlriscGen.sml) are still known to be
715    wrong on the x86 and not implemented on all other architectures.  But
716    the infrastructure is in place. I had to change a few functor
717    signatures in the backend to be able to route the CCalls interface
718    from MLRISC there, and I had to specialize the mltree type (on the
719    x86) to include the necessary extensions. (The extensions themselves
720    were already there and redy to go in MLRISC/x86).
721    
722    Everything should be very happy as soon as someone helps me with
723    mlriscGen.sml...
724    
725    In any case, nothing of this should matter to anyone as long as the
726    new primop is not being used (which is going to be the case unless you
727    find it where I hid it :). The rest of the compiler is completely
728    unaffected.
729    
730    ----------------------------------------------------------------------
731    Name: Matthias Blume
732    Date: 2001/01/05 00:30:00 JST
733    Tag: blume-20010105-primops
734    Description:
735    
736    Added some experimental support for work that I am doing right now.
737    These changes mostly concern added primops, but there is also a new
738    experimental C library in the runtime system (but currently not enabled
739    anywhere except on Linux/X86).
740    
741    In the course of adding primops (and playing with them), I discovered that
742    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
743    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
744    To recover, I made type information in INL_PRIM mandatory and changed
745    prim.sml as well as built-in.sml accordingly.  The InLine structure now
746    has complete, correct type information (i.e., no bottom types).
747    
748    Since all these changes mean that we need new binfiles, I also bumped the
749    version number to 110.32.1.
750    
751    ----------------------------------------------------------------------
752    Name: Matthias Blume
753    Date: 2000/12/30 22:10:00 JST
754    Tag: blume-20001230-various
755    Description:
756    
757    Added proxy libraries for MLRISC and let MLRISC libraries refer
758    to each other using path anchors.  (See CM manual for explanation.)
759    
760    Updated CM documentation.
761    
762    Fixed some bugs in CM.
763    
764    Implemented "proxy" libraries (= syntactic sugar for CM).
765    
766    Added "-quiet" option to makeml and changed runtime system accordingly.
767    
768    Added cleanup handler for exportML to reset timers and compiler stats.
769    
770    ----------------------------------------------------------------------
771    Name: Lal George
772    Date: 2000/12/22 22:22:58 EST 2000
773    Tag: Release_110_32
774    Description:
775    
776            Infinite precision used throughout MLRISC.
777            see MLRISC/mltree/machine-int.sig
778    
779    ----------------------------------------------------------------------
780    Name: Matthias Blume
781    Date: 2000/12/22 23:16:00 JST
782    Tag: blume-20001222-warn
783    Description:
784    
785    Corrected wording and formatting of some CM warning message which I
786    broke in my previous patch.
787    
788    ----------------------------------------------------------------------
789    Name: Matthias Blume
790    Date: 2000/12/22 21:20:00 JST
791    Tag: blume-20001222-anchorenv
792    Description:
793    
794    Fixed CM's handling of anchor environments in connection with CMB.make.
795    
796    ----------------------------------------------------------------------
797    Name: Matthias Blume
798    Date: 2000/12/22 13:15:00 JST
799    Tag: blume-20001222-cleanup
800    Description:
801    
802    Removed src/cm/ffi which does not (and did not) belong here.
803    
804    ----------------------------------------------------------------------
805    Name: Matthias Blume
806    Date: 2000/12/21 23:55:00 JST
807    Tag: blume-20001221-exn
808    Description:
809    
810    Probably most important: CM no longer silently swallows all exceptions
811    in the compiler.
812    Plus: some other minor CM changes.  For example, CM now reports some
813    sizes for generated binfiles (code, data, envpickle, lambdapickle).
814    
815    ----------------------------------------------------------------------
816    Name: Matthias Blume
817    Date: 2000/12/15 00:01:05 JST
818    Tag: blume-20001215-dirtool
819    Description:
820    
821    - "dir" tool added.
822    - improvements and cleanup to Tools structure
823    - documentation updates
824    
825    ----------------------------------------------------------------------
826    Name: Allen Leung
827    Date: Thu Dec 14 03:45:24 EST 2000
828    Description:
829    Tag:  leunga-20001214-int-inf
830    Description:
831    
832       In IntInf, added these standard functions, which are missing from our
833    implementation:
834    
835        andb : int * int -> int
836        xorb : int * int -> int
837        orb  : int * int -> int
838        notb : int -> int
839         <<   : int * word -> int
840        ~>>  : int * word -> int
841    
842       Not tested, I hope they are correct.
843    
844    ----------------------------------------------------------------------
845    Name: Allen Leung
846    Date: Fri Dec  8 19:23:26 EST 2000
847    Description:
848    Tag:  leunga-20001208-nowhere
849    Description:
850    
851      Slight improvements to the 'nowhere' tool to handle OR-patterns,
852    to generate better error messages etc.  Plus a brief manual.
853    
854    ----------------------------------------------------------------------
855    Name: Lal George
856    Date: 2000/12/08 09:54:02 EST 2000
857    Tag: Release_110_31
858    Description:
859    
860    - Version 110.31
861    ----------------------------------------------------------------------
862    Name: Allen Leung
863    Date: Thu Dec  7 22:01:04 EST 2000
864    Tag:  leunga-20001207-cell-monster-hack
865    Description:
866    
867    Major MLRISC internal changes.  Affect all clients.
868    Summary:
869    
870    1.  Type CELLS.cell = int is now replaced by a datatype.
871        As a result, the old regmap is now gone.  Almost all interfaces
872        in MLRISC change as a consequence.
873    
874    2.  A new brand version of machine description tool (v3.0) that generates
875        modules expecting the new interface.  The old version is removed.
876    
877    3.  The RA interface has been further abstracted into two new functors.
878        RISC_RA and X86RA.  These functors have much simpler interfaces.
879        [See also directory MLRISC/demo.]
880    
881    4.  Some other new source->source code generation tools are available:
882    
883        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
884        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
885           I use this tool to generate the peephole optimizers---with the new
886           cell type changes, peephole rules are becoming difficult to write
887           without conditional pattern matching.
888    
889    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
890        cover the entire MLRISC source tree so many things broke.
891    
892    6.  CM files have been moved to the subdirectory MLRISC/cm.
893        They are moved because there are a lot of them and they clutter up the
894        root dir.
895    
896    7.  More detailed documentation to come...
897    
898        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
899        a makeml -rebuild first.  This is because of other other
900        changes that Matthias has made (see below).
901    
902    
903    ----------------------------------------------------------------------
904    Name: Matthias Blume
905    Date: 2000/11/30 23:12:00 JST
906    Tag: blume-20001130-filereorg
907    Description:
908    
909    Some manual updates and some file reorganizations in CM.
910    
911    ----------------------------------------------------------------------
912    Name: Matthias Blume
913    Date: 2000/11/24 17:45:00 JST
914    Tag: blume-20001124-link
915    Description:
916    
917    Drastically improved link traversal code for the case that the dynamic
918    value was already loaded at bootstrap time.  As a result, CM and CMB
919    now both load blazingly fast -- even on a very slow machine.  Also,
920    memory consumption has been further reduced by this.
921    
922    Warning: The format of the PIDMAP file has changed.  THerefore, to
923    bootstrap you have to do this:
924    
925    1. Run CMB.make
926    2. Make a symbolic link for the boot directory:
927         ln -s sml.boot.ARCH-OS xxx
928    3. "Rebuild" the boot directory:
929         ./makeml -boot xxx -rebuild sml ; rm xxx
930    4. Boot normally:
931          ./makeml
932    
933    ----------------------------------------------------------------------
934    Name: Matthias Blume
935    Date: 2000/11/21 21:20:00 JST
936    Tag: blume-20001121-tools
937    Description:
938    
939    Continued hacking on autoloading problem -- with success this time.
940    Also changed tool-plugin mechanism.  See new CM manual.
941    
942    ----------------------------------------------------------------------
943    Name: Matthias Blume
944    Date: 2000/11/19 14:30:00 JST
945    Tag:  blume-20001119-autoload
946    Description:
947    
948    Some hacking to make autoloading faster.  Success for CMB, no success
949    so far for CM.  There is a reduced structure CM' that autoloads faster.
950    (This is a temporary, non-documented hack to be eliminated again when
951    the general problem is solved.)
952    
953    ----------------------------------------------------------------------
954    Name: Matthias Blume
955    Date: 2000/11/17 14:10:00 JST
956    Tag: blume-20001117-pickle-lib
957    Description:
958    
959    1. Eliminated comp-lib.cm
960    2. Made pickle-lib.cm
961    3. Eliminated all uses of intset.sml (from comp-lib.cm)
962    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
963       equivalent constructs from smlnj-lib.cm (INtHashTable).
964    5. Point 4. also goes for those uses of intmap.* in MLRISC.
965       Duplicated intmap modules thrown out.
966    6. Hunted down all duplicated SCC code and replaced it with
967       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
968    7. Rewrote Feedback module.
969    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
970       should be thrown out and equivalent modules from smlnj-lib.cm
971       should be used (IntRedBlackSet, IntListSet, ...).
972    
973    Confirmed that compiler compiles to fixpoint.
974    
975    ----------------------------------------------------------------------
976    Name: Allen Leung
977    Date: 2000/11/10 18:00:00
978    Tag: leunga-20001110-new-x86-fp
979    
980    A new x86 floating point code generator has been added.
981    By default this is turned off.  To turn this on, do:
982    
983        CM.autoload "$smlnj/compiler.cm";
984        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
985    
986    Changes:
987    
988    1.  Changed FTAN to FPTAN so that the assembly output is correct.
989    2.  Changed the extension callback for FTANGENT to generate:
990    
991              fptan
992              fstp  %st(0)
993        instead of
994              fptan
995              fstpl ftempmem
996    
997    3.  Numerous assembly fixes for x86.
998    
999    5.  Cleaned up the machine code output module x86/x86MC.sml and added
1000        support for a whole bunch of instructions and addressing modes:
1001    
1002          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
1003          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
1004          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
1005          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
1006          fxch %st(n)
1007          fld %st(n)
1008          fst %st(n)
1009          fst mem
1010          fstp %st(n)
1011          fucom %st(n)
1012          fucomp %st(n)
1013    
1014        All these are now generated when the fast fp mode is turned on.
1015    
1016    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
1017    
1018    ----------------------------------------------------------------------
1019    Name: Matthias Blume
1020    Date: 2000/11/09 11:20:00 JST
1021    Tag: blume-20001109-scc
1022    Description:
1023    
1024    Eliminated some code duplication:
1025    
1026    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
1027       (Otherwise the functor is useless.)
1028    2. Used GraphSCCFn where SCCUtilFun was used previously.
1029    3. Got rid of SCCUtilFun (in comp-lib.cm).
1030    
1031    ----------------------------------------------------------------------
1032  Name: Lal George  Name: Lal George
1033  Date: 2000/11/06 09:02:21 EST 2000  Date: 2000/11/06 09:02:21 EST 2000
1034  Tag: Release_110_30  Tag: Release_110_30

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

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