4 research outputs found
BISM: Bytecode-Level Instrumentation for Software Monitoring
BISM (Bytecode-Level Instrumentation for Software Monitoring) is a
lightweight bytecode instrumentation tool that features an expressive
high-level control-flow-aware instrumentation language. The language follows
the aspect-oriented programming paradigm by adopting the joinpoint model,
advice inlining, and separate instrumentation mechanisms. BISM provides
joinpoints ranging from bytecode instruction to method execution, access to
comprehensive static and dynamic context information, and instrumentation
methods. BISM runs in two instrumentation modes: build-time and load-time. We
demonstrate BISM effectiveness using two experiments: a security scenario and a
general runtime verification case. The results show that BISM instrumentation
incurs low runtime and memory overheads
BISM: Bytecode-Level Instrumentation for Software Monitoring
International audienceBISM (Bytecode-Level Instrumentation for Software Monitoring) is a lightweight Java bytecode instrumentation tool which features an expressive high-level control-flow-aware instrumentation language. The language follows the aspect-oriented programming paradigm by adopting the joinpoint model, advice inlining, and separate instrumentation mechanisms. BISM provides joinpoints ranging from bytecode instruction to method execution, access to comprehensive context information, and instrumentation methods. BISM runs in two modes: build-time and load-time. We demonstrate BISM effectiveness using two experiments: a security scenario and a general runtime verification case. The results show that BISM instrumentation incurs low runtime and memory overheads
Modular implicits
We present modular implicits, an extension to the OCaml language for ad-hoc
polymorphism inspired by Scala implicits and modular type classes. Modular
implicits are based on type-directed implicit module parameters, and elaborate
straightforwardly into OCaml's first-class functors. Basing the design on
OCaml's modules leads to a system that naturally supports many features from
other languages with systematic ad-hoc overloading, including inheritance,
instance constraints, constructor classes and associated types
Efficient and Expressive Bytecode-Level Instrumentation for Java Programs
We present an efficient and expressive tool for the instrumentation of Java programs at the bytecodelevel. BISM (Bytecode-Level Instrumentation for Software Monitoring) is a lightweight 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 advice and other instructions from the base program. We show several example applications for BISM and demonstrate its effectiveness using three experiments: a security scenario, a financial transaction system, and a general runtime verification case. The results show that BISM instrumentation incurs low runtime and memory overheads