javaClasses.cpp'BacktraceBuilder appears to have infrastructure for
deferring card-marks until after a sequence of stores into its
_methods array. However, that optimization appears to have been
lost when compressed oops were implemented because the relevant raw
pointer store code was replaced with obj_at_put() which does
the (pre- and post-) barriers. The latter post-barrier for the
entire length of the array in the flush() is thus redundant.
I noticed this when fixing 6904516, as part of which I decided to
remove the redundant card-marks in the flush() method.
This CR is being filed to restore the original optimization
and replace the obj_at_put() with the appropriate raw [narrow]oop
stores and re-enable the deferred card-mark optimization, if it
is deemed important for performance on certain applications.
Lacking any knowledge of specific apps that would gain from
the optimization, I am filing this a P4. Please re-prioritize
and file subCR's as appropriate.