|Issue||Fix Version||Assignee||Priority||Status||Resolution||Resolved In Build|
Unfortunately, that's the wrong place for the ordering barrier. It ensures the stores done by MutableSpace::initialize (including the update of _end) follow the other data structure updates in PSOldGen, but there are also writes within MS::initialize that must preceed the update of _end. In particular, when AlwaysPreTouch, the writes done for pretouching are presently unordered wrto the write of _end. Another thread could see the new _end value and allocate and start using that newly available space, only to have pretouch writes scribble on it.
A barrier is needed to ensure the write to _end is really last.