Deriving code coverage information from profiling data recorded for a trace-based just-in-time compiler

Hanspeter Mössenböck, Christian Häubl, Christian Wimmer

Research output: Chapter in Book/Report/Conference proceedingConference proceedingspeer-review

Abstract

Code coverage information is typically recorded by adding instru- mentation to an application before or during execution. However, this has the disadvantage that the instrumentation decreases the per- formance. A high-performance virtual machine (VM), such as Oracle’s Java HotSpot VM, is already designed to record profiling data for the executed application. This profiling data is intended to guide optimizations during just-in-time (JIT) compilation. In this paper, we propose a runtime system that allows deriving exact code cover- age information from this recorded profiling data by guaranteeing certain system properties. With this approach, we avoid the has- sle of instrumenting the application explicitly. Therefore, we mini- mize both the run-time overhead and the implementation effort for recording code coverage information. We implemented our approach for a variant of the Java HotSpot VM that uses a trace-based JIT compiler. However, our approach is simple and general enough to be applicable to most modern VMs. Our evaluation with industry-strength benchmark suites shows that this approach allows recording code coverage information while retaining almost full peak performance. So, our approach is also suitable for collecting code coverage information in day-to-day operation environments such as long running server applications.
Original languageEnglish
Title of host publicationPPPJ´13 Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
PublisherACM New York
Pages1-12
Number of pages12
ISBN (Print)9781450321112
DOIs
Publication statusPublished - 2013

Fields of science

  • 102 Computer Sciences
  • 102009 Computer simulation
  • 102011 Formal languages
  • 102013 Human-computer interaction
  • 102029 Practical computer science
  • 102022 Software development
  • 102024 Usability research

JKU Focus areas

  • Computation in Informatics and Mathematics
  • Engineering and Natural Sciences (in general)

Cite this