|Lepper, M; Trancón y Widemann, B: Optimization of Visitor Performance by Reflection-Based Analysis, Lecture Notes in Computer Science, 6707, 15-30 (2011), doi:10.1007/978-3-642-21732-6_2|
Visitors are a well-known and powerful design pattern for processing regular data structures and for combining declarative and imperative coding styles. The authors’ umod model generator creates Java data models from a concise and algebraic notation. It is primarily used to model intermediate representations of computer languages. The user defines visitor code by extending skeleton classes, which are generated according to traversal annotations in the model. Since the generated code on its own executes the pure traversal and no semantic side-effects, traversals are redundant unless some user-overridden method is eventually invoked. We present a reflection-based control flow analysis to detect this situation and prune the traversal transparently. With a well-stratified model, this may lead to substantial increase in performance.