ACM Home Page
Please provide us with feedback. Feedback
Sealed calls in Java packages
Full text PdfPdf (193 KB)
Source Conference on Object Oriented Programming Systems Languages and Applications archive
Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications table of contents
Minneapolis, Minnesota, United States
Pages: 83 - 92  
Year of Publication: 2000
ISBN:1-58113-200-X
Also published in ...
Authors
Ayal Zaks  IBM Research Laboratory in Haifa, Israel
Vitaly Feldman  IBM Research Laboratory in Haifa, Israel
Nava Aizikowitz  IBM Research Laboratory in Haifa, Israel
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 5,   Downloads (12 Months): 33,   Citation Count: 11
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/353171.353177
What is a DOI?

ABSTRACT

Determining the potential targets of virtual method invocations is essential for inter-procedural optimizations of object-oriented programs. It is generally hard to determine such targets accurately. The problem is especially difficult for dynamic languages such as Java, because additional targets of virtual calls may appear at runtime. Current mechanisms that enable inter-procedural optimizations for dynamic languages, repeatedly validate the optimizations at runtime. This paper addresses this predicament by proposing a novel technique for conservative devirtualization analysis, which applies to a significant number of virtual calls in Java programs. Unlike previous work, our technique requires neither whole program analysis nor runtime information, and incurs no runtime overhead. Our solution is very efficient to compute and is based on a newly introduced, seemingly unrelated security feature of Java file archives. On average, our analysis "seals" (safely devirtualizes) about 39% of the virtual calls (to non-final methods) that appear in SPECjvm98 programs, and about 29% of the calls invoked while executing these programs. In the runtime library rt.jar, about 10% of the packages contain a significant percentage (20--60%) of sealed calls, with a total average of about 8.5%. Most of these calls are also shown to be monomorphic, a fact which can be safely exploited by aggressive inter-procedural optimizations such as direct inlining. These results indicate that our technique has a strong potential for enhancing the analysis and optimization of Java programs.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
 
2
3
4
 
5
6
 
7
Z. Budimlic and K. Kennedy. Prospects for scientific computing in polymorphic, object-oriented style. In Proceedings of the 9th SIAM Conference on Parallel Processing for Scientific Computing, March 1999.
8
9
10
 
11
12
 
13
14
15
 
16
N. Feinberg, S. E. Keene, R. O. Mathews, and P. T. Withington. The Dylan Programming Book. Addison-Wesley, 1997.
 
17
E. Gagnon and L. Hendren. Intra-procedural inference of static types for java bytecode. Technical Report 1999-1, Sable Research Group, McGill University, March 1999.
 
18
 
19
20
 
21
22
 
23
The java hotspot performance engine architecture. Available at http://-www. javasoft.com/products/hotspot/whitepaper.html, April 1999.
24
 
25
Jigsaw - the w3c's web server. Available at http://www.w3c.org/Jigsaw.
 
26
Jove super optimizing deployment environment for java. Available at http://www.instantiations.com/jove/jovereport.htm.
 
27
28
 
29
H. D. Pande and B. G. Ryder. Static type determination for c++. In Proceedings of the Sixth Usenix C++ Technical Conference, pages 85-97, April 1994.
 
30
S. Porat, D. Bernstein, Y. Fedorov, J. Rodrigue, and E. Yahav. Compiler optimization of c++ virtual function calls. In Proceedings of the Second Conference on Object-Oriented Technologies and Systems (COOTS), pages 3-14, Jun 1996.
 
31
 
32
Spec jvm98 benchmarks. Available at http://www.spec.org/osg/jvm98, August 1998.
33
 
34
Sun Microsystems. Java 2 Software Development Kit version 1.2.2, July 1999. Available at http://java.sun.com/products/jdk/1.2/, See there docs/guide/extensions/spec.html#sealing.
 
35
V. Sundaresan, L. Hendren, C. Razafimahefa, R. Valle-Rai, P. Lam, E. Gagnon, and C. Godin. Practical virtual method call resolution for java. Technical Report 1999-4, Sable Research Group, McGill University, Nov 1999.
36
 
37
Towerj3 - a new generation native java compiler and runtime environment. Available at http://www.towerj.com/products/- whitepapergnj.shtml and also whitepapers3.shtml.
 
38
39

CITED BY  11

Collaborative Colleagues:
Ayal Zaks: colleagues
Vitaly Feldman: colleagues
Nava Aizikowitz: colleagues