Computation of aliases and support sets
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Copy elimination in single assignment languages
Copy elimination in single assignment languages
Static analysis of aliases and side effects in higher-order languages
Static analysis of aliases and side effects in higher-order languages
The aggregate update problem in functional programming systems
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A semantic model of reference counting and its abstraction (detailed summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Higher-order strictness analysis in untyped lambda calculus
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 3rd Workshop on Mathematical Foundations of Programming Language Semantics
Principles of Compiler Design (Addison-Wesley series in computer science and information processing)
Principles of Compiler Design (Addison-Wesley series in computer science and information processing)
A compositional analysis of evaluation-order and its application
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Update analysis and the efficient implementation of functional aggregates
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Shallow binding makes functional arrays fast
ACM SIGPLAN Notices
Path analysis and the optimization of nonstrict functional languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallel destructive updating in strict functional languages
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Abstract interpretation and low-level code optimization
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A FAD for Data Intensive Applications
IEEE Transactions on Knowledge and Data Engineering
Static Analysis for Safe Destructive Updates in a Functional Language
LOPSTR '01 Selected papers from the 11th International Workshop on Logic Based Program Synthesis and Transformation
Single Assignment C: efficient support for high-level array operations in a functional setting
Journal of Functional Programming
Electronic Notes in Theoretical Computer Science (ENTCS)
Staged static techniques to efficiently implement array copy semantics in a MATLAB JIT compiler
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
Hi-index | 0.00 |
Copy elimination is an important optimization for compiling functional languages. Copies arise because these languages lack the concepts of state and variable; hence updating an object involves a copy in a naive implementation. Copies are also possible if proper targeting has not been carried out inside functions and across function calls. Targeting is the proper selection of a storage area for evaluating an expression. By abstracting a collection of functions by a target operator, we compute targets of function bodies that can then be used to define an optimized interpreter to eliminate copies due to updates and copies across function calls. The language we consider is typed lambda calculus with higher-order functions and special constructs for array operations. Our approach can eliminate copies in divide and conquer problems like quicksort and bitonic sort that previous approaches could not handle.We also present some results of implementing a compiler for a single assignment language called SAL on some small but tough programs. Our results indicate that it is possible to approach a performance comparable to imperative languages like Pascal.