GPCE Home
GPCE'11 Home
Keynotes
Schedule
Accepted Papers
Tech Talks
Poster
Banner
Organization
Dates
Venue
Registration
Calls for
Papers
Tech Talks
Workshops
Electronic
Submission
(Submission deadline has passed)
Abstract: Manually implementing equals (for object comparisons) and hashCode (for object hashing) methods in large software projects is tedious and error-prone. This is due to many special cases, such as field shadowing, comparison between different types, or cyclic object graphs. Here, we present JEqualityGen, a source code generator that automatically derives implementations of these methods.
JEqualityGen proceeds in two states: it first uses source code
reflection in MetaAspectJ to generate aspects that contain the method
implementations, before it uses weaving on the bytecode level to insert
these into the target application. JEqualityGen generates not only
correct, but efficient source code that on a typical large-scale Java
application exhibits a performance improvement of more than two orders
of magnitude in the equality operations generated, compared to an
existing system based on runtime reflection. JEqualityGen achieves this
by generating runtime profiling code that collects data. This
enables it to generate optimised method
implementations in a second round.