Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation 2000
DOI: 10.1145/349299.349326
|View full text |Cite
|
Sign up to set email alerts
|

A framework for interprocedural optimization in the presence of dynamic class loading

Abstract: Dynamic class loading during program execution in the Java TM Programming Language is an impediment for generating code that is as e cient as code generated using static wholeprogram analysis and optimization. Whole-program analysis and optimization is possible for languages, such a s C + + , that do not allow new classes and/or methods to be loaded during program execution. One solution for performing wholeprogram analysis and avoiding incorrect execution after a new class is loaded is to invalidate and recom… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

0
22
0

Year Published

2002
2002
2012
2012

Publication Types

Select...
5
2
1

Relationship

0
8

Authors

Journals

citations
Cited by 45 publications
(22 citation statements)
references
References 28 publications
0
22
0
Order By: Relevance
“…Because the receiver could have been created anywhere in the program, a sound algorithm must either analyze the whole program [1,6,17,21,34], or make very conservative assumptions about the receiver type (e.g., Class Hierarchy Analysis [9]). Additionally, due to the large sizes of common libraries, whole-program analysis of even trivial programs is expensive [7,27,28]. Practical programs generally have many library dependencies, and in many cases, the whole program may not even be available for static analysis.…”
Section: Introductionmentioning
confidence: 99%
“…Because the receiver could have been created anywhere in the program, a sound algorithm must either analyze the whole program [1,6,17,21,34], or make very conservative assumptions about the receiver type (e.g., Class Hierarchy Analysis [9]). Additionally, due to the large sizes of common libraries, whole-program analysis of even trivial programs is expensive [7,27,28]. Practical programs generally have many library dependencies, and in many cases, the whole program may not even be available for static analysis.…”
Section: Introductionmentioning
confidence: 99%
“…This design choice simplifies our notation considerably. Note here that Sreedhar, Burke, and Choi [12] showed that in practice there are many inlinings that cannot be invalidated by class loading. Such stable inlinings are called unconditionally-monomorphic call sites.…”
Section: Our Resultsmentioning
confidence: 94%
“…For example, the 1 INTRODUCTION preexistence analysis of Detlefs and Agesen [5] determines a set of methods for which on-the-fly changes to the stack will not be needed (recompilation is needed for future method invocations). Additionally, the extant analysis of Sreedhar, Burke, and Choi [12] determines a set of method inlinings which cannot be invalidated by class loading. Still, aggressive inlining and class loading will inevitably require updates of the code memory, the stack memory, or both.…”
Section: Dynamic Class Loadingmentioning
confidence: 99%
See 1 more Smart Citation
“…Although the analyses as described reflect this compilation model, it would be straightforward to use extant analysis [184] to apply transformations to only the closed-world portions of a program which used dynamic class loading. The space allocated to the class index could be updated during garbage collection as new classes are discovered.…”
Section: Class Loading and Reflectionmentioning
confidence: 99%