Detail publikace
SkipFlow: Improving the Precision of Points-to Analysis using Primitive Values and Predicate Edges
points-to analýza, statická analýza, analýza ukazatelů, překladač, optimalizace
Typická points-to analýza, jako je Andersenova nebo Steensgaardova, může ztrácet
na přesnosti, protože ignoruje strukturu větvení analyzovaného programu. Kromě
toho se analýza points-to typicky zaměřuje pouze na objekty a nebere v úvahu
instrukce manipulující s primitivními hodnotami. Tvrdíme, že takový přístup vede
ke zbytečné ztrátě přesnosti, například když se z volání metod vracejí primitivní
konstanty true a false. Navrhujeme novou rychlou points-to analýzu nazvanou
SkipFlow, která interprocedurálně sleduje tok primitivních hodnot i objektů
a explicitně zachycuje strukturu větvení kódu pomocí predikátových hran. Zároveň
je však SkipFlow na rozdíl od tradiční analýzy citlivé na tok rychlý a lépe
škálovatelný. SkipFlow aplikujeme na GraalVM Native Image, uzavřené řešení pro
sestavování samostatných binárních souborů pro aplikace v jazyce Java.
Implementaci vyhodnocujeme pomocí sady aplikací mikroslužeb i známých sad
benchmarků. Ukazujeme, že SkipFlow snižuje velikost aplikace z hlediska
dosažitelných metod v průměru o 9 %, aniž by se výrazně prodloužila doba
analýzy.
@inproceedings{BUT193310,
author="KOZÁK, D. and STANCU, C. and VOJNAR, T. and WIMMER, C.",
title="SkipFlow: Improving the Precision of Points-to Analysis using Primitive Values and Predicate Edges",
booktitle="Proceedings of the 23rd ACM/IEEE International Symposium on Code Generation and Optimization",
year="2025",
pages="347--361",
publisher="Association for Computing Machinery",
address="New York",
doi="10.1145/3696443.3708932",
isbn="979-8-4007-1275-3",
url="https://dl.acm.org/doi/10.1145/3696443.3708932"
}