1. A method of compiling program, the method comprising: determining that a program code, at a point in a program, creates a reference from a source object to a destination object; and associating write barrier code with the program code if, at the point in the program, the source object is non-prolific and the destination object is prolific, otherwise determining not to associate write barrier code with the program code.