Results 1  10
of
30
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 527 (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 timeconsuming, and is likely to exceed the production of today’s programmers. New techniques are required to solve this socalled 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.
MetaML and MultiStage Programming with Explicit Annotations
 Theoretical Computer Science
, 1999
"... . We introduce MetaML, a practicallymotivated, staticallytyped multistage programming language. MetaML is a "real" language. We have built an implementation and used it to solve multistage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a typesafe ..."
Abstract

Cited by 239 (30 self)
 Add to MetaCart
. We introduce MetaML, a practicallymotivated, staticallytyped multistage programming language. MetaML is a "real" language. We have built an implementation and used it to solve multistage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a typesafe manner. Code fragments can contain free variables, but they obey the staticscoping principle. MetaML performs typechecking for all stages once and for all before the execution of the first stage. Certain anomalies with our first MetaML implementation led us to formalize an illustrative subset of the MetaML implementation. We present both a bigstep semantics and type system for this subset, and prove the type system's soundness with respect to a bigstep semantics. From a software engineering point of view, this means that generators written in the MetaML subset never generate unsafe programs. A type system and semantics for full MetaML is still ongoing work. We argue that multi...
Accurate BindingTime Analysis For Imperative Languages: Flow, Context, and Return Sensitivity
"... Since a bindingtime analysis determines how an offline partial evaluator will specialize a program, the accuracy of the bindingtime information directly determines the degree of specialization. We have designed and implemented a bindingtime analysis for an imperative language, and integrated it ..."
Abstract

Cited by 37 (4 self)
 Add to MetaCart
Since a bindingtime analysis determines how an offline partial evaluator will specialize a program, the accuracy of the bindingtime information directly determines the degree of specialization. We have designed and implemented a bindingtime analysis for an imperative language, and integrated it into our partial evaluator for C, called Tempo [11]. This bindingtime analysis includes a number of new features, not available in any existing partial evaluator for an imperative language, which are critical when specializing existing programs such as operating system components [27,28]. ffl Flow sensitivity. A different bindingtime description is computed for each program point, allowing the same variable to be considered static at one program point and dynamic at another. ffl Context sensitivity. Each function call is analyzed with the context of the call site, generating multiple bindingtime annotated instances of the same function definition. ffl Return sensitivity. A different bi...
Type and effect systems
 ACM Computing Surveys
, 1999
"... Abstract. The design and implementation of a correct system can benefit from employing static techniques for ensuring that the dynamic behaviour satisfies the specification. Many programming languages incorporate types for ensuring that certain operations are only applied to data of the appropriate ..."
Abstract

Cited by 34 (0 self)
 Add to MetaCart
Abstract. The design and implementation of a correct system can benefit from employing static techniques for ensuring that the dynamic behaviour satisfies the specification. Many programming languages incorporate types for ensuring that certain operations are only applied to data of the appropriate form. A natural extension of type checking techniques is to enrich the types with annotations and effects that further describe intensional aspects of the dynamic behaviour.
A Categorical Account of TwoLevel Languages
 In MFPS
, 1997
"... We give an account of twolevel languages in terms of indexed categories and universal properties wellknown in the context of categorical logic. This account provides three important insights: establishes precise analogies between twolevel languages and module languages, explains the twolevel lan ..."
Abstract

Cited by 18 (4 self)
 Add to MetaCart
We give an account of twolevel languages in terms of indexed categories and universal properties wellknown in the context of categorical logic. This account provides three important insights: establishes precise analogies between twolevel languages and module languages, explains the twolevel languages used in partial evaluation (see [7]) in terms of those used for code generation (see [16]), suggests extensions that should be valuable for typespecialization (see [9]) and shapeanalysis (see [1]).
Optimal Representations of Polymorphic Types with Subtyping (Extended Abstract)
 IN PROCEEDINGS TACS'97 THEORETICAL ASPECTS OF COMPUTER SOFTWARE
, 1997
"... Many type inference and program analysis systems include notions of subtyping and parametric polymorphism. When used together, these two features induce equivalences that allow types to be simplified by eliminating quantified variables. Eliminating variables both improves the readability of types an ..."
Abstract

Cited by 18 (3 self)
 Add to MetaCart
Many type inference and program analysis systems include notions of subtyping and parametric polymorphism. When used together, these two features induce equivalences that allow types to be simplified by eliminating quantified variables. Eliminating variables both improves the readability of types and the performance of algorithms whose complexity depends on the number of type variables. We present an algorithm for simplifying quantified types in the presence of subtyping and prove it is sound and complete for nonrecursive and recursive types.
TypeDirected Flow Analysis for Typed Intermediate Languages
 In Proc. 4th Int’l Static Analysis Symp
, 1997
"... . Flow analysis is especially valuable for optimizing functional languages because controlflow information is not syntactically apparent in higherorder programs. Flow analyses typically operate on untyped languages. However, recent compilers for typed functional languages such as ML and Haskell us ..."
Abstract

Cited by 16 (2 self)
 Add to MetaCart
. Flow analysis is especially valuable for optimizing functional languages because controlflow information is not syntactically apparent in higherorder programs. Flow analyses typically operate on untyped languages. However, recent compilers for typed functional languages such as ML and Haskell use a typed intermediate language to expose data representations for optimization. This paper presents a polyvariant flow analysis framework for the predicative subset of system F , a common basis for typed intermediate languages. Analyses in this framework can take advantage of types to analyze programs more precisely. We study a specific analysis called SRT that uses types to control polyvariance. We prove that SRT respects types: whenever it assigns abstract value v to a variable and the type system assigns type oe to the same variable, then [[v]] ` [[oe]], where [[ \Delta ]] denotes a set of values. SRT does not terminate for some programs. We present several variants of SRT that are bett...
Inference of Polymorphic and Conditional Strictness Properties
 IN CONF. REC. POPL ’98: 25TH ACM SYMP. PRINC. OF PROG. LANGS
, 1998
"... We define an inference system for modular strictness analysis of functional programs by extending a conjunctive strictness logic with polymorphic and conditional properties. This extended set of properties is used to define a syntaxdirected, polymorphic strictness analysis based on polymorphic recu ..."
Abstract

Cited by 16 (0 self)
 Add to MetaCart
We define an inference system for modular strictness analysis of functional programs by extending a conjunctive strictness logic with polymorphic and conditional properties. This extended set of properties is used to define a syntaxdirected, polymorphic strictness analysis based on polymorphic recursion whose soundness is established via a translation from the polymorphic system into the conjunctive system. From the polymorphic analysis, an inference algorithm based on constraint resolution is derived and shown complete for variant of the polymorphic analysis. The algorithm deduces at the same time a property and a set of hypotheses on the free variables of an expression which makes it suitable for analysis of program with module structure.
A Hybrid Approach to Online and Offline Partial Evaluation
 HigherOrder and Symbolic Computation
, 2002
"... This article presents a hybrid method of partial evaluation (PE), which is exactly as precise as naive online PE and nearly as efficient as stateoftheart offline PE, for a statically typed callbyvalue functional language. ..."
Abstract

Cited by 16 (0 self)
 Add to MetaCart
This article presents a hybrid method of partial evaluation (PE), which is exactly as precise as naive online PE and nearly as efficient as stateoftheart offline PE, for a statically typed callbyvalue functional language.
Functor Categories and TwoLevel Languages
 In Foundations of Software Science and Computation Structures (FoSSaCS
, 1998
"... We propose a denotational semantics for the twolevel language of [GJ91, Gom92], and prove its correctness w.r.t. a standard denotational semantics. Other researchers (see [Gom91, GJ91, Gom92, JGS93, HM94]) have claimed correctness for lambdamix (or extensions of it) based on denotational models, b ..."
Abstract

Cited by 15 (4 self)
 Add to MetaCart
We propose a denotational semantics for the twolevel language of [GJ91, Gom92], and prove its correctness w.r.t. a standard denotational semantics. Other researchers (see [Gom91, GJ91, Gom92, JGS93, HM94]) have claimed correctness for lambdamix (or extensions of it) based on denotational models, but the proofs of such claims rely on imprecise definitions and are basically awed. At a technical level there are two important differences between our model and more naive models in Cpo: the domain for interpreting dynamic expressions is more abstract (we interpret code as terms modulo conversion), the semantics of newname is handled differently (we exploit functor categories). The key idea is to interpret a twolevel language in a suitable functor category Cpo D op rather than Cpo. The semantics of newname follows the ideas pioneered by Oles and Reynolds for modeling the stack discipline of Algollike languages. Indeed, we can think of the objects of D (i.e. the natural numbers) as ...