A type discipline for Program modules
II and Colloquium on Functional and Logic Programming and Specifications (CFLP) on TAPSOFT '87: Advanced Seminar on Foundations of Innovative Software Development
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type checking records and variants in a natural extension of ML
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The definition of Standard ML
Algebraic reconstruction of types and effects
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The undecidability of the semi-unification problem
STOC '90 Proceedings of the twenty-second annual ACM symposium on Theory of computing
Extending record typing to type parametric modules with sharing
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference with polymorphic recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Higher-order concurrent programs with finite communication topology (extended abstract)
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Implementation of the typed call-by-value λ-calculus using a stack of regions
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Better static memory management: improving region-based analysis of higher-order languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
From region inference to von Neumann machines via region representation inference
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Region-based memory management
Information and Computation
Revised report on the algorithm language ALGOL 60
Communications of the ACM
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Uniprocessor Garbage Collection Techniques
IWMM '92 Proceedings of the International Workshop on Memory Management
Polymorphic Type Schemes and Recursive Definitions
Proceedings of the 6th Colloquium on International Symposium on Programming
A brief introduction to regions
Proceedings of the 1st international symposium on Memory management
The marriage of effects and monads
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Typed memory management in a calculus of capabilities
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-based analysis of uncaught exceptions
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Static interpretation of modules
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Type-based analysis of uncaught exceptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
An automatic object inlining optimization and its evaluation
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Stratified operational semantics for safety and correctness of the region calculus
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typed memory management via static capabilities
ACM Transactions on Programming Languages and Systems (TOPLAS)
Pointer and escape analysis for multithreaded programs
PPoPP '01 Proceedings of the eighth ACM SIGPLAN symposium on Principles and practices of parallel programming
Combining region inference and garbage collection
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Syntactic type soundness results for the region calculus
Information and Computation
The marriage of effects and monads
ACM Transactions on Computational Logic (TOCL)
Interprocedural compatibility analysis for static object preallocation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Flow-Directed Closure Conversion for Typed Languages
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
A Type System for Bounded Space and Functional In-Place Update--Extended Abstract
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Correct System Design, Recent Insight and Advances, (to Hans Langmaack on the occasion of his retirement from his professorship at the University of Kiel)
Programming with Explicit Regions
ASIAN '99 Proceedings of the 5th Asian Computing Science Conference on Advances in Computing Science
Monadic Encapsulation with Stack of Regions
FLOPS '01 Proceedings of the 5th International Symposium on Functional and Logic Programming
A type system for bounded space and functional in-place update
Nordic Journal of Computing
Automatic pool allocation for disjoint data structures
Proceedings of the 2002 workshop on Memory system performance
Memory safety without runtime checks or garbage collection
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Heap-Bounded Assembly Language
Journal of Automated Reasoning
A Retrospective on Region-Based Memory Management
Higher-Order and Symbolic Computation
Polymorphic specialization for ML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Experiments on the effectiveness of an automatic insertion of memory reuses into ML-like programs
Proceedings of the 4th international symposium on Memory management
Bisimilarity for the Region Calculus
Higher-Order and Symbolic Computation
Memory safety without garbage collection for embedded applications
ACM Transactions on Embedded Computing Systems (TECS)
Automatic pool allocation: improving performance by controlling data structure layout in the heap
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Static insertion of safe and effective memory reuse commands into ML-like programs
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
LOCKSMITH: context-sensitive correlation analysis for race detection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Dynamic state restoration using versioning exceptions
Higher-Order and Symbolic Computation
On the connection between functional programming languages and real-time Java scoped memory
JTRES '07 Proceedings of the 5th international workshop on Java technologies for real-time and embedded systems
Heap reference analysis using access graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Local reasoning about a copying garbage collector
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Formal Soundness Proof of Region-Based Memory Management for Object-Oriented Paradigm
ICFEM '08 Proceedings of the 10th International Conference on Formal Methods and Software Engineering
Abstracting access patterns of dynamic memory using regular expressions
ACM Transactions on Architecture and Code Optimization (TACO)
Region Analysis for Race Detection
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
A Verifier for Region-Annotated Java Bytecodes
Electronic Notes in Theoretical Computer Science (ENTCS)
Layout transformations for heap objects using static access patterns
CC'07 Proceedings of the 16th international conference on Compiler construction
Inserting safe memory reuse commands into ML-like programs
SAS'03 Proceedings of the 10th international conference on Static analysis
LOCKSMITH: Practical static race detection for C
ACM Transactions on Programming Languages and Systems (TOPLAS)
Bounded-latency regional garbage collection
Proceedings of the 7th symposium on Dynamic languages
Ribbons: a partially shared memory programming model
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
A path sensitive type system for resource usage verification of c like languages
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Purity and side effect analysis for java programs
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Dynamic memory management in the loci framework
ICCS'05 Proceedings of the 5th international conference on Computational Science - Volume Part II
A simple region inference algorithm for a first-order functional language
WFLP'09 Proceedings of the 18th international conference on Functional and Constraint Logic Programming
Hi-index | 0.00 |
Region Inference is a program analysis which infers lifetimes of values. It is targeted at a runtime model in which the store consists of a stack of regions and memory management predominantly consists of pushing and popping regions, rather than performing garbage collection. Region Inference has previously been specified by a set of inference rules which formalize when regions may be allocated and deallocated. This article presents an algorithm which implements the specification. We prove that the algorithm is sound with respect to the region inference rules and that it always terminates even though the region inference rules permit polymorphic recursion in regions. The algorithm is the result of several years of experiments with region inference algorithms in the ML Kit, a compiler from Standard ML to assembly language. We report on practical experience with the algorithm and give hints on how to implement it.