Efficient compilation strategy for object‐oriented languages under the closed‐world assumption. (26th November 2012)
- Record Type:
- Journal Article
- Title:
- Efficient compilation strategy for object‐oriented languages under the closed‐world assumption. (26th November 2012)
- Main Title:
- Efficient compilation strategy for object‐oriented languages under the closed‐world assumption
- Authors:
- Sonntag, Benoît
Colnet, Dominique - Abstract:
- <abstract abstract-type="main" id="spe2174-abs-0001"> <title>SUMMARY</title> <p id="spe2174-para-0003">Reaching the best level of runtime performance from a high‐level, object‐oriented language is often considered challenging if not unattainable. The closed‐world assumption involves considering all of the source code of an application together at compile time. That assumption makes it possible to produce an efficient code. For instance, multiple inheritance can be implemented as efficiently as single inheritance. Our compilation strategy is the result of a prolonged project, tying together several compilation techniques: call graph analysis, dead code elimination, type flow analysis, code customization, implementation of dynamic dispatch, inlining, pointer optimization, switch optimization, objects layout, and so on. Merging all of these techniques into a global strategy appears to be quite problematic. Throughout the paper, two real‐world compilers are used as benchmarks to provide measurements for compiler writers to evaluate the applicability of our approach. Type flow analysis is a fundamental aspect of our strategy to resolve method calls. We have extended type flow analysis to deal with the content of arrays, enabling us to process additional expressions and thus making it possible to obtain a true global analysis. Typically, more than 90% of method call sites are statically resolved. Our experience indicates that the closed‐world assumption is suitable for numerous<abstract abstract-type="main" id="spe2174-abs-0001"> <title>SUMMARY</title> <p id="spe2174-para-0003">Reaching the best level of runtime performance from a high‐level, object‐oriented language is often considered challenging if not unattainable. The closed‐world assumption involves considering all of the source code of an application together at compile time. That assumption makes it possible to produce an efficient code. For instance, multiple inheritance can be implemented as efficiently as single inheritance. Our compilation strategy is the result of a prolonged project, tying together several compilation techniques: call graph analysis, dead code elimination, type flow analysis, code customization, implementation of dynamic dispatch, inlining, pointer optimization, switch optimization, objects layout, and so on. Merging all of these techniques into a global strategy appears to be quite problematic. Throughout the paper, two real‐world compilers are used as benchmarks to provide measurements for compiler writers to evaluate the applicability of our approach. Type flow analysis is a fundamental aspect of our strategy to resolve method calls. We have extended type flow analysis to deal with the content of arrays, enabling us to process additional expressions and thus making it possible to obtain a true global analysis. Typically, more than 90% of method call sites are statically resolved. Our experience indicates that the closed‐world assumption is suitable for numerous applications. Surprisingly, even library‐defined control statements from dynamic languages are perfectly processed with our strategy. The Smalltalk <monospace>ifTrue:ifFalse:</monospace>, <monospace>whileTrue:</monospace>, <monospace>to:do:</monospace>, and so on are, for the very first time, perfectly translated. Copyright © 2012 John Wiley &amp; Sons, Ltd.</p> </abstract> … (more)
- Is Part Of:
- Software, practice & experience. Volume 44:Number 5(2014)
- Journal:
- Software, practice & experience
- Issue:
- Volume 44:Number 5(2014)
- Issue Display:
- Volume 44, Issue 5 (2014)
- Year:
- 2014
- Volume:
- 44
- Issue:
- 5
- Issue Sort Value:
- 2014-0044-0005-0000
- Page Start:
- 565
- Page End:
- 592
- Publication Date:
- 2012-11-26
- Subjects:
- Computer software -- Periodicals
Computer programming -- Periodicals
Computer programs -- Periodicals
005.3 - Journal URLs:
- http://onlinelibrary.wiley.com/ ↗
- DOI:
- 10.1002/spe.2174 ↗
- Languages:
- English
- ISSNs:
- 0038-0644
- Deposit Type:
- Legaldeposit
- View Content:
- Available online (eLD content is only available in our Reading Rooms) ↗
- Physical Locations:
- British Library DSC - 8321.453000
British Library DSC - BLDSS-3PM
British Library STI - ELD Digital store - Ingest File:
- 3674.xml