A practical framework for the abstract interpretation of logic programs
Journal of Logic Programming
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On copy avoidance in single assignment languages
ICLP'93 Proceedings of the tenth international conference on logic programming on Logic programming
Live-structure dataflow analysis for Prolog
ACM Transactions on Programming Languages and Systems (TOPLAS)
Region-based memory management
Information and Computation
Compile-time memory reuse in logic programming languages through update in place
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program analysis, debugging, and optimization using the ciao system preprocessor
Proceedings of the 1999 international conference on Logic programming
Global Analysis of Standard Prolog Programs
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Run Time Type Information in Mercury
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
A Model for Inter-module Analysis and Optimizing Compilation
LOPSTR '00 Selected Papers form the 10th International Workshop on Logic Based Program Synthesis and Transformation
CP '99 Proceedings of the 5th International Conference on Principles and Practice of Constraint Programming
A Module Based Analysis for Memory Reuse in Mercury
CL '00 Proceedings of the First International Conference on Computational Logic
Logic Programming for Software Engineering: A Second Chance
ICLP '02 Proceedings of the 18th International Conference on Logic Programming
On Enabling the WAM with Region Support
ICLP '02 Proceedings of the 18th International Conference on Logic Programming
Static region analysis for mercury
ICLP'07 Proceedings of the 23rd international conference on Logic programming
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Hi-index | 0.00 |
Compile-time garbage collection (CTGC) is still a very uncommon feature within compilers. In previous work we have developed a compile-time structure reuse system for Mercury, a logic programming language. This system indicates which datastructures can safely be reused at run-time. As preliminary experiments were promising, we have continued this work and have now a working and well performing near-to-ship CTGC-system built into the Melbourne Mercury Compiler (MMC).In this paper we present the multiple design decisions leading to this system, we report the results of using CTGC for a set of benchmarks, including a real-world program, and finally we discuss further possible improvements. Benchmarks show substantial memory savings and a noticeable reduction in execution time.