Practical virtual method call resolution for Java']Java

被引:85
|
作者
Sundaresan, V [1 ]
Hendren, L [1 ]
Razafimahefa, C [1 ]
Vallée-Rai, R [1 ]
Lam, P [1 ]
Gagnon, E [1 ]
Godin, C [1 ]
机构
[1] McGill Univ, Sch Comp Sci, Sable Res Grp, Montreal, PQ H3A 2A7, Canada
关键词
D O I
10.1145/354222.353189
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
This paper addresses the problem of resolving virtual method and interface calls in Java bytecode. The main focus is on a new practical technique that can be used to analyze large applications. Our fundamental design goal was to develop a technique that can be solved with only one iteration, and thus scales linearly with the size of the program, while at the same time providing more accurate results than two popular existing linear techniques, class hierarchy analysis and rapid type analysis. We present two variations of our new technique, variable-type analysis and a coarser-grain version called declared-type analysis. Both of these analyses are inexpensive, easy to implement, and our experimental results show that they scale linearly in the size of the program. We have implemented our new analyses using the Soot framework, and we report on empirical results for seven benchmarks. We have used our techniques to build accurate call graphs for complete applications (including libraries) and we show that compared to a conservative call graph built using class hierarchy analysis, our new variable-type analysis can remove a significant number of nodes (methods) and call edges. Further, our results show that we can improve upon the compression obtained using rapid type analysis. We also provide dynamic measurements of monomorphic call sites, focusing on the benchmark code excluding libraries. We demonstrate that when considering only the benchmark code, both rapid type analysis and our new declared-type analysis do not add much precision over class hierarchy analysis. However, our finer-grained variable-type analysis does resolve significantly more call sites, particularly for programs with more complex uses of objects.
引用
下载
收藏
页码:264 / 280
页数:17
相关论文
共 50 条
  • [1] TFA: an efficient and precise virtual method call resolution for Java']Java
    Zhuo, Xilong
    Zhang, Chenyi
    FORMAL ASPECTS OF COMPUTING, 2020, 32 (4-6) : 395 - 416
  • [2] Method call acceleration in embedded Java']Java virtual machines
    Debbabi, M
    Erhioui, M
    Ketari, L
    Tawbi, N
    Yahyaoui, H
    Zhioua, S
    COMPUTATIONAL SICENCE - ICCS 2003, PT III, PROCEEDINGS, 2003, 2659 : 750 - 759
  • [3] A practical method for watermarking Java']Java programs
    Monden, A
    Iida, H
    Matsumoto, K
    Inoue, K
    Torii, K
    24TH ANNUAL INTERNATIONAL COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE (COSPSAC 2000), 2000, 24 : 191 - 197
  • [4] Specifying and checking method call sequences of Java']Java programs
    Cheon, Yoonsik
    Perumandla, Ashaveena
    SOFTWARE QUALITY JOURNAL, 2007, 15 (01) : 7 - 25
  • [5] Tail Call Elimination and Data Representation for Functional Languages on the Java']Java Virtual Machine
    Madsen, Magnus
    Zarifi, Ramin
    Lhotak, Ondrej
    CC'18: PROCEEDINGS OF THE 27TH INTERNATIONAL CONFERENCE ON COMPILER CONSTRUCTION, 2018, : 139 - 150
  • [6] Formalizing the safety of Java']Java, the Java']Java virtual machine, and Java']Java card
    Hartel, PH
    Moreau, L
    ACM COMPUTING SURVEYS, 2001, 33 (04) : 517 - 558
  • [7] Tuning branch predictors to support virtual method invocation in Java']Java
    Vijaykrishnan, N
    Ranganathan, N
    PROCEEDINGS OF THE FIFTH USENIX CONFERENCE ON OBJECT-ORIENTED TECHNOLOGIES AND SYSTEMS (COOTS '99), 1999, : 217 - 228
  • [8] On a new method for dataflow analysis of Java']Java Virtual Machine subroutines
    Hagiya, M
    Tozawa, A
    STATIC ANALYSIS, 1998, 1503 : 17 - 32
  • [9] Asynchronous Java']Java accelerator for embedded Java']Java virtual machine
    Liang, Z
    Plosila, J
    Sere, K
    PROCEEDINGS OF THE IEEE 6TH CIRCUITS AND SYSTEMS SYMPOSIUM ON EMERGING TECHNOLOGIES: FRONTIERS OF MOBILE AND WIRELESS COMMUNICATION, VOLS 1 AND 2, 2004, : 253 - 256
  • [10] Practical extraction techniques for Java']Java
    Tip, F
    Sweeney, PF
    Laffra, C
    Eisma, A
    Streeter, D
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2002, 24 (06): : 625 - 665