Making Pointer Analysis More Precise by Unleashing the Power of Selective Context Sensitivity 147:19 100% 80% 60% 40% 202 513:.952E01 galleon jedit soot gruntspud heritrix 609 0 20% 107982 6086Z 255857 216662 01T5 002500 021101 0% pmd jython jasperreports eclipse briss columba ■COLLECTION ■ZIPPER ■SCALER ■BATON(Unity) Fig.7.May-alias variable pairs(Aliases),normalized to highest.BATON(Unity)consistently finds a significant proportion of previously-reported alias pairs to be spurious. Scalability.CoLLECTION,ZIPPER and SCALER can analyze all 13 programs within time budget, demonstrating their extremely good scalability.As for BAToN(Unity),even though it chooses the most precise configuration for all methods selected by all approaches in BAToN,it is still able to scale for 12 out of 13 hard-to-analyze programs as shown in Table 1,validating the insights of Section 3.2.The only exception is h2,which will be handled by BAToN(Relay)as shown in Section 6.2.Although our focus is precision,it is worth pointing out that BAToN(Unity)is always more precise but not always slower.For galleon,heritrix,soot,jasperreports and columba, BATON(Unity)is faster than at least one of the state-of-the-art systems.For galleon and soot, BATON(Unity)is even faster than all other analyses including CI!Such surprising performance advantages stem from the significant precision improvements of BAToN(Unity). 6.2 RQ2.Precision and Scalability of BATON(Relay). We evaluate how BAToN(Relay),as the second punch of BAToN,performs in practice when BATON (Unity)is not scalable.With default settings of ZIPPER and SCALER,BATON (Unity)can scale for all programs except for h2(Section 6.1).However,to thoroughly evaluate BATON(Relay),we need to examine more such cases.ZIPPER and SCALER are tunable,i.e.,they both provide options to tune the analysis for different precision and efficiency trade-offs.Specifically,ZIPPERe can be configured by a percentage value,PV,which corresponds to the threshold for identifying scalability-threat Proc.ACM Program.Lang.,Vol.5,No.OOPSLA,Article 147.Publication date:October 2021.Making Pointer Analysis More Precise by Unleashing the Power of Selective Context Sensitivity 147:19 25,676,463 8,650,411 12,096,236 6,905,176 338,974,351 330,526,330 383,443,213 110,490,509 66,401,696 59,605,295 61,720,584 52,291,827 744,789,961 859,999,654 817,587,505 579,686,802 103,258,215 104,660,677 100,355,028 81,988,438 71,227,109 78,727,889 80,018,315 20,679,819 0% 20% 40% 60% 80% 100% hsqldb galleon jedit soot gruntspud heritrix 28,677,101 29,809,145 28,460,705 24,976,066 148,452,466 142,634,911 134,214,889 129,984,727 151,406,154 258,484,882 176,489,911 74,908,878 70,520,064 90,933,963 73,208,882 62,570,596 101,712,404 85,183,405 101,195,279 79,503,155 109,500,746 264,213,761 122,951,398 85,365,064 0% 20% 40% 60% 80% 100% pmd jython jasperreports eclipse briss columba CCollection OLLECTION ZZipper-e IPPER Scaler Baton (Unity) e SCALER BATON (Unity) Fig. 7. May-alias variable pairs (Aliases), normalized to highest. Baton (Unity) consistently finds a significant proportion of previously-reported alias pairs to be spurious. Scalability. Collection, Zipper𝑒 and Scaler can analyze all 13 programs within time budget, demonstrating their extremely good scalability. As for Baton (Unity), even though it chooses the most precise configuration for all methods selected by all approaches in Baton, it is still able to scale for 12 out of 13 hard-to-analyze programs as shown in Table 1, validating the insights of Section 3.2. The only exception is h2, which will be handled by Baton (Relay) as shown in Section 6.2. Although our focus is precision, it is worth pointing out that Baton (Unity) is always more precise but not always slower. For galleon, heritrix, soot, jasperreports and columba, Baton (Unity) is faster than at least one of the state-of-the-art systems. For galleon and soot, Baton (Unity) is even faster than all other analyses including CI! Such surprising performance advantages stem from the significant precision improvements of Baton (Unity). 6.2 RQ2. Precision and Scalability of Baton (Relay). We evaluate how Baton (Relay), as the second punch of Baton, performs in practice when Baton (Unity) is not scalable. With default settings of Zipper𝑒 and Scaler, Baton (Unity) can scale for all programs except for h2 (Section 6.1). However, to thoroughly evaluate Baton (Relay), we need to examine more such cases. Zipper𝑒 and Scaler are tunable, i.e., they both provide options to tune the analysis for different precision and efficiency trade-offs. Specifically, Zipper𝑒 can be configured by a percentage value, PV, which corresponds to the threshold for identifying scalability-threat Proc. ACM Program. Lang., Vol. 5, No. OOPSLA, Article 147. Publication date: October 2021