| Robert A. MacLachlan. The Python compiler for CMU Common Lisp. In LFP '92 [33], pages 235--246. |
....Scheme C compiler, the Bigloo compiler tries to produce readable C code which is suitable for optimization by a C compiler. However, Serrano also does not argue that being sensitive to program structure is essential to compiling 29 functional languages well. The CMU Python Common Lisp compiler [35] tries to avoid unnecessary unconditional branches when generating code for loops. However, no other optimizations for recursive functions or loops are described. The Lucid Portable LISP compiler [10] does the following global optimizations: constant folding, dead code elimination, tail recursion ....
Robert A. MacLachlan. The Python compiler for CMU Common Lisp. In LFP '92 [33], pages 235--246.
....intensive programs, boxing numbers can slow down applications by a large factor. This problem has such an important impact that many ML and Lisp implementations use ad hoc methods to reduce the creation of number handles (descriptions of these methods for modern implementations can be found in [20, 12]) Mainly, they consist of local optimizations to avoid boxing numbers for intermediate results. Another negative impact of floating point boxing is register allocation. When flonums are allocated in memory, every floating point operation, requires a memory fetch for each operant. These operations ....
R. MacLachlan. The Python Compiler for CMU Common Lisp. In Proceedings of the 1992 ACM Conference on Lisp and Functional Programming, pages 235--246, San Francisco, CA, USA, June 1992.
....calls to use only tagged values. 6. Related Work The work that is probably the closest to ours is that of the Python compiler for CMU Common Lisp, which uses untagged representations for numeric objects where possible, including the passing of arguments and return values in function calls [23]. While our implementation does not currently allow untagged objects to be heap allocated, CMU Common Lisp allows explicitly typed array and structure slots (which are heap resident) to contain untagged values, provided that all of the values in the array or structure can be guaranteed at ....
R. A. MacLachlan, "The Python Compiler for CMU Common Lisp", Proc. ACM Conf. on Lisp and Functional Programming, 1992, pp. 235--246.
....pointers to them where necessary. Such indirect representations are referred to as boxed representations, and can incur a considerable performance overhead. Because of this, program optimization to use unboxed values where possible has been the subject of a great deal of research (e.g. see [3, 6, 7]) A second example where changing the default data representation can lead to significant improvements in performance involves lists, which are common in programs in high level languages such as ML, Prolog, and Scheme. In the default representation, each list cell consists of one data value and a ....
R. A. MacLachlan, "The Python Compiler for CMU Common Lisp", Proc. ACM Conf. on Lisp and Functional Programming, 1992, pp. 235--246.
....written by the user. It appears that the programmer must understand the coercion insertion algorithm to understand the meaning of a program. 6.2. 2 Flow Analysis The designers of optimizing compilers for Scheme and Lisp have developed type recovery procedures based on iterative flow analysis [8, 33, 39, 40]. Some object oriented languages use similar methods [12, 34] The information gathered by these systems is important for program optimization, but it is generally too coarse to serve as the basis for a soft type system. Few of the systems infer polymorphic types; none accommodate higher order ....
....union types. Unboxing certain kinds of values could also simplify the problem of integrating Soft Scheme with other languages, like C. We also believe that type information such as Soft Scheme infers has the potential to guide many kinds of program global optimizations. Various Lisp compilers [8, 33, 39, 40] and some object oriented systems [12, 34] use iterative flow analysis techniques to determine type information for optimization. The idea of using type information derived from type inference for optimization seems to have received little attention in the literature. 128 8.5 Programming ....
MacLachlan, R. A. The Python compiler for CMU Common Lisp. In Proc. ACM Conference on Lisp and Functional Programming (1992), pp. 235--246.
....for several other programs) and (b) that the analysis results only provided a 1 improvement on the results of less costly domains. In part, this was due to lacking struct, atom and similar leaf nodes, and thus being unable to express the results of type tests. The Python CMU Common Lisp compiler [16] uses type propagation to optimize the generic arithmetic of Common Lisp. In particular, Common Lisp has an extensive system of type declarations which Python can use to strength reduce arithmetic. It is unclear to which extent Python is capable of strength reducing arithmetic without ....
R.A. MacLachlan, The Python compiler for CMU Common Lisp, in Proc. LFP'92.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC