Proceedings of the 15th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications 2000
DOI: 10.1145/353171.353191
|View full text |Cite
|
Sign up to set email alerts
|

A study of devirtualization techniques for a Java Just-In-Time compiler

Abstract: Many devirtualization techniques have been proposed to reduce the runtime overhead of dynamic method calls for various objectoriented languages, however, most of them are less effective or cannot be applied for Java in a straightforward manner. This is partly because Java is a statically-typed language and thus transforming a dynamic call to a static one does not make a tangible performance gain (owing to the low overhead of accessing the method table) unless it is inlined, and partly because the dynamic class… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
48
0

Year Published

2003
2003
2010
2010

Publication Types

Select...
3
3
3

Relationship

0
9

Authors

Journals

citations
Cited by 104 publications
(48 citation statements)
references
References 35 publications
0
48
0
Order By: Relevance
“…With leaves accounting for 1718 of the 2120 instantiated classes (2120 is the dynamic class count and thus does not match the static count shown in column three of Figure 3), the fol- lowing speculative optimization akin to copy on write may be worthy of investigation [10]. The optimization creates a specialized version of a class that assumes the class is final and injects a check to test if this assumption is ever violated.…”
Section: Resultsmentioning
confidence: 99%
See 1 more Smart Citation
“…With leaves accounting for 1718 of the 2120 instantiated classes (2120 is the dynamic class count and thus does not match the static count shown in column three of Figure 3), the fol- lowing speculative optimization akin to copy on write may be worthy of investigation [10]. The optimization creates a specialized version of a class that assumes the class is final and injects a check to test if this assumption is ever violated.…”
Section: Resultsmentioning
confidence: 99%
“…At the one end, dynamic distribution information obtained from a prior execution of a program has several immediate uses. For example, with the aim of increasing performance, heavily used classes could be favored with advantageous memory placement or additional resources, such as registers by the JIT [10]. Alternatively, testers might focus more attention on those classes with a higher frequency in the distribution.…”
Section: Introductionmentioning
confidence: 99%
“…Examples are all client applications that require a call graph as input, i.e., most types of inter-procedural program analysis. Other examples of SourceCode clients are: virtual call resolution to avoid dynamic dispatch and facilitate method inlining [9], [15], cast safety analysis to avoid unnecessary run-time type checking [9], [16], metrics-based analyses to compute coupling and cohesion metrics involving members and classes [17], [18], source code browsers that need to resolve various source code references, and software testing where class dependencies determine the test order [19]- [21].…”
Section: A Two Types Of Client Applicationsmentioning
confidence: 99%
“…It devirtualizes the dynamic dispatch by replacing the polymorphic call either by single static function call or conditional construct coupled with static function call. Kazuaki et al [10] has discussed several techniques regarding devirtualization of dynamic dispatch. Static analysis can be empowered by runtime profile information.…”
Section: Related Workmentioning
confidence: 99%