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 1094, Mon Feb 25 09:58:56 2002 UTC revision 1124, Thu Mar 7 19:49:22 2002 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Lal George
17    Date: 2002/03/07 14:44:24 EST 2002
18    Tag: george-20020307-weighted-block-placement
19    
20    Tested the weighted block placement optimization on all architectures
21    (except the hppa) using AMPL to generate the block and edge frequencies.
22    Changes were required in the machine properties to correctly
23    categorize trap instructions. There is an MLRISC flag
24    "weighted-block-placement" that can be used to enable weighted block
25    placement, but this will be ineffective without block/edge
26    frequencies (coming soon).
27    
28    
29    ----------------------------------------------------------------------
30    Name: Lal George
31    Date: 2002/03/05 17:24:48 EST
32    Tag: george-20020305-linkage-cluster
33    
34    In order to support the block placement optimization, a new cluster
35    is generated as the very first cluster (called the linkage cluster).
36    It contains a single jump to the 'real' entry point for the compilation
37    unit. Block placement has no effect on the linkage cluster itself, but
38    all the other clusters  have full freedom in the manner in which they
39    reorder blocks or functions.
40    
41    On the x86 the typical linkage code that is generated is:
42       ----------------------
43            .align 2
44       L0:
45            addl    $L1-L0, 72(%esp)
46            jmp     L1
47    
48    
49            .align  2
50       L1:
51       ----------------------
52    
53    72(%esp) is the memory location for the stdlink register. This
54    must contain the address of the CPS function being called. In the
55    above example, it contains the address of  L0; before
56    calling L1 (the real entry point for the compilation unit), it
57    must contain the address for L1, and hence
58    
59            addl $L1-L0, 72(%esp)
60    
61    I have tested this on all architectures except the hppa.The increase
62    in code size is of course negligible
63    
64    ----------------------------------------------------------------------
65    Name: Allen Leung
66    Date: 2002/03/03 13:20:00 EST
67    Tag: leunga-20020303-mlrisc-tools
68    
69      Added #[ ... ] expressions to mlrisc tools
70    
71    ----------------------------------------------------------------------
72    Name: Matthias Blume
73    Date: 2002/02/27 12:29:00 EST
74    Tag: blume-20020227-cdebug
75    Description:
76    
77    - made types in structure C and C_Debug to be equal
78    - got rid of code duplication (c-int.sml vs. c-int-debug.sml)
79    - there no longer is a C_Int_Debug (C_Debug is directly derived from C)
80    
81    ----------------------------------------------------------------------
82    Name: Matthias Blume
83    Date: 2002/02/26 12:00:00 EST
84    Tag: blume-20020226-ffi
85    Description:
86    
87    1. Fixed a minor bug in CM's "noweb" tool:
88       If numbering is turned off, then truly don't number (i.e., do not
89       supply the -L option to noweb).  The previous behavior was to supply
90       -L'' -- which caused noweb to use the "default" line numbering scheme.
91       Thanks to Chris Richards for pointing this out (and supplying the fix).
92    
93    2. Once again, I reworked some aspects of the FFI:
94    
95       A. The incomplete/complete type business:
96    
97       - Signatures POINTER_TO_INCOMPLETE_TYPE and accompanying functors are
98         gone!
99       - ML types representing an incomplete type are now *equal* to
100         ML types representing their corresponding complete types (just like
101         in C).  This is still safe because ml-nlffigen will not generate
102         RTTI for incomplete types, nor will it generate functions that
103         require access to such RTTI.   But when ML code generated from both
104         incomplete and complete versions of the C type meet, the ML types
105         are trivially interoperable.
106    
107         NOTE:  These changes restore the full generality of the translation
108         (which was previously lost when I eliminated functorization)!
109    
110       B. Enum types:
111    
112       - Structure C now has a type constructor "enum" that is similar to
113         how the "su" constructor works.  However, "enum" is not a phantom
114         type because each "T enum" has values (and is isomorphic to
115         MLRep.Signed.int).
116       - There are generic access operations for enum objects (using
117         MLRep.Signed.int).
118       - ml-nlffigen will generate a structure E_foo for each "enum foo".
119         * The structure contains the definition of type "mlrep" (the ML-side
120         representation type of the enum).  Normally, mlrep is the same
121         as "MLRep.Signed.int", but if ml-nlffigen was invoked with "-ec",
122         then mlrep will be defined as a datatype -- thus facilitating
123         pattern matching on mlrep values.
124         ("-ec" will be suppressed if there are duplicate values in an
125          enumeration.)
126         * Constructors ("-ec") or values (no "-ec") e_xxx of type mlrep
127         will be generated for each C enum constant xxx.
128         * Conversion functions m2i and i2m convert between mlrep and
129         MLRep.Signed.int.  (Without "-ec", these functions are identities.)
130         * Coversion functions c and ml convert between mlrep and "tag enum".
131         * Access functions (get/set) fetch and store mlrep values.
132       - By default (unless ml-nlffigen was invoked with "-nocollect"), unnamed
133         enumerations are merged into one single enumeration represented by
134         structure E_'.
135    
136    ----------------------------------------------------------------------
137  Name: Allen Leung  Name: Allen Leung
138  Date: 2002/02/25 04:45:00 EST  Date: 2002/02/25 04:45:00 EST
139  Tag: leunga-20020225-cps-spill  Tag: leunga-20020225-cps-spill
# Line 69  Line 190 
190         TOTAL                                   2375.26u  57.21s  48.00g         TOTAL                                   2375.26u  57.21s  48.00g
191    
192  As you can see the old cps spill module suffers from some serious  As you can see the old cps spill module suffers from some serious
193  performance problem but since I cannot decipher the old code fully,  performance problem.  But since I cannot decipher the old code fully,
194  innstead of patching the problems up, I'm reimplementing it  instead of patching the problems up, I'm reimplementing it
195  with a different algorithm.  The new code is more modular,  with a different algorithm.  The new code is more modular,
196  smaller when compiled, and substantially faster  smaller when compiled, and substantially faster
197  (O(n log n) time and O(n) space).  Timing of the new spill module:  (O(n log n) time and O(n) space).  Timing of the new spill module:

Legend:
Removed from v.1094  
changed lines
  Added in v.1124

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