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 1032, Tue Jan 22 16:59:16 2002 UTC revision 1115, Sun Mar 3 18:16:31 2002 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Allen Leung
17    Date: 2002/03/03 13:20:00 EST
18    Tag: leunga-20020303-mlrisc-tools
19    
20      Added #[ ... ] expressions to mlrisc tools
21    
22    ----------------------------------------------------------------------
23    Name: Matthias Blume
24    Date: 2002/02/27 12:29:00 EST
25    Tag: blume-20020227-cdebug
26    Description:
27    
28    - made types in structure C and C_Debug to be equal
29    - got rid of code duplication (c-int.sml vs. c-int-debug.sml)
30    - there no longer is a C_Int_Debug (C_Debug is directly derived from C)
31    
32    ----------------------------------------------------------------------
33    Name: Matthias Blume
34    Date: 2002/02/26 12:00:00 EST
35    Tag: blume-20020226-ffi
36    Description:
37    
38    1. Fixed a minor bug in CM's "noweb" tool:
39       If numbering is turned off, then truly don't number (i.e., do not
40       supply the -L option to noweb).  The previous behavior was to supply
41       -L'' -- which caused noweb to use the "default" line numbering scheme.
42       Thanks to Chris Richards for pointing this out (and supplying the fix).
43    
44    2. Once again, I reworked some aspects of the FFI:
45    
46       A. The incomplete/complete type business:
47    
48       - Signatures POINTER_TO_INCOMPLETE_TYPE and accompanying functors are
49         gone!
50       - ML types representing an incomplete type are now *equal* to
51         ML types representing their corresponding complete types (just like
52         in C).  This is still safe because ml-nlffigen will not generate
53         RTTI for incomplete types, nor will it generate functions that
54         require access to such RTTI.   But when ML code generated from both
55         incomplete and complete versions of the C type meet, the ML types
56         are trivially interoperable.
57    
58         NOTE:  These changes restore the full generality of the translation
59         (which was previously lost when I eliminated functorization)!
60    
61       B. Enum types:
62    
63       - Structure C now has a type constructor "enum" that is similar to
64         how the "su" constructor works.  However, "enum" is not a phantom
65         type because each "T enum" has values (and is isomorphic to
66         MLRep.Signed.int).
67       - There are generic access operations for enum objects (using
68         MLRep.Signed.int).
69       - ml-nlffigen will generate a structure E_foo for each "enum foo".
70         * The structure contains the definition of type "mlrep" (the ML-side
71         representation type of the enum).  Normally, mlrep is the same
72         as "MLRep.Signed.int", but if ml-nlffigen was invoked with "-ec",
73         then mlrep will be defined as a datatype -- thus facilitating
74         pattern matching on mlrep values.
75         ("-ec" will be suppressed if there are duplicate values in an
76          enumeration.)
77         * Constructors ("-ec") or values (no "-ec") e_xxx of type mlrep
78         will be generated for each C enum constant xxx.
79         * Conversion functions m2i and i2m convert between mlrep and
80         MLRep.Signed.int.  (Without "-ec", these functions are identities.)
81         * Coversion functions c and ml convert between mlrep and "tag enum".
82         * Access functions (get/set) fetch and store mlrep values.
83       - By default (unless ml-nlffigen was invoked with "-nocollect"), unnamed
84         enumerations are merged into one single enumeration represented by
85         structure E_'.
86    
87    ----------------------------------------------------------------------
88    Name: Allen Leung
89    Date: 2002/02/25 04:45:00 EST
90    Tag: leunga-20020225-cps-spill
91    
92    This is a new implementation of the CPS spill phase.
93    The new phase is in the new file compiler/CodeGen/cpscompile/spill-new.sml
94    In case of problems, replace it with the old file spill.sml
95    
96    The current compiler runs into some serious performance problems when
97    constructing a large record.  This can happen when we try to compile a
98    structure with many items.  Even a very simple structure like the following
99    makes the compiler slow down.
100    
101        structure Foo = struct
102           val x_1 = 0w1 : Word32.int
103           val x_2 = 0w2 : Word32.int
104           val x_3 = 0w3 : Word32.int
105           ...
106           val x_N = 0wN : Word32.int
107        end
108    
109    The following table shows the compile time, from N=1000 to N=4000,
110    with the old compiler:
111    
112    N
113    1000   CPS 100 spill                           0.04u  0.00s  0.00g
114           MLRISC ra                               0.06u  0.00s  0.05g
115              (spills = 0 reloads = 0)
116           TOTAL                                   0.63u  0.07s  0.21g
117    
118    1100   CPS 100 spill                           8.25u  0.32s  0.64g
119           MLRISC ra                               5.68u  0.59s  3.93g
120              (spills = 0 reloads = 0)
121           TOTAL                                   14.71u  0.99s  4.81g
122    
123    1500   CPS 100 spill                           58.55u  2.34s  1.74g
124           MLRISC ra                               5.54u  0.65s  3.91g
125              (spills = 543 reloads = 1082)
126           TOTAL                                   65.40u  3.13s  6.00g
127    
128    2000   CPS 100 spill                           126.69u  4.84s  3.08g
129           MLRISC ra                               0.80u  0.10s  0.55g
130              (spills = 42 reloads = 84)
131           TOTAL                                   129.42u  5.10s  4.13g
132    
133    3000   CPS 100 spill                           675.59u  19.03s  11.64g
134           MLRISC ra                               2.69u  0.27s  1.38g
135              (spills = 62 reloads = 124)
136           TOTAL                                   682.48u  19.61s  13.99g
137    
138    4000   CPS 100 spill                           2362.82u  56.28s  43.60g
139           MLRISC ra                               4.96u  0.27s  2.72g
140              (spills = 85 reloads = 170)
141           TOTAL                                   2375.26u  57.21s  48.00g
142    
143    As you can see the old cps spill module suffers from some serious
144    performance problem.  But since I cannot decipher the old code fully,
145    instead of patching the problems up, I'm reimplementing it
146    with a different algorithm.  The new code is more modular,
147    smaller when compiled, and substantially faster
148    (O(n log n) time and O(n) space).  Timing of the new spill module:
149    
150    4000  CPS 100 spill                           0.02u  0.00s  0.00g
151          MLRISC ra                               0.25u  0.02s  0.15g
152             (spills=1 reloads=3)
153          TOTAL                                   7.74u  0.34s  1.62g
154    
155    Implementation details:
156    
157    As far as I can tell, the purpose of the CPS spill module is to make sure the
158    number of live variables at any program point (the bandwidth)
159    does not exceed a certain limit, which is determined by the
160    size of the spill area.
161    
162    When the bandwidth is too large, we decrease the register pressure by
163    packing live variables into spill records.  How we achieve this is
164    completely different than what we did in the old code.
165    
166    First, there is something about the MLRiscGen code generator
167    that we should be aware of:
168    
169    o MLRiscGen performs code motion!
170    
171       In particular, it will move floating point computations and
172       address computations involving only the heap pointer to
173       their use sites (if there is only a single use).
174       What this means is that if we have a CPS record construction
175       statement
176    
177           RECORD(k,vl,w,e)
178    
179       we should never count the new record address w as live if w
180       has only one use (which is often the case).
181    
182       We should do something similar to floating point, but the transformation
183       there is much more complex, so I won't deal with that.
184    
185    Secondly, there are now two new cps primops at our disposal:
186    
187     1. rawrecord of record_kind option
188        This pure operator allocates some uninitialized storage from the heap.
189        There are two forms:
190    
191         rawrecord NONE [INT n]  allocates a tagless record of length n
192         rawrecord (SOME rk) [INT n] allocates a tagged record of length n
193                                     and initializes the tag.
194    
195     2. rawupdate of cty
196          rawupdate cty (v,i,x)
197          Assigns to x to the ith component of record v.
198          The storelist is not updated.
199    
200    We use these new primops for both spilling and increment record construction.
201    
202     1. Spilling.
203    
204        This is implemented with a linear scan algorithm (but generalized
205        to trees).  The algorithm will create a single spill record at the
206        beginning of the cps function and use rawupdate to spill to it,
207        and SELECT or SELp to reload from it.  So both spills and reloads
208        are fine-grain operations.  In contrast, in the old algorithm
209        "spills" have to be bundled together in records.
210    
211        Ideally, we should sink the spill record construction to where
212        it is needed.  We can even split the spill record into multiple ones
213        at the places where they are needed.  But CPS is not a good
214        representation for global code motion, so I'll keep it simple and
215        am not attempting this.
216    
217     2. Incremental record construction (aka record splitting).
218    
219        Long records with many component values which are simulatenously live
220        (recall that single use record addresses are not considered to
221         be live) are constructed with rawrecord and rawupdate.
222        We allocate space on the heap with rawrecord first, then gradually
223        fill it in with rawupdate.  This is the technique suggested to me
224        by Matthias.
225    
226        Some restrictions on when this is applicable:
227        1. It is not a VECTOR record.  The code generator currently does not handle
228           this case. VECTOR record uses double indirection like arrays.
229        2. All the record component values are defined in the same "basic block"
230           as the record constructor.  This is to prevent speculative
231           record construction.
232    
233    ----------------------------------------------------------------------
234    Name: Allen Leung
235    Date: 2002/02/22 01:02:00 EST
236    Tag: leunga-20020222-mlrisc-tools
237    
238    Minor bug fixes in the parser and rewriter
239    
240    ----------------------------------------------------------------------
241    Name: Allen Leung
242    Date: 2002/02/21 20:20:00 EST
243    Tag: leunga-20020221-peephole
244    
245    Regenerated the peephole files.  Some contained typos in the specification
246    and some didn't compile because of pretty printing bugs in the old version
247    of 'nowhere'.
248    
249    ----------------------------------------------------------------------
250    Name: Allen Leung
251    Date: 2002/02/19 20:20:00 EST
252    Tag: leunga-20020219-mlrisc-tools
253    Description:
254    
255       Minor bug fixes to the mlrisc-tools library:
256    
257       1.  Fixed up parsing colon suffixed keywords
258       2.  Added the ability to shut the error messages up
259       3.  Reimplemented the pretty printer and fixed up/improved
260           the pretty printing of handle and -> types.
261       4.  Fixed up generation of literal symbols in the nowhere tool.
262       5.  Added some SML keywords to to sml.sty
263    
264    ----------------------------------------------------------------------
265    Name: Matthias Blume
266    Date: 2002/02/19 16:20:00 EST
267    Tag: blume-20020219-cmffi
268    Description:
269    
270    A wild mix of changes, some minor, some major:
271    
272    * All C FFI-related libraries are now anchored under $c:
273        $/c.cm      --> $c/c.cm
274        $/c-int.cm  --> $c/internals/c-int.cm
275        $/memory.cm --> $c/memory/memory.cm
276    
277    * "make" tool (in CM) now treats its argument pathname slightly
278      differently:
279        1. If the native expansion is an absolute name, then before invoking
280           the "make" command on it, CM will apply OS.Path.mkRelative
281           (with relativeTo = OS.FileSys.getDir()) to it.
282        2. The argument will be passed through to subsequent phases of CM
283           processing without "going native".  In particular, if the argument
284           was an anchored path, then "make" will not lose track of that anchor.
285    
286    * Compiler backends now "know" their respective C calling conventions
287      instead of having to be told about it by ml-nlffigen.  This relieves
288      ml-nlffigen from one of its burdens.
289    
290    * The X86Backend has been split into X86CCallBackend and X86StdCallBackend.
291    
292    * Export C_DEBUG and C_Debug from $c/c.cm.
293    
294    * C type encoding in ml-nlffi-lib has been improved to model the conceptual
295      subtyping relationship between incomplete pointers and their complete
296      counterparts.  For this, ('t, 'c) ptr has been changed to 'o ptr --
297      with the convention of instantiating 'o with ('t, 'c) obj whenever
298      the pointer target type is complete.  In the incomplete case, 'o
299      will be instantiated with some "'c iobj" -- a type obtained by
300      using one of the functors PointerToIncompleteType or PointerToCompleteType.
301    
302      Operations that work on both incomplete and complete pointer types are
303      typed as taking an 'o ptr while operations that require the target to
304      be known are typed as taking some ('t, 'c) obj ptr.
305    
306      voidptr is now a bit "more concrete", namely "type voidptr = void ptr'"
307      where void is an eqtype without any values.  This makes it possible
308      to work on voidptr values using functions meant to operate on light
309      incomplete pointers.
310    
311    * As a result of the above, signature POINTER_TO_INCOMPLETE_TYPE has
312      been vastly simplified.
313    
314    ----------------------------------------------------------------------
315    Name: Matthias Blume
316    Date: 2002/02/19 10:48:00 EST
317    Tag: blume-20020219-pqfix
318    Description:
319    
320    Applied Chris Okasaki's bug fix for priority queues.
321    
322    ----------------------------------------------------------------------
323    Name: Matthias Blume
324    Date: 2002/02/15 17:05:00
325    Tag: Release_110_39
326    Description:
327    
328    Last-minute retagging is becoming a tradition... :-(
329    
330    This is the working release 110.39.
331    
332    ----------------------------------------------------------------------
333    Name: Matthias Blume
334    Date: 2002/02/15 16:00:00 EST
335    Tag: Release_110_39-orig
336    Description:
337    
338    Working release 110.39.  New bootfiles.
339    
340    (Update: There was a small bug in the installer so it wouldn't work
341    with all shells.  So I retagged. -Matthias)
342    
343    ----------------------------------------------------------------------
344    Name: Matthias Blume
345    Date: 2002/02/15 14:17:00 EST
346    Tag: blume-20020215-showbindings
347    Description:
348    
349    Added EnvRef.listBoundSymbols and CM.State.showBindings.  Especially
350    the latter can be useful for exploring what bindings are available at
351    the interactive prompt.  (The first function returns only the list
352    of symbols that are really bound, the second prints those but also the
353    ones that CM's autoloading mechanism knows about.)
354    
355    ----------------------------------------------------------------------
356    Name: Matthias Blume
357    Date: 2002/02/15 12:08:00 EST
358    Tag: blume-20020215-iptrs
359    Description:
360    
361    Two improvements to ml-nlffigen:
362    
363      1. Write files only if they do not exist or if their current contents
364         do not coincide with what's being written.  (That is, avoid messing
365         with the time stamps unless absolutely necessary.)
366    
367      2. Implement a "repository" mechanism for generated files related
368         to "incomplete pointer types".   See the README file for details.
369    
370    ----------------------------------------------------------------------
371    Name: Matthias Blume
372    Date: 2002/02/14 11:50:00 EST
373    Tag: blume-20020214-quote
374    Description:
375    
376    Added a type 't t_' to tag.sml (in ml-nlffi-lib.cm).  This is required
377    because of the new and improved tag generation scheme.  (Thanks to Allen
378    Leung for pointing it out.)
379    
380    ----------------------------------------------------------------------
381    Name: Lal George
382    Date: 2002/02/14 09:55:27 EST 2002
383    Tag: george-20020214-isabelle-bug
384    Description:
385    
386    Fixed the MLRISC bug sent by Markus Wenzel regarding the compilation
387    of Isabelle on the x86.
388    
389    From Allen:
390    -----------
391     I've found the problem:
392    
393         in ra-core.sml, I use the counter "blocked" to keep track of the
394         true number of elements in the freeze queue.  When the counter goes
395         to zero, I skip examining the queue.  But I've messed up the
396         bookkeeping in combine():
397    
398             else ();
399             case !ucol of
400               PSEUDO => (if !cntv > 0 then
401                     (if !cntu > 0 then blocked := !blocked - 1 else ();
402                                        ^^^^^^^^^^^^^^^^^^^^^^^
403                      moveu := mergeMoveList(!movev, !moveu)
404                     )
405                  else ();
406    
407         combine() is called to coalesce two nodes u and v.
408         I think I was thinking that if the move counts of u and v are both
409         greater than zero then after they are coalesced then one node is
410         removed from the freeze queue.  Apparently I was thinking that
411         both u and v are of low degree, but that's clearly not necessarily true.
412    
413    
414    02/12/2002:
415        Here's the patch.  HOL now compiles.
416    
417        I don't know how this impact on performance (compile
418        time or runtime).  This bug caused the RA (especially on the x86)
419        to go thru the potential spill phase when there are still nodes on the
420        freeze queue.
421    
422    
423    
424    
425    ----------------------------------------------------------------------
426    Name: Matthias Blume
427    Date: 2002/02/13 22:40:00 EST
428    Tag: blume-20020213-fptr-rtti
429    Description:
430    
431    Fixed a bug in ml-nlffigen that was introduced with one of the previous
432    updates.
433    
434    ----------------------------------------------------------------------
435    Name: Matthias Blume
436    Date: 2002/02/13 16:41:00 EST
437    Tag: blume-20020213-cmlpq
438    Description:
439    
440    Added new priority queue export symbols (which have just been added to
441    smlnj-lib.cm) to CML's version of smlnj-lib.cm.  (Otherwise CML would
442    not compile and the installer would choke.)
443    
444    ----------------------------------------------------------------------
445    Name: Matthias Blume
446    Date: 2002/02/13 16:15:00 EST
447    Tag: blume-20020213-various
448    Description:
449    
450    1. More tweaks to ml-nlffigen:
451    
452       - better internal datastructures (resulting in slight speedup)
453       - "-match" option requires exact match
454       - "localized" gensym counters (untagged structs/unions nested within
455         other structs/unions or within typedefs get a fresh counter; their
456         tag will be prefixed by a concatenation of their parents' tags)
457       - bug fixes (related to calculation of transitive closure of types
458         to be included in the output)
459    
460    2. Minor Basis updates:
461    
462       - added implementations for List.collate and Option.app
463    
464    ----------------------------------------------------------------------
465    Name: Matthias Blume
466    Date: 2002/02/11 15:55:00 EST
467    Tag: blume-20020211-gensym
468    Description:
469    
470    Added a "-gensym" option to command line of ml-nlffigen.  This can be
471    used to specify a "stem" -- a string that is inserted in all "gensym'd"
472    names (ML structure names that correspond to unnamed C structs, unions,
473    and enums), so that separate runs of ml-nlffigen do not clash.
474    
475    ----------------------------------------------------------------------
476    Name: Matthias Blume
477    Date: 2002/02/11 12:05:00 EST
478    Tag: blume-20020211-gensml
479    Description:
480    
481    A quick fix for a problem with GenSML (in the pgraph-util library):
482    Make generation of toplevel "local" optional.  (Strictly speaking,
483    signature definitions within "local" are not legal SML.)
484    
485    Other than that: updates to INSTALL and cm/TODO.
486    
487    ----------------------------------------------------------------------
488    Name: Matthias Blume
489    Date: 2002/02/08 15:00:00 EST
490    Tag: blume-20020208-uniquepid
491    Description:
492    
493    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
494    
495    1. The installer (config/install.sh) has gotten smarter:
496    
497         - Configuration options are a bit easier to specify now
498           (in config/targets).
499         - Bug in recognizing .tar.bz2 files fixed.
500         - Installer automatically resolves dependencies between
501           configuration options (e.g., if you ask for eXene, you will
502           also get cml -- regardless whether you asked for it or not).
503         - Installer can run in "quieter mode" by setting the environment
504           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
505           "completely silent", though.
506         - Build HashCons library as part of smlnj-lib.
507    
508    2. A new scheme for assigning persistent identifiers to compilation
509       units (and, by extension, to types etc.) has been put into place.
510       This fixes a long-standing bug where types and even dynamic values
511       can get internally confused, thereby compromising type safety
512       (abstraction) and dynamic correctness.  See
513    
514         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
515    
516       for an example of how things could go wrong until now.
517    
518       The downside of the new scheme is that pids are not quite as
519       persistent as they used to be: CM will generate a fresh pid
520       for every compilation unit that it thinks it sees for the first
521       time.  That means that if you compile starting from a clean, fresh
522       source tree at two different times, you end up with different
523       binaries.
524    
525       Cutoff recompilation, however, has not been compromised because
526       CM keeps pid information in special caches between runs.
527    
528    ----------------------------------------------------------------------
529    Name: Lal George
530    Date: 2002/02/07 15:34:13 EST 2002
531    Tag: <none>
532    Description:
533    
534    Compilers that generate assembly code may produce  global labels
535    whose value is resolved at link time. The various peephole optimization
536    modules did not take this in account.
537    
538    TODO. The Labels.addrOf function should really return an option
539    type so that clients are forced to deal with this issue, rather
540    than an exception being raised.
541    
542    ----------------------------------------------------------------------
543    Name: Lal George
544    Date: 2002/02/06 13:55:02 EST
545    Tag: george-20020206-ra-breakup
546    Description:
547    
548    1. A bug fix from Allen.
549    
550        A typo causes extra fstp %st(0)'s to be generated at compensation
551        edges, which might cause stack underflow traps at runtime.  This
552        occurs in fft where there are extraneous fstps right before the 'into'
553        trap instruction (in this case they are harmless since none of the
554        integers overflow.)
555    
556    2. Pulled out various utility modules that were embedded in the modules
557       of the register allocator. I need these modules for other purposes, but
558       they are not complete enough to put into a library (just yet).
559    ----------------------------------------------------------------------
560    Name: Matthias Blume
561    Date: 2002/01/31 16:05:00 EST
562    Tag: blume-20020131-sparc-ccalls
563    Description:
564    
565    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
566       of extra stack space by mistake.  Fixed.
567    
568    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
569    
570    ----------------------------------------------------------------------
571    Name: Allen Leung
572    Date: 2002/01/30
573    Tag: leunga-20020130-nowhere-bug-fix
574    Description:
575    
576       MLRISC bug fixes:
577       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
578       2. MachineInt.fromString was negating its value.
579    
580    ----------------------------------------------------------------------
581    Name: Matthias Blume
582    Date: 2002/01/29
583    Tag: blume-20020129-INSTALL
584    Description:
585    
586    - Added somewhat detailed installation instructions (file INSTALL).
587    - Fixed curl-detection bug in config/install.sh.
588    - It is now possible to select the URL getter using the URLGETTER
589      environment variable:
590    
591          not set / "unknown"      --> automatic detection (script tries wget,
592                                       curl, and lynx)
593          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
594                                       how to properly invoke them)
595          other                    --> use $URLGETTER directly, it must take
596                                       precisely two command-line arguments
597                                       (source URL and destination file name)
598    
599    ----------------------------------------------------------------------
600    Name: Matthias Blume
601    Date: 2002/01/28
602    Tag: blume-20020128-sparc-ccalls
603    Description:
604    
605    - Fixed problem with calculation of "used" registers in sparc-c-calls.
606    - Make use of the allocParam argument in sparc-c-calls.
607    
608    ----------------------------------------------------------------------
609    Name: Matthias Blume
610    Date: 2002/01/28
611    Tag: blume-20020128-allocParam
612    Description:
613    
614    John Reppy:  Changes c-calls API to accept client-callback for
615    allocating extra stack space.
616    me: Corresponding changes to mlriscGen (using a dummy argument that
617        does not change the current behavior).
618    
619    ----------------------------------------------------------------------
620    Name: Matthias Blume
621    Date: 2002/01/28 12:00:00
622    Tag: Release_110_38
623    Description:
624    
625    This time for real!!!
626    
627    ----------------------------------------------------------------------
628    Name: Matthias Blume
629    Date: 2002/01/28 10:56:00 EST
630    Tag: blume-20020128-retraction
631    Description:
632    
633    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
634       with blume-Release_110_38-retracted.)
635    
636    1. Fixed a problem with incorrect rounding modes in real64.sml.
637       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
638    
639    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
640       and enums fixed.  The naming of corresponding ML identifiers should
641       now be consistent again.
642    
643    ----------------------------------------------------------------------
644    Name: Allen Leung
645    Date: 2002/01/27
646    Tag: leunga-20020127-nowhere
647    Description:
648    
649       Added a target called nowhere in the configuration scripts.
650       Enabling this will build the MLRISC 'nowhere' tool (for translating
651       programs with where-clauses into legal SML code) during installation.
652    
653    ----------------------------------------------------------------------
654    Name: Matthias Blume
655    Date: 2002/01/25 21:27:00 EST
656    Tag: blume-Release_110_38-retracted
657    Description:
658    
659    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
660    
661    README will be added later.
662    
663    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
664    (Release_110_38) removed.  Reason: Last-minute bug fixes.
665    
666    ----------------------------------------------------------------------
667    Name: Matthias Blume
668    Date: 2002/01/25
669    Tag: blume-20020125-ffi
670    Description:
671    
672    A large number of tweaks and improvements to ml-nlffi-lib and
673    ml-nlffigen:
674    
675       - ML represenation types have been streamlined
676       - getter and setter functions work with concrete values, not abstract
677         ones where possible
678       - ml-nlffigen command line more flexible (see README file there)
679       - some bugs have been fixed (hopefully)
680    
681    ----------------------------------------------------------------------
682    Name: Lal George
683    Date: 2002/01/24
684    Tag: george-20020124-risc-ra-interface
685    Description:
686    
687       There is a dramatic simplification in the interface to the
688       register allocator for RISC architectures as a result of making
689       parallel copy instructions explicit.
690    
691    ----------------------------------------------------------------------
692  Name: Matthias Blume  Name: Matthias Blume
693  Date: 2002/01/22  Date: 2002/01/22
694  Tag: blume-20020122-x86-ccalls  Tag: blume-20020122-x86-ccalls
# Line 501  Line 1177 
1177    
1178  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1179  Name: Matthias Blume  Name: Matthias Blume
 >>>>>>> 1.169  
1180  Date: 2001/09/18 15:35:00 EDT  Date: 2001/09/18 15:35:00 EDT
1181  Tag: blume-20010918-readme11036  Tag: blume-20010918-readme11036
1182  Description:  Description:

Legend:
Removed from v.1032  
changed lines
  Added in v.1115

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