Static program analysis techniques working on object-oriented languages require precise knowledge of the aliasing relation between variables. This knowledge is important to, among other things, understand the read and write effects of method calls on objects. Understanding such effects in turn enables compiler optimizations and other code transformations such as automated parallelization. This thesis presents a combination of a pointer analysis with a memory effect analysis for the Scala programming language. Our analysis is based on abstract interpretation, and computes summaries of method effects as graphs. This representation allows the analysis to be compositional. Our second contribution is an implementation of our analysis in a tool called Insane. Our tool is built as a plugin for the official Scala compiler. It accepts any Scala program, and is freely available.
main.pdf
openaccess
1.22 MB
Adobe PDF
74e34b14f6d72f8215e138541b05e3a6