Student project

Toward Interprocedural Pointer and Effect Analysis for Scala

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.

Related material