Results 1 -
6 of
6
Program Analysis and Specialization for the C Programming Language
, 1994
"... Software engineers are faced with a dilemma. They want to write general and wellstructured programs that are flexible and easy to maintain. On the other hand, generality has a price: efficiency. A specialized program solving a particular problem is often significantly faster than a general program. ..."
Abstract
-
Cited by 472 (0 self)
- Add to MetaCart
Software engineers are faced with a dilemma. They want to write general and wellstructured programs that are flexible and easy to maintain. On the other hand, generality has a price: efficiency. A specialized program solving a particular problem is often significantly faster than a general program. However, the development of specialized software is time-consuming, and is likely to exceed the production of today’s programmers. New techniques are required to solve this so-called software crisis. Partial evaluation is a program specialization technique that reconciles the benefits of generality with efficiency. This thesis presents an automatic partial evaluator for the Ansi C programming language. The content of this thesis is analysis and transformation of C programs. We develop several analyses that support the transformation of a program into its generating extension. A generating extension is a program that produces specialized programs when executed on parts of the input. The thesis contains the following main results.
Dictionary-free Overloading by Partial Evaluation
"... One of the most novel features in the functional programming language Haskell is the system of type classes used to support a combination of overloading and polymorphism. Current implementations of type class overloading are based on the use of dictionary values, passed as extra parameters to overlo ..."
Abstract
-
Cited by 33 (1 self)
- Add to MetaCart
One of the most novel features in the functional programming language Haskell is the system of type classes used to support a combination of overloading and polymorphism. Current implementations of type class overloading are based on the use of dictionary values, passed as extra parameters to overloaded functions. Unfortunately, this can have a significant effect on run-time performance, for example, by reducing the effectiveness of important program analyses and optimizations. This paper describes how a simple partial evaluator can be used to avoid the need for dictionary values at run-time by generating specialized versions of overloaded functions. This eliminates the run-time costs of overloading. Furthermore, and somewhat surprisingly given the presence of multiple versions of some functions, for all of the examples that we have tried so far, specialization actually leads to a reduction in the size of compiled programs.
Effect Systems with Subtyping
"... Effect systems extend classical type systems with effect information. Just as types describe the possible values of expressions, effects describe their possible evaluation behaviors. Effects, which appear in function types, introduce new constraints on the typability of expressions. To increase the ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Effect systems extend classical type systems with effect information. Just as types describe the possible values of expressions, effects describe their possible evaluation behaviors. Effects, which appear in function types, introduce new constraints on the typability of expressions. To increase the exibility and accuracy of e ect systems, we present a new effect system based on subtyping. The subtype relation is induced by a subsumption relation on effects. This subtyping effect system avoids merging effect information together, thus collecting more precise effect information. We introduce a reconstruction algorithm which for any expression already typed with classical types, reconstructs its type and effect based on the subtype relation. The reconstruction algorithm is sound and complete w.r.t. the static semantics.
Binding-Time Analysis and Strictness Analysis by Abstract Interpretation
"... Interpretation Franck V'edrine Laboratoire Informatique de l' ' Ecole Normale Sup'erieure 45 rue d'Ulm, 75230 Paris Cedex 05 FRANCE email: vedrine@dmi.ens.fr Abstract. Given a description of inputs and parameters in a program, a Binding-Time Analysis determines parts of a program which can be eval ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
Interpretation Franck V'edrine Laboratoire Informatique de l' ' Ecole Normale Sup'erieure 45 rue d'Ulm, 75230 Paris Cedex 05 FRANCE email: vedrine@dmi.ens.fr Abstract. Given a description of inputs and parameters in a program, a Binding-Time Analysis determines parts of a program which can be evaluated at compile-time. A Strictness Analysis determines parts of a program, whose early evaluation does not change the value of the result. In this paper, we present an analysis which subsumes both analyses for a first-order functional language. The analysis is formulated in terms of Abstract Interpretation based upon approximation of a fixpoint collecting semantics using Galois connections. 1 Introduction Binding-Time Analysis (B.T.A) is useful for partial evaluation. It finds out which parts of a program can be evaluated at compile-time with respect to well known arguments, or more generally, when a dynamic expression can be unfrozen. Combined with Strictness Analysis, it enables to class...
Local Type Reconstruction by means of Symbolic Fixed Point Iteration
- In Proc. 5th European Symposium on Programming (ESOP
, 1994
"... . We convert, via a version that uses constraints, a type inference system for strictness analysis into an algorithm which given an expression finds the set of possible typings. Although this set in general does not possess a minimal element, it can be represented compactly by means of symbolic expr ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
. We convert, via a version that uses constraints, a type inference system for strictness analysis into an algorithm which given an expression finds the set of possible typings. Although this set in general does not possess a minimal element, it can be represented compactly by means of symbolic expressions in normal form -- such expressions have the property that once values for the constraint variables with negative polarity have been supplied it is straight-forward to compute the minimal values for the constraint variables with positive polarity. The normalization process works on the fly, i.e. by a leaf-to-root traversal of the inference tree. 1 Background and Motivation Recently much interest has been devoted to the formulation of program analysis in terms of inference systems, as opposed to e.g. abstract interpretation (for the relationship between those methods see e.g. [Jen91]). This approach is appealing since it separates the question "what is done?" from the question "how is...
Binding-time analysis for polymorphic types
- In PSI-01: Andrei Ershov Fourth International Conference, Perspectives of System Informatics, number 2244 in Lecture Notes in Computer Science
, 2001
"... Partial evaluation is by now a well-established technique for specialising programs ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Partial evaluation is by now a well-established technique for specialising programs

