comparison src/share/vm/oops/instanceKlass.cpp @ 14456:abec000618bf

Merge
author kvn
date Tue, 28 Jan 2014 12:25:34 -0800
parents 2353011244bd 2da20f966936
children 28f281e8de1d
comparison
equal deleted inserted replaced
14269:2a8891e0a082 14456:abec000618bf
1201 if (_oop_map_cache == NULL) { 1201 if (_oop_map_cache == NULL) {
1202 // Otherwise, allocate a new one. 1202 // Otherwise, allocate a new one.
1203 MutexLocker x(OopMapCacheAlloc_lock); 1203 MutexLocker x(OopMapCacheAlloc_lock);
1204 // First time use. Allocate a cache in C heap 1204 // First time use. Allocate a cache in C heap
1205 if (_oop_map_cache == NULL) { 1205 if (_oop_map_cache == NULL) {
1206 _oop_map_cache = new OopMapCache(); 1206 // Release stores from OopMapCache constructor before assignment
1207 // to _oop_map_cache. C++ compilers on ppc do not emit the
1208 // required memory barrier only because of the volatile
1209 // qualifier of _oop_map_cache.
1210 OrderAccess::release_store_ptr(&_oop_map_cache, new OopMapCache());
1207 } 1211 }
1208 } 1212 }
1209 // _oop_map_cache is constant after init; lookup below does is own locking. 1213 // _oop_map_cache is constant after init; lookup below does is own locking.
1210 _oop_map_cache->lookup(method, bci, entry_for); 1214 _oop_map_cache->lookup(method, bci, entry_for);
1211 } 1215 }