Chapter 1.Introduction 4 We introduce BEAN to improve the precision of points-to analysis with small overhead increases. -BEAN is a new object-sensitivity approach for points-to analysis.Object- sensitivity [53,55,75]is usually considered as the most precise context- sensitivity for points-to analysis for Java [34].BEAN further improves its precision by automatically identifying and eliminating the redundant context elements in distinguishing contexts.Unlike traditional object- sensitivity,which obtains better precision by increasing the limit of con- text length k with usually significantly worse efficiency,BEAN is able to achieve better precision with still the same k-limiting at only small increases in analysis cost. - We thoroughly evaluate the effectiveness of BEAN by comparing it with traditional object-sensitivity [53,75]and the state-of-art hybrid context- sensitivity [34]for points-to analysis.Our evaluation shows that BEAN can always achieve better precision with small increases in analysis cost for real-world Java programs in practice. We introduce MAHJONG to significantly improve the efficiency of points- to analysis while maintaining nearly the same precision for type-dependent clients such as call graph construction. MAHJONG is a new heap abstraction that models the heap by iden- tifying and merging type-consistent objects,which are distinguished by the mainstream allocation-site-based points-to analysis.However, the allocation-site-based heap abstraction often over-partitions the heap without improving the precision much for an important class of type- dependent clients such as call graph construction,devirtualization andChapter 1. Introduction 4 • We introduce Bean to improve the precision of points-to analysis with small overhead increases. – Bean is a new object-sensitivity approach for points-to analysis. Objectsensitivity [53, 55, 75] is usually considered as the most precise contextsensitivity for points-to analysis for Java [34]. Bean further improves its precision by automatically identifying and eliminating the redundant context elements in distinguishing contexts. Unlike traditional objectsensitivity, which obtains better precision by increasing the limit of context length k with usually significantly worse efficiency, Bean is able to achieve better precision with still the same k-limiting at only small increases in analysis cost. – We thoroughly evaluate the effectiveness of Bean by comparing it with traditional object-sensitivity [53, 75] and the state-of-art hybrid contextsensitivity [34] for points-to analysis. Our evaluation shows that Bean can always achieve better precision with small increases in analysis cost for real-world Java programs in practice. • We introduce Mahjong to significantly improve the efficiency of pointsto analysis while maintaining nearly the same precision for type-dependent clients such as call graph construction. – Mahjong is a new heap abstraction that models the heap by identifying and merging type-consistent objects, which are distinguished by the mainstream allocation-site-based points-to analysis. However, the allocation-site-based heap abstraction often over-partitions the heap without improving the precision much for an important class of typedependent clients such as call graph construction, devirtualization and