< 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 >