Tags and type checking in LISP: hardware and software approaches
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
The SCHEME programming language
The SCHEME programming language
The definition of Standard ML
TICL—a type inference system for common Lisp
Software—Practice & Experience
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
An experiment with inline substitution
Software—Practice & Experience
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Type systems for programming languages
Handbook of theoretical computer science (vol. B)
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
Unexpected side effects of inline substitution: a case study
ACM Letters on Programming Languages and Systems (LOPLAS)
Profile-guided automatic inline expansion for C programs
Software—Practice & Experience
Global tagging optimization by type inference
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
The Python compiler for CMU Common Lisp
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Soft typing with conditional types
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards better inlining decisions using inlining trials
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Precise concrete type inference for object-oriented languages
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
A unified treatment of flow analysis in higher-order languages
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Closure analysis in constraint form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Selective specialization for object-oriented languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Lisp and Symbolic Computation - Special issue on parallel symbolic applications
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Profile-guided receiver class prediction
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Simple imperative polymorphism
Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
Dynamic typing and subtype inference
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Safe polymorphic type inference for a dynamically typed language: translating Scheme to ML
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Storage use analysis and its applications
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Simple and effective analysis of statically-typed object-oriented programs
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A practical and flexible flow analysis for higher-order languages
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical soft type system for scheme
ACM Transactions on Programming Languages and Systems (TOPLAS)
Infinitary control flow analysis: a collecting semantics for closure analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Scheme for the Automatic Inference of Variable Types
Journal of the ACM (JACM)
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Flow analysis and optimization of LISP-like structures
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Effective Flow Analysis for Avoiding Run-Time Checks
SAS '95 Proceedings of the Second International Symposium on Static Analysis
Type-Directed Flow Analysis for Typed Intermediate Languages
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
Type-based analysis of uncaught exceptions
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-based analysis of uncaught exceptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
A framework for call graph construction algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Functioning without closure: type-safe customized function representations for standard ML
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Down with Emacs Lisp: dynamic scope analysis
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Type-Based Useless-Variable Elimination
Higher-Order and Symbolic Computation
A proof method for the corectness of modularized OCFA
Information Processing Letters
Polyvariant Flow Analysis with Constrained Types
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Faithful Translations between Polyvariant Flows and Polymorphic Types
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Program specialization for execution monitoring
Journal of Functional Programming
Higher-order control-flow analysis in retrospect: lessons learned, lessons abandoned
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Modular set-based analysis from contracts
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Improving flow analyses via ΓCFA: abstract garbage collection and counting
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Type-sensitive control-flow analysis
Proceedings of the 2006 workshop on ML
Analyzing the environment structure of higher-order languages using frame strings
Theoretical Computer Science
Relating complexity and precision in control flow analysis
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Deciding kCFA is complete for EXPTIME
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A Posteriori Soundness for Non-deterministic Abstract Interpretations
VMCAI '09 Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation
Exploiting reachability and cardinality in higher-order flow analysis
Journal of Functional Programming
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Abstracting abstract machines: a systematic approach to higher-order program analysis
Communications of the ACM
Shape analysis in the absence of pointers and structure
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
CFA2: a context-free approach to control-flow analysis
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
Exact flow analysis by higher-order model checking
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Introspective pushdown analysis of higher-order programs
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Optimizing abstract abstract machines
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.02 |
This article describes a general-purpose program analysis that computes global control-flow and data-flow information for higher-order, call-by-value languages. The analysis employs a novel form of polyvariance called polymorhic splitting that uses let-expressions as syntactic clues to gain precision. The information derived from the analysis is used both to eliminate run-time checksand to inline procedure. The analysis and optimizations have been applied to a suite of Scheme programs. Experimental results obtained from the prototype implementation indicate that the analysis is extremely precise and has reasonable cost. Compared to monovariantflow analyses such as 0CFA, or analyses based on type inference such as soft typing, the analysis eliminates significantly more run-time checks. Run-time check elimination and inlining together typically yield a 20 to 40% performance improvement for the benchmark suite, with some programs running four times as fast.