Request for reviews (XS): 7011386: race in objArrayKlass::array_klass_impl (original) (raw)
Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Jan 11 11:15:40 PST 2011
- Previous message: Request for reviews (XS): 7011386: race in objArrayKlass::array_klass_impl
- Next message: Request for reviews (XS): 7011386: race in objArrayKlass::array_klass_impl
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Tom,
Using oop_store() instead of oop_store_without_check() will generate barriers but it is overkill. I think marking receiver as volatile should be enough:
void set_higher_dimension(klassOop k) volatile { oop_store_without_check((oop*) &_higher_dimension, (oop) k); } void set_lower_dimension(klassOop k) volatile { oop_store_without_check((oop*) &_lower_dimension, (oop) k); }
Thanks, Vladimir
Tom Rodriguez wrote:
That look good, though I keep wondering if we need a barrier in between or if those fields really should be volatile. It seems like we're playing a little loose with the locking for these lazy values.
tom On Jan 11, 2011, at 9:54 AM, Vladimir Kozlov wrote:
http://cr.openjdk.java.net/~kvn/7011386/webrev
Fixed 7011386: race in objArrayKlass::arrayklassimpl Other threads may access lowerdimension field before it is initialized by thread which holds the lock in objArrayKlass::arrayklassimpl(). Move lowerdimension field initialization before higherdimension.
- Previous message: Request for reviews (XS): 7011386: race in objArrayKlass::array_klass_impl
- Next message: Request for reviews (XS): 7011386: race in objArrayKlass::array_klass_impl
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]