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 876, Wed Jul 11 15:42:20 2001 UTC revision 898, Mon Aug 13 17:44:08 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/08/13
18    Tag: blume-20010813-closures
19    Description:
20    
21    This fix was sent to us by Zhong Shao.  It is supposed to improve the
22    performance of certain loops by avoiding needless closure allocation.
23    
24    ----------------------------------------------------------------------
25    Name: Lal George
26    Date: 2001/07/31 10:03:23 EDT 2001
27    Tag: george-20010731-x86-fmalloc
28    Description: Fixed bug in x86 calls
29    
30        There was a bug where call instructions would mysteriously
31        vanish. The call instruction had to be one that returned
32        a floating point value.
33    
34    ----------------------------------------------------------------------
35    Name: Lal George
36    Date: 2001/07/19 16:36:29 EDT 2001
37    Tag: george-20010719-simple-cells
38    Description:
39    
40    I have dramatically simplified the interface for CELLS in MLRISC.
41    
42    In summary, the cells interface is broken up into three parts:
43    
44      1. CellsBasis : CELLS_BASIS
45    
46            CellsBasis is a top level structure and common for all
47            architectures.  it contains the definitions of basic datatypes
48            and utility  functions over these types.
49    
50      2. functor Cells() : CELLS
51    
52            Cells generates an interface for CELLS that incorporates the
53            specific resources on the target architecture, such as the
54            presence of special register classes, their number and size,
55            and various useful substructures.
56    
57      3. <ARCH>CELLS
58    
59            e.g. SparcCells: SPARCCELLS
60    
61            <ARCH>CELLS usually contains additional bindings for special
62            registers  on the architecture, such as:
63    
64                    val r0 : cell           (* register zero *)
65                    val y : cell            (* Y register *)
66                    val psr : cell          (* processor status register *)
67                    ...
68    
69            The structure returned by applying the Cells functor is opened
70            in this interface.
71    
72    The main implication of all this is that the datatypes for cells is
73    split between CellsBasis and CELLS -- a fairly simple change for user
74    code.
75    
76    In the old scheme the CELLS interface had a definitional binding of
77    the form:
78    
79            signature CELLS = sig
80    
81               structure CellsBasis = CellsBasis
82    
83               ...
84    
85            end
86    
87    With all the sharing constraints that goes on in MLRISC, this old
88    design  quickly leads to errors such as:
89    
90            "structure definition spec inside of sharing ... "
91    
92    
93    and appears to require an unacceptable amount of sharing and where
94    constraint hackery.
95    
96    I think this error message (the interaction of definitional specs and
97    sharing) requires more explanation on our web page.
98    
99    ----------------------------------------------------------------------
100    Name: Matthias Blume
101    Date: 2001/07/19 15:00:00 EDT
102    Tag: blume-20010719-libreorg
103    Description:
104    
105    This update puts together a fairly extensive but straightforward change
106    to the way the libraries that implement the interactive system are
107    organized:
108    
109       The biggest change is the elimination of structure Compiler.  As a
110       replacement for this structure, there is now a CM library
111       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
112       that exports all the substructures of the original structure Compiler
113       directly.  So instead of saying Compiler.Foo.bar one now simply
114       says Foo.bar.  (The CM libraries actually export a collection of
115       structures that is richer than the collection of substructures of
116       structure Compiler.)
117    
118       To make the transition smooth, there is a separate library called
119       $smlnj/compiler/compiler.cm which puts together and exports the
120       original structure Compiler (or at least something very close to it).
121    
122       There are five members of the original structure Compiler
123       that are not exported directly but which instead became members
124       of a new structure Backend (described by signature BACKEND).  These are:
125       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
126       Interact (: INTERACT), structure Machine (: MACHINE), and val
127       architecture (: string).
128    
129       Structure Compiler.Version has become structure CompilerVersion.
130    
131       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
132       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
133       or x86, respectively.
134       Each of these exports the same frontend structures that
135       $smlnj/compiler.cm exports.  But they do not have a structure Backend
136       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
137       Hppa, PPC, Sparc, or X86, respectively.
138    
139       Library $smlnj/compiler/all.cm exports the union of the exports of
140       $smlnj/compiler/<arch>.cm
141    
142       There are no structures <Arch>Compiler anymore, use
143       $smlnj/compiler/<arch>.cm instead.
144    
145       Library host-compiler-0.cm is gone.  Instead, the internal library
146       that instantiates CM is now called cm0.cm.  Selection of the host
147       compiler (backend) is no longer done here but. (Responsibility for it
148       now lies with $smlnj/compiler/current.cm.  This seems to be more
149       logical.)
150    
151       Many individual files have been moved or renamed.  Some files have
152       been split into multiple files, and some "dead" files have been deleted.
153    
154    Aside from these changes to library organization, there are also changes
155    to the way the code itself is organized:
156    
157       Structure Binfile has been re-implemented in such a way that it no
158       longer needs any knowledge of the compiler.  It exclusively deals
159       with the details of binfile layout.  It no longer invokes the
160       compiler (for the purpose of creating new prospective binfile
161       content), and it no longer has any knowledge of how to interpret
162       pickles.
163    
164       Structure Compile (: COMPILE) has been stripped down to the bare
165       essentials of compilation.  It no longer deals with linking/execution.
166       The interface has been cleaned up considerably.
167    
168       Utility routines for dealing with linking and execution have been
169       moved into their own substructures.
170    
171       (The ultimate goal of these changes is to provide a light-weight
172       binfile loader/linker (at least for, e.g., stable libraries) that
173       does not require CM or the compiler to be present.)
174    
175    CM documentation has been updated to reflect the changes to library
176    organization.
177    
178    ----------------------------------------------------------------------
179    Name: Matthias Blume
180  Date: 2001/07/10 17:30:00 EDT  Date: 2001/07/10 17:30:00 EDT
181  Tag: Release_110_34  Tag: Release_110_34
182  Description:  Description:

Legend:
Removed from v.876  
changed lines
  Added in v.898

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