Sub-Method Reflection.
Marcus Denker, Sté́phane Ducasse, Adrian Lienhard, Philippe Marschall · The Journal of Object Technology · 2007
Reflection has proved to be a powerful feature to support the design of development environments and to extend languages.However, the granularity of structural reflection stops at the method level.This is a problem since without sub-method reflection developers have to duplicate efforts, for example to introduce transparently pluggable type-checkers or fine-grained profilers.In this paper we present Persephone, an efficient implementation of a sub-method meta-object protocol (MOP) based on AST annotations and dual methods (a compiled method and its meta-object) that reconcile AST expressiveness with bytecode execution.We validate the MOP by presenting TreeNurse, a method instrumentation framework and TypePlug, an optional, pluggable type system which is based on Persephone. CHALLENGES FOR SUPPORTING SUB-METHOD REFLECTIONTo support the need of different tools such as a code browser, a code coverage tool or a refactoring engine, we need a representation that is extensible, it should allow tools to annotate the structural elements with metadata and the use of metadata for 276