Abstract
We present a Java bytecode translation scheme for implementing dflow pointcut, which is an extension of aspect-oriented language AspectJ. With dflow pointcut, the programmer can concisely specify join points based on data dependency. Our translation inserts bytecode instructions into bytecode generated by the AspectJ compiler in order to keep track of dependency between values at runtime. By using a static analysis on data dependency, our scheme inserts instructions for the dependencies that can not statically be predicted. Therefore, our translation can generate less overhead in output code than a naive translation method that doesn't use any static analysis would do. Our experiments, which compared overheads between the code translated by our scheme and by a naive scheme, demonstrated the effectiveness of our scheme.