2005
DOI: 10.5381/jot.2005.4.8.a2
|View full text |Cite
|
Sign up to set email alerts
|

Method Inlining, Dynamic Class Loading, and Type Soundness.

Abstract: Method inlining is an optimisation that can be invalidated by later class loading. A program analysis based on the current loaded classes might determine that a method call has a unique target, but later class loading could add targets. If a compiler speculatively inlines methods based on current information, then it will have to undo the inlining when later classes invalidate the assumptions. The problem with undoing inlining is that the optimised code might be executing at the time of undo and therefore requ… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
4
0

Year Published

2005
2005
2020
2020

Publication Types

Select...
3
2
1

Relationship

1
5

Authors

Journals

citations
Cited by 6 publications
(5 citation statements)
references
References 17 publications
0
4
0
Order By: Relevance
“…How effective this might be is beyond the scope of this paper. More recent work [11] has extended our ideas to a dynamic class loading environment with a just-in-time compiler. Note also that our flow analyses are context insensitive and we leave context-sensitive flow analyses to future work.…”
Section: Our Resultsmentioning
confidence: 98%
“…How effective this might be is beyond the scope of this paper. More recent work [11] has extended our ideas to a dynamic class loading environment with a just-in-time compiler. Note also that our flow analyses are context insensitive and we leave context-sensitive flow analyses to future work.…”
Section: Our Resultsmentioning
confidence: 98%
“…The former ensures that JShrink does not introduce code duplication during inlining, while the latter is crucial for semantic preservation in case of polymorphism. Type safety of method inlining is widely discussed in the compiler literature [24,25]. To ensure type safety, JShrink applies three constraints.…”
Section: Bytecode Debloating Transformationsmentioning
confidence: 99%
“…Further research looked at performing dependency analysis to identify which methods are affected by the newly added definitions, to be then recompiled on demand [Nguyen and Xue 2005]. Glew [2005] describes a type-safe means of inlining and devirtualization: when newly loaded code is reachable from previously optimized code, these optimizations must be rechecked.…”
Section: Related Workmentioning
confidence: 99%
“…For example, Politz et al [2012] described the ECMAScript 5.1 semantics for eval, among other features. Glew [2005] formalized dynamic class loading in the framework of Featherweight Java, and Matthews and Findler [2008] developed a calculus for eval in Scheme. These works formalize the semantics of dynamically modifiable code in their respective languages, but, unlike Julia, the languages formalized do not have features explicitly designed to support efficient implementation.…”
Section: Related Workmentioning
confidence: 99%