Results 1 - 10
of
11
The semantics of Scheme control-flow analysis
- School of Computer Science, Pittsburgh
, 1991
"... This is a follow-on to my 1988 PLDI paper, “Control-Flow Analysis in Scheme”[9]. I usethe methodof abstractsemantic interpretations to explicate the control-flow analysis technique presented in that paper. I begin with a denotational semantics for CPS Scheme. I then present an alternate semantics th ..."
Abstract
-
Cited by 53 (3 self)
- Add to MetaCart
This is a follow-on to my 1988 PLDI paper, “Control-Flow Analysis in Scheme”[9]. I usethe methodof abstractsemantic interpretations to explicate the control-flow analysis technique presented in that paper. I begin with a denotational semantics for CPS Scheme. I then present an alternate semantics that precisely expresses the controlflow analysis problem. I abstract this semantics in a natural way, arriving at two different semantic interpretations giving approximate solutions to the flow analysis problem, each computable at compile time. The development of the final abstract semantics provides a clear, formal description of the analysis technique presented in “Control-Flow Analysis in Scheme.” 1
Stop-and-copy and One-bit Reference Counting
- BIT
, 1993
"... A stop-and-copy garbage collector updates one-bit reference counting with essentially no extra space and minimal memory cycles beyond the conventional collection algorithm. Any object that is uniquely referenced during a collection becomes a candidate for cheap recovery before the next one, or faste ..."
Abstract
-
Cited by 18 (4 self)
- Add to MetaCart
A stop-and-copy garbage collector updates one-bit reference counting with essentially no extra space and minimal memory cycles beyond the conventional collection algorithm. Any object that is uniquely referenced during a collection becomes a candidate for cheap recovery before the next one, or faster recopying then if it remains uniquely referenced. Since most objects stay uniquely referenced, subsequent collections run faster even if none are recycled between garbage collections. This algorithm extends to generation scavenging, it admits uncounted references from roots, and it corrects conservatively stuck counters, that result from earlier uncertainty whether references were unique. CR categories and Subject Descriptors: D.4.2 [Storage Management]: Allocation/Deallocation strategies; E.2 [Data Storage Representations]: Linked representations. General Term: Algorithms. Additional Key Words and Phrases: multiple reference bit, MRB. Research reported herein was sponsored, in part...
One-bit Counts between Unique and Sticky
- ACM SIGPLAN Notices
, 1998
"... Stoye's one-bit reference tagging scheme can be extended to local counts of two or more via two strategies. The first, suited to pure register transactions, is a cache of referents to two shared references. The analog of Deutsch's and Bobrow's multiple-reference table, this cache is sufficient to ma ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Stoye's one-bit reference tagging scheme can be extended to local counts of two or more via two strategies. The first, suited to pure register transactions, is a cache of referents to two shared references. The analog of Deutsch's and Bobrow's multiple-reference table, this cache is sufficient to manage small counts across successive assignment statements. Thus, accurate reference counts above one can be tracked for short intervals, like those bridging one function 's environment to its successor's. The second, motivated by runtime stacks that duplicate references, avoids counting any references from the stack. It requires a local pointer-inversion protocol in the mutator, but one still local to the referent and the stack frame. Thus, an accurate reference count of one can be maintained regardless of references from the recursion stack. CCS categories and Subject Descriptors: D.4.2 [Storage Management]: Allocation/Deallocation strategies; E.2 [Data Storage Representations]: Linked re...
A Uniform Treatment of Order of Evaluation and Aggregate Update
- Theoretical Computer Science
, 1993
"... The article presents an algorithm for the destructive update optimization in first-order lazy functional languages. The main component of the method is a new static analysis of the order of evaluation of expressions which, compared to other published work, has a much lower complexity and is not rest ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
The article presents an algorithm for the destructive update optimization in first-order lazy functional languages. The main component of the method is a new static analysis of the order of evaluation of expressions which, compared to other published work, has a much lower complexity and is not restricted to pure lazy evaluation. The other component, which we call reduction to variables, is a method of detecting the variables which denote locations where the result of an expression might be stored. Starting with the operational semantics of the language, we introduce some markers for the values in the basic domain. By appropriately choosing the set of markers M and the method of propagating them during evaluation, we can extract some property of the evaluation in which an expression can participate in by looking at the marker of its value. We define then an equivalent denotational semantics and derive the above analyses, in an uniform way, by abstract interpretation over a subdomain of...
Derivation of Static Analysers of Functional Programs From Path Properties of a Natural Semantics
, 1995
"... : We advocate the use of operational semantics as a basis for specifying program analyses for functional languages. We put forward a methodology for defining a static analysis by successive refinements of the natural semantics of the language. We use paths as the abstract representation of proof tre ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
: We advocate the use of operational semantics as a basis for specifying program analyses for functional languages. We put forward a methodology for defining a static analysis by successive refinements of the natural semantics of the language. We use paths as the abstract representation of proof trees and we provide a language for defining properties in terms of recurrence equations on paths. We show the specification of several standard properties on paths (neededness, absence, uniqueness, : : : ) and the mechanical derivation of the corresponding analyses. Key-words: functional languages, operational semantics, neededness analysis, paths analysis, optimising compilers. (R'esum'e : tsvp) gouranto@irisa.fr lemetaye@irisa.fr Unite de recherche INRIA Rennes IRISA, Campus universitaire de Beaulieu, 35042 RENNES Cedex (France) Telephone : (33) 99 84 71 00 -- Telecopie : (33) 99 84 71 D'erivation d'analyseurs de programmes fonctionnels `a partir de propri'et'es de chemin d'une s'ema...
Demand-Driven Type Analysis for Dynamically-Typed Functional Languages
"... We present a new static type analysis for dynamically-typed languages that produces high quality results at a cost that remains practicable. The analysis has the ability to adapt to the needs of the optimizer and to the characteristics of the program at hand. The result is an analyzer that quickly t ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
We present a new static type analysis for dynamically-typed languages that produces high quality results at a cost that remains practicable. The analysis has the ability to adapt to the needs of the optimizer and to the characteristics of the program at hand. The result is an analyzer that quickly transforms itself to be better equipped to attack the program. Experiments show that our approach can be pretty clever in the optimizations that it enables.
Semantic Analyses for Storage Management Optimizations in Functional Language Implementations
, 1991
"... One of the major overheads in implementing functional languages is the storage management overhead due to dynamic allocation and automatic reclamation of indefinite-extent storage. This dissertation investigates the problems of statically inferring lifetime information about dynamically-allocated ob ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
One of the major overheads in implementing functional languages is the storage management overhead due to dynamic allocation and automatic reclamation of indefinite-extent storage. This dissertation investigates the problems of statically inferring lifetime information about dynamically-allocated objects in higher-order polymorphic functional languages, both strict and non-strict, and of applying that information to reduce the storage management overhead. We have developed a set of compile-time semantic analyses for a higher-order, monomorphic, strict functional language based on denotational semantics and abstract interpretation. They are 1) escape analysis, which provides information about the relative lifetimes of objects such as arguments and local objects defin...
Abstract Interpretation and Attribute Grammars
, 1992
"... The objective of this thesis is to explore the connections between abstract interpretation and attribute grammars as frameworks in program analysis. Abstract interpretation is a semantics-based program analysis method. A large class of data flow analysis problems can be expressed as non-standard sem ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
The objective of this thesis is to explore the connections between abstract interpretation and attribute grammars as frameworks in program analysis. Abstract interpretation is a semantics-based program analysis method. A large class of data flow analysis problems can be expressed as non-standard semantics where the “meaning ” contains information about the runtime behaviour of programs. In an abstract interpretation the analysis is proved correct by relating it to the usual semantics for the language. Attribute grammars provide a method and notation to specify code generation and program analysis directly from the syntax of the programming language. They are especially used for describing compilation of programming languages and very efficient evaluators have been developed for subclasses of attribute grammars. By relating abstract interpretation and attribute grammars we obtain a closer connection between the specification and implementation of abstract interpretations which at the same time facilitates the correctness proofs of interpretations. Implementation and specification of abstract interpretations using circular attribute grammars is realised with an evaluator system for a class of domain theoretic attribute grammars. In this system thecircularity of attribute grammars is resolved by fixpoint iteration. The use of finite lattices in abstract interpretations requires automatic generation of specialised fixpoint iterators. This is done using a technique called lazy fixpoint iteration which is presented in the thesis. Methods from abstract interpretation can also be used in correctness proofs of attribute grammars. This proof technique introduces a new class of attribute grammars based on domain theory. This method is illustrated with examples. i ii SUMMARY
Bibliography of Yale's Functional Programming Research Group (aka "The Yale Haskell Project")
, 1994
"... Interpretation of Declarative Languages, pages 45--62. Ellis Horwood, 1987. (Preliminary version appeared in Proceedings 1986 ACM Conference on LISP and Functional Programming, August 1986, pp. 351-363). [53] P. Hudak. Exploring para-functional programming: Separating the what from the how. IEEE Sof ..."
Abstract
- Add to MetaCart
Interpretation of Declarative Languages, pages 45--62. Ellis Horwood, 1987. (Preliminary version appeared in Proceedings 1986 ACM Conference on LISP and Functional Programming, August 1986, pp. 351-363). [53] P. Hudak. Exploring para-functional programming: Separating the what from the how. IEEE Software, 5(1):54--61, January 1988. [54] P. Hudak. Conception, evolution, and application of functional programming languages. ACM Computing Surveys, 21(3):359--411, 1989. [55] P. Hudak. Para-functional programming in Haskell. In Parallel Functional Languages and Compilers, pages 159--196. ACM Press (New York) and Addison-Wesley (Reading), 1991. [56] P. Hudak and S. Anderson. Pomset interpretations of parallel functional programs. In Proceedings of 1987 Functional Programming Languages and Computer Architecture Conference, pages 234--256. Springer Verlag LNCS 274, September 1987. [57] P. Hudak and S. Anderson. Haskell solutions to the language session problems at the 1988 Salishan High-Speed ...
Une Analyse De Globalisation De Programmes Fonctionnels Basée Sur Une Sémantique Naturelle
"... Introduction Nous d'ecrivons d'abord la motivation g'en'erale de ce travail puis nous pr'esentons la d'emarche suivie dans le corps de l'article. 1.1 Motivation Les travaux sur l'analyse statique de programmes ont 'et'e nombreuses durant ces derni`eres ann'ees parce que l'optimisation des compilat ..."
Abstract
- Add to MetaCart
Introduction Nous d'ecrivons d'abord la motivation g'en'erale de ce travail puis nous pr'esentons la d'emarche suivie dans le corps de l'article. 1.1 Motivation Les travaux sur l'analyse statique de programmes ont 'et'e nombreuses durant ces derni`eres ann'ees parce que l'optimisation des compilateurs est cruciale pour l'impl'ementation des langages fonctionnels. En particulier un certain nombre de cadres et d'algorithmes sophistiqu'es ont 'et'e propos'es pour l'analyse de strictness [4, 12], de chemin [3, 2, 15] et de globalisation [8, 14, 16]. La correction et la pr'ecision des analyses ont 'et'e beaucoup 'etudi'ees et plusieurs techniques ont 'et'e r'ecemment propos'ees pour am'eliorer l'efficacit'e des analyseurs [11, 13]. En d'epit du fait que l'interpr'etation abstraite a 'et'e `a l'origine d'efinie dans un cadre op'erationnel [6], la plupart des analyseurs pour les langages fonctionnels sont bas'es sur des interpr'etations abstraites de

