Lecture Notes in Computer Science vol:4670 pages:317-332
23rd International Conference on Logic Programming location:Porto, Portugal date:September 8-13, 2007
Region-based memory management is a form of compile-time memory
management, well-known from the functional programming world.
This paper describes a static region analysis for the logic
programming language Mercury. We use region points-to graphs to
model the partitioning of the memory used by a program into
separate regions. The algorithm starts with a region points-to
analysis that determines the different regions in the program. We then
compute the liveness of the regions by using an extended live
variable analysis. Finally, a program transformation adds region
annotations to the program for region support. These annotations
generate data for a region simulator that generates reports on the memory
behaviour of region-annotated programs. Our approach obtains good memory
consumption for several benchmark programs; for some of them it achieves
optimal memory management.