Scalable Pointer Analysis of Data Structures Using Semantic Models
Pointer analysis is widely used as a base for different kinds of static analyses and compiler optimizations. Designing a scalable pointer analysis with acceptable precision for use in production compilers is still an open question. Modern object oriented languages like Java and Scala promote abstractions and code reuse, both of which make it difficult to achieve precision. Collections are an example of a pervasively used component in such languages. But analyzing collection implementations with full context sensitivity leads to prohibitively long analysis times.
We use semantic models to reduce the complex internal implementation of, e.g., a collection to a small and concise model. Analyzing the model with context sensitivity leads to precise results with only a modest increase in analysis time. The models must are written manually, which is feasible because a model method usually consists of only a few statements. In addition to the context sensitive analysis of the model methods, the original methods are analyzed without context to ensure soundness. Our implementation in the static analysis of GraalVM Native Image shows a rise in useful precision (1.35X rise in the number of checkcast statements that can be elided over the default analysis configuration) with a manageable performance cost (19% rise in analysis time).
Sun 23 Feb Times are displayed in time zone: Pacific Time (US & Canada) change
08:30 - 10:00
|Mix Your Contexts Well: Opportunities Unleashed by Recent Advances in Scaling Context-Sensitivity|
|Secure Delivery of Program Properties Through Optimizing Compilation|
|Scalable Pointer Analysis of Data Structures Using Semantic Models|
|Vectorization-Aware Loop Unrolling with Seed Forwarding|