Results 1  10
of
104
Soft typing with conditional types
 In TwentyFirst Annual ACM Symposium on Principles of Programming Languages
, 1994
"... We present a simple and powerful type inference method for dynamically typed languages where no type information is supplied by the user. Type inference is reduced to the problem of solvability of a system of type inclusion constraints over a type language that includes function types, constructor t ..."
Abstract

Cited by 197 (15 self)
 Add to MetaCart
(Show Context)
We present a simple and powerful type inference method for dynamically typed languages where no type information is supplied by the user. Type inference is reduced to the problem of solvability of a system of type inclusion constraints over a type language that includes function types, constructor types, union, intersection, and recursive types, and conditional types. Conditional types enable us to analyze control flow using type inference, thus facilitating computation of accurate types. We demonstrate the power and practicrdity of the method with examples and performance results from an implementation. 1
Ultrafast aliasing analysis using CLA: a million lines of C code in a second
, 2001
"... We describe the design and implementation of a system for very fast pointsto analysis. On code bases of about a million lines of unpreprocessed C code, our system performs eldbased Andersenstyle pointsto analysis in less than a second and uses less than 10MB of memory. Our tw o main contributions ..."
Abstract

Cited by 136 (0 self)
 Add to MetaCart
We describe the design and implementation of a system for very fast pointsto analysis. On code bases of about a million lines of unpreprocessed C code, our system performs eldbased Andersenstyle pointsto analysis in less than a second and uses less than 10MB of memory. Our tw o main contributions are a databasecentric analysis architecture called compilelinkanalyze (CLA), and a new algorithm for implementing dynamic transitive closure. Our pointsto analysis system is built into a forward datadependence analysis tool that is deployed within Lucent to help with consistent type modi cations to large legacy C code bases. 1.
Partial Online Cycle Elimination in Inclusion Constraint Graphs
 IN PROCEEDINGS OF THE 1998 ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION
, 1998
"... Many program analyses are naturally formulated and implemented using inclusion constraints. We present new results on the scalable implementation of such analyses based on two insights: first, that online elimination of cyclic constraints yields ordersofmagnitude improvements in analysis time for ..."
Abstract

Cited by 127 (14 self)
 Add to MetaCart
(Show Context)
Many program analyses are naturally formulated and implemented using inclusion constraints. We present new results on the scalable implementation of such analyses based on two insights: first, that online elimination of cyclic constraints yields ordersofmagnitude improvements in analysis time for large problems; second, that the choice of constraint representation affects the quality and efficiency of online cycle elimination. We present an analytical model that explains our design choices and show that the model's predictions match well with results from a substantial experiment.
Introduction to set constraintbased program analysis
 Science of Computer Programming
, 1999
"... ..."
Formal Language, Grammar and SetConstraintBased Program Analysis by Abstract Interpretation
, 1995
"... Grammarbased program analysis à la Jones and Muchnick and setconstraintbased program analysis à la Aiken and Heintze are static analysis techniques that have traditionally been seen as quite different from abstractinterpretationbased analyses, in particular because of their apparent noniterati ..."
Abstract

Cited by 81 (10 self)
 Add to MetaCart
Grammarbased program analysis à la Jones and Muchnick and setconstraintbased program analysis à la Aiken and Heintze are static analysis techniques that have traditionally been seen as quite different from abstractinterpretationbased analyses, in particular because of their apparent noniterative nature. For example, on page 18 of N. Heintze thesis, it is alleged that ``The finitary nature of abstract interpretation implies that there is a fundamental limitation on the accuracy of this approach to program analysis. There are decidable kinds of analysis that cannot be computed using abstract interpretation (even with widening and narrowing). The setbased analysis considered in this thesis is one example''. On the contrary, we show that grammar and setconstraintbased program analyses are similar abstract interpretations with iterative fixpoint computation using either a widening or a finitary grammar/setconstraints transformer or even a finite domain for each particular program. The understanding of grammarbased and setconstraintbased program analysis as a particular instance of abstract interpretation of a semantics has several advantages. First, the approximation process is formalized and not only explained using examples. Second, a domain of abstract properties is exhibited which is of general scope. Third, these analyses can be easily combined with other abstractinterpretationbased analyses, in particular for the analysis of numerical values. Fourth, they can be generalized to very powerful attributedependent and contextdependent analyses. Finally, a few misunderstandings may be removed.
Set Constraints: Results, Applications and Future Directions
 In Second Workshop on the Principles and Practice of Constraint Programming
"... . Set constraints are a natural formalism for many problems that arise in program analysis. This paper provides a brief introduction to set constraints: what set constraints are, why they are interesting, the current state of the art, open problems, applications and implementations. 1 Introduction ..."
Abstract

Cited by 74 (4 self)
 Add to MetaCart
