The paper I read also uses a different approach for instrumenting
Object.∗. I chose to add a wrapper that logs and forwards, and then to change all calls to
Object.∗ to point to
The advantage of that is that only the bytecode size of the
Object class increases. The other classes have to be touched, but it’s just a change in the reference. Unfortunately, it also means that I need to touch Java’s private parts.
Georges, et al chose to leave the
Object.∗ methods unchanged and then add the logging calls at every call site. That increases the bytecode size of all classes, but it might be easier to do.
I’ll give it a shot.