Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3135932.3135947acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Devirtualization in LLVM

Published: 22 October 2017 Publication History

Abstract

Devirtualization is an optimization changing indirect (virtual) calls to direct calls. It improves performance by allowing extra inlining and removal of redundant loads. This paper presents a novel way of handling C++ devirtualization in LLVM by unifying virtual table loads across calls using different SSA values to represent different dynamic types.

References

[1]
2017. Working Draft, Standard for Programming Language C++:Objects lifetime. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf. (21 March 2017).
[2]
Brad Calder and Dirk Grunwald. 1994. Reducing Indirect Function Call Overhead in C++ Programs. In Proceedings of the 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '94). ACM, New York, NY, USA, 397-408.
[3]
Peter Collingbourne. 2017. Devirtualization using LTO with Clang. https://clang.llvm.org/docs/LTOVisibility.html. (16 March 2017).
[4]
Jan Hubicka. 2014. Devirtualization in C++. (2014). http://hubicka.blogspot.com/2014/01/devirtualization-in-c-part-1.html
[5]
Jose A. Joao, Onur Mutlu, Hyesoon Kim, Rishi Agarwal, and Yale N. Patt. 2008. Improving the Performance of Object-oriented Languages with Dynamic Predication of Indirect Jumps. SIGOPS Oper. Syst. Rev. 42, 2 (March 2008), 80-90.
[6]
Hyesoon Kim, José A. Joao, Onur Mutlu, Chang Joo Lee, Yale N. Patt, and Robert Cohn. 2007. VPC Prediction: Reducing the Cost of Indirect Branches via Hardware-based Dynamic Devirtualization. SIGARCH Comput. Archit. News 35, 2 (June 2007), 424-435.
[7]
Jason Mccandless and David Gregg. 2012. Compiler Techniques to Improve Dynamic Branch Prediction for Indirect Jump and Call Instructions. ACM Trans. Archit. Code Optim. 8, 4, Article 24 (Jan. 2012), 20 pages.

Cited By

View all
  • (2022)Devirtualization for static analysis with low level intermediate representation2022 Ivannikov Ispras Open Conference (ISPRAS)10.1109/ISPRAS57371.2022.10076859(18-23)Online publication date: 1-Dec-2022
  • (2022)Verifying Dynamic Trait Objects in Rust2022 IEEE/ACM 44th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP)10.1109/ICSE-SEIP55303.2022.9794041(321-330)Online publication date: May-2022
  • (2021)HerQules: securing programs via hardware-enforced message queuesProceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3445814.3446736(773-788)Online publication date: 19-Apr-2021
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SPLASH Companion 2017: Proceedings Companion of the 2017 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity
October 2017
56 pages
ISBN:9781450355148
DOI:10.1145/3135932
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 October 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. C++
  2. devirtualization
  3. indirect call
  4. llvm
  5. virtual function

Qualifiers

  • Research-article

Conference

SPLASH '17
Sponsor:

Acceptance Rates

Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)35
  • Downloads (Last 6 weeks)1
Reflects downloads up to 01 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2022)Devirtualization for static analysis with low level intermediate representation2022 Ivannikov Ispras Open Conference (ISPRAS)10.1109/ISPRAS57371.2022.10076859(18-23)Online publication date: 1-Dec-2022
  • (2022)Verifying Dynamic Trait Objects in Rust2022 IEEE/ACM 44th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP)10.1109/ICSE-SEIP55303.2022.9794041(321-330)Online publication date: May-2022
  • (2021)HerQules: securing programs via hardware-enforced message queuesProceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3445814.3446736(773-788)Online publication date: 19-Apr-2021
  • (2020)Optimizations in C++ compilersCommunications of the ACM10.1145/336975463:2(41-49)Online publication date: 22-Jan-2020
  • (2019)Chaos: a System for Criticality-Aware, Multi-Core Coordination2019 IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)10.1109/RTAS.2019.00015(77-89)Online publication date: Apr-2019

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media