In program analysis, a polyvariant or context-sensitive analysis (as opposed to a monovariant or context-insensitive analysis) analyzes each function multiple times—typically once at each call site—to improve the precision of the analysis.[1] Polyvariance is common in data-flow and pointer analyses.
Forms of polyvariance include:
- Call-site sensitivity[2]
- The Cartesian product algorithm[3]
- Object sensitivity[2]
- Type sensitivity[2]
The first two are more often used for dataflow analyses, the latter two are more frequently used for pointer analyses.
References
edit- ^ Palsberg, Jens; Pavlopoulou, Christina (2001). "From Polyvariant Flow Information to Intersection and Union Types". Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '98). 11 (3): 197–208. CiteSeerX 10.1.1.36.4441. doi:10.1017/S095679680100394X. S2CID 16895848.
- ^ a b c Smaragdakis & Balatsouras 2015.
- ^ Gilray, Thomas; Adams, Michael D.; Might, Matthew (2016-09-04). "Allocation characterizes polyvariance: A unified methodology for polyvariant control-flow analysis". Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming. ICFP 2016. New York, NY, USA: Association for Computing Machinery. pp. 407–420. doi:10.1145/2951913.2951936. ISBN 978-1-4503-4219-3. S2CID 7768606.
Sources
edit- Smaragdakis, Yannis; Balatsouras, George (2015). "Pointer Analysis" (PDF). Foundations and Trends in Programming Languages. 2 (1): 1–69. doi:10.1561/2500000014. Retrieved May 30, 2019.