< prev index next > src/hotspot/share/code/compiledMethod.cpp
// as long as there is no concurrent cleanup of next pointers from concurrent writers.
// And the concurrent writers do not clean up next pointers, only the head.
// Also note that concurent readers will walk through Klass* pointers that are not
// alive. That does not cause ABA problems, because Klass* is deleted after
// a handshake with all threads, after all stale ExceptionCaches have been
- // unlinked. That is also when the CodeCache::exception_cache_free_list()
+ // unlinked. That is also when the CodeCache::exception_cache_purge_list()
+ // is deleted, with all ExceptionCache entries that were cleaned concurrently.
+ // That similarly implies that CAS operations on ExceptionCache entries do not
+ // suffer from ABA problems as unlinking and deletion is separated by a global
+ // handshake operation.
ExceptionCache* prev = NULL;
ExceptionCache* curr = exception_cache_acquire();
while (curr != NULL) {
ExceptionCache* next = curr->next();
< prev index next >