(Show Context)
. Set constraints are a natural formalism for many problems that arise in program analysis. This paper provides a brief introduction to set constraints: what set constraints are, why they are interesting, the current state of the art, open problems, applications and implementations. 1 Introduction Set constraints are a natural formalism for describing relationships between sets of terms of a free algebra. A set constraint has the form X ` Y , where X and Y are set expressions. Examples of set expressions are 0 (the empty set), ff (a setvalued variable), c(X; Y ) (a constructor application), and the union, intersection, or complement of set expressions. Recently, there has been a great deal of interest in program analysis algorithms based on solving systems of set constraints, including analyses for functional languages [AWL94, Hei94, AW93, AM91, JM79, MR85, Rey69], logic programming languages [AL94, HJ92, HJ90b, Mis84], and imperative languages [HJ91]. In these algorithms, sets of...
Polymorphic versus monomorphic flowinsensitive pointsto analysis for C
 IN STATIC ANALYSIS SYMPOSIUM
, 2000
"... We carry out an experimental analysis for two of the design dimensions of flowinsensitive pointsto analysis for C: polymorphic versus monomorphic and equalitybased versus inclusionbased. Holding other analysis parameters fixed, we measure the precision of the four design points on a suite of be ..."
Abstract

Cited by 67 (3 self)
 Add to MetaCart
We carry out an experimental analysis for two of the design dimensions of flowinsensitive pointsto analysis for C: polymorphic versus monomorphic and equalitybased versus inclusionbased. Holding other analysis parameters fixed, we measure the precision of the four design points on a suite of benchmarks of up to 90,000 abstract syntax tree nodes. Our experiments show that the benefit of polymorphism varies significantly with the underlying monomorphic analysis. For our equalitybased analysis, adding polymorphism greatly increases precision, while for our inclusionbased analysis, adding polymorphism hardly makes any difference. We also gain some insight into the nature of polymorphism in pointsto analysis of C. In particular, we find considerable polymorphism available in function parameters, but little or no polymorphism in function results, and we show how this observation explains our results.
Closure Analysis in Constraint Form
 ACM Transactions on Programming Languages and Systems
, 1995
"... Interpretation Bondorf's definition can be simplified considerably. To see why, consider the second component of CMap(E) \Theta CEnv(E). This component is updated only in Closure Analysis in Constraint Form \Delta 9 b(E 1 @ i E 2 )¯ae and read only in b(x l )¯ae. The key observation is that ..."
Abstract

Cited by 63 (5 self)
 Add to MetaCart
Interpretation Bondorf's definition can be simplified considerably. To see why, consider the second component of CMap(E) \Theta CEnv(E). This component is updated only in Closure Analysis in Constraint Form \Delta 9 b(E 1 @ i E 2 )¯ae and read only in b(x l )¯ae. The key observation is that both these operations can be done on the first component instead. Thus, we can omit the use of CEnv(E). By rewriting Bondorf's definition according to this observation, we arrive at the following definition. As with Bondorf's definition, we assume that all labels are distinct. Definition 2.3.1. We define m : (E : ) ! CMap(E) ! CMap(E) m(x l )¯ = ¯ m( l x:E)¯ = (m(E)¯) t h[[ l ]] 7! flgi m(E 1 @ i E 2 )¯ = (m(E 1 )¯) t (m(E 2 )¯) t F l2¯(var(E1 )) (h[[ l ]] 7! ¯(var(E 2 ))i t h[[@ i ]] 7! ¯(var(body(l)))i) . We can now do closure analysis of E by computing fix(m(E)). A key question is: is the simpler abstract interpretation equivalent to Bondorf's? We might attempt to prove this u...
The Semantics of Future and Its Use in Program Optimization
 Rice University
, 1995
"... The future annotations of MultiLisp provide a simple method for taming the implicit parallelism of functional programs. Past research concerning futures has focused on implementation issues. In this paper, we present a series of operational semantics for an idealized functional language with futures ..."
Abstract

Cited by 58 (4 self)
 Add to MetaCart
(Show Context)
The future annotations of MultiLisp provide a simple method for taming the implicit parallelism of functional programs. Past research concerning futures has focused on implementation issues. In this paper, we present a series of operational semantics for an idealized functional language with futures with varying degrees of intensionality. We develop a setbased analysis algorithm from the most intensional semantics, and use that algorithm to perform touch optimization on programs. Experiments with the Gambit compiler indicates that this optimization substantially reduces program execution times. 1 Implicit Parallelism via Annotations Programs in functional languages offer numerous opportunities for executing program components in parallel. In a callbyvalue language, for example, the evaluation of every function application could spawn a parallel thread for each subexpression. However, if such a strategy were applied indiscriminately, the execution of a program would generate far t...