Efficient and Expressive Bytecode-Level Instrumentation for Java Programs
Chukri Soueidi, Marius Monnier, Ali Kassem, Yli\`es Falcone (Univ., Grenoble Alpes, Inria, CNRS, Grenoble INP, LIG, Grenoble, France)

TL;DR
This paper introduces BISM, a lightweight, high-level bytecode instrumentation tool for Java that enables flexible, context-aware program monitoring with low overhead, supporting build-time and load-time modes.
Contribution
The paper presents BISM, a novel bytecode instrumentation framework with an expressive control-flow-aware language and collision detection, enhancing Java program monitoring capabilities.
Findings
Low runtime overhead demonstrated in experiments
Supports static and dynamic context information
Effective in security, financial, and verification scenarios
Abstract
We present an efficient and expressive tool for the instrumentation of Java programs at the bytecode-level. BISM (Bytecode-Level Instrumentation for Software Monitoring) is a light-weight Java bytecode instrumentation tool that features an expressive high-level control-flow-aware instrumentation language. The language is inspired by the aspect-oriented programming paradigm in modularizing instrumentation into separate transformers, that encapsulate joinpoint selection and advice inlining. BISM allows capturing joinpoints ranging from bytecode instructions to methods execution and provides comprehensive static and dynamic context information. It runs in two instrumentation modes: build-time and load-time. BISM also provides a mechanism to compose transformers and automatically detect their collision in the base program. Transformers in a composition can control the visibility of their…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
