Garbage-free Abstract Interpretation through Abstract Reference Counting
This artifact is a modified version of Scala-AM, an abstract interpretation framework implemented in Scala. Specifically, we extended Scala-AM with several implementations of machine abstractions that each employ a different approach to abstract garbage collection. These include traditional (tracing-based) approaches to abstract GC, as well as our own novel approach using abstract reference counting. In particular, using the machine abstraction that employs abstract reference counting (with cycle detection) results in a garbage-free abstract interpreter can greatly improve both precision and performance of the corresponding machine abstraction in the original version of the Scala-AM framework.
We have set up the framework in such a way that one can easily run a variety of experiments to evaluate and compare these approaches to abstract GC. This artifact contains documentation on how these experiments can be configured, specifically to reproduce the results presented in the companion paper.