【24h】

Practical Virtual Method Call Resolution for Java

机译:Java的实用虚拟方法调用解析

获取原文
获取原文并翻译 | 示例
获取外文期刊封面目录资料

摘要

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.
机译:本文解决了用Java字节码解决虚拟方法和接口调用的问题。主要重点是可用于分析大型应用程序的新实用技术。我们的基本设计目标是开发一种技术,该技术只需一次迭代即可解决,因此可以根据程序的大小进行线性缩放,同时提供比两种流行的现有线性技术(类层次分析和快速)更准确的结果类型分析。我们介绍了新技术的两个变体,即变量类型分析和称为声明类型分析的粗粒度版本。这两种分析都很便宜,易于实现,我们的实验结果表明,它们在程序的大小上呈线性增长。我们已经使用Soot框架实施了新的分析,并且我们报告了七个基准的经验结果。我们已经使用我们的技术为完整的应用程序(包括库)构建了准确的调用图,并且表明与使用类层次结构分析构建的保守调用图相比,我们的新变量类型分析可以删除大量的节点(方法),并且呼叫边缘。此外,我们的结果表明我们可以改善使用快速类型分析获得的压缩率。我们还提供对单态调用站点的动态测量,重点关注基准代码(不包括库)。我们证明,仅考虑基准代码时,快速类型分析和新的声明类型分析都不会比类层次结构分析增加太多精度。但是,我们更细粒度的变量类型分析确实可以解析更多的调用站点,尤其是对于对象使用更为复杂的程序。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号