hotspot/src/share/vm/code/codeCache.cpp
changeset 5924 dc9d04930c82
parent 5702 201c5cde25bb
child 6418 6671edbd230e
equal deleted inserted replaced
5915:406168b53eb0 5924:dc9d04930c82
    91 
    91 
    92 // CodeCache implementation
    92 // CodeCache implementation
    93 
    93 
    94 CodeHeap * CodeCache::_heap = new CodeHeap();
    94 CodeHeap * CodeCache::_heap = new CodeHeap();
    95 int CodeCache::_number_of_blobs = 0;
    95 int CodeCache::_number_of_blobs = 0;
       
    96 int CodeCache::_number_of_adapters = 0;
       
    97 int CodeCache::_number_of_nmethods = 0;
    96 int CodeCache::_number_of_nmethods_with_dependencies = 0;
    98 int CodeCache::_number_of_nmethods_with_dependencies = 0;
    97 bool CodeCache::_needs_cache_clean = false;
    99 bool CodeCache::_needs_cache_clean = false;
    98 nmethod* CodeCache::_scavenge_root_nmethods = NULL;
   100 nmethod* CodeCache::_scavenge_root_nmethods = NULL;
    99 nmethod* CodeCache::_saved_nmethods = NULL;
   101 nmethod* CodeCache::_saved_nmethods = NULL;
   100 
   102 
   174 void CodeCache::free(CodeBlob* cb) {
   176 void CodeCache::free(CodeBlob* cb) {
   175   assert_locked_or_safepoint(CodeCache_lock);
   177   assert_locked_or_safepoint(CodeCache_lock);
   176   verify_if_often();
   178   verify_if_often();
   177 
   179 
   178   print_trace("free", cb);
   180   print_trace("free", cb);
   179   if (cb->is_nmethod() && ((nmethod *)cb)->has_dependencies()) {
   181   if (cb->is_nmethod()) {
   180     _number_of_nmethods_with_dependencies--;
   182     _number_of_nmethods--;
       
   183     if (((nmethod *)cb)->has_dependencies()) {
       
   184       _number_of_nmethods_with_dependencies--;
       
   185     }
       
   186   }
       
   187   if (cb->is_adapter_blob()) {
       
   188     _number_of_adapters--;
   181   }
   189   }
   182   _number_of_blobs--;
   190   _number_of_blobs--;
   183 
   191 
   184   _heap->deallocate(cb);
   192   _heap->deallocate(cb);
   185 
   193 
   189 
   197 
   190 
   198 
   191 void CodeCache::commit(CodeBlob* cb) {
   199 void CodeCache::commit(CodeBlob* cb) {
   192   // this is called by nmethod::nmethod, which must already own CodeCache_lock
   200   // this is called by nmethod::nmethod, which must already own CodeCache_lock
   193   assert_locked_or_safepoint(CodeCache_lock);
   201   assert_locked_or_safepoint(CodeCache_lock);
   194   if (cb->is_nmethod() && ((nmethod *)cb)->has_dependencies()) {
   202   if (cb->is_nmethod()) {
   195     _number_of_nmethods_with_dependencies++;
   203     _number_of_nmethods++;
   196   }
   204     if (((nmethod *)cb)->has_dependencies()) {
       
   205       _number_of_nmethods_with_dependencies++;
       
   206     }
       
   207   }
       
   208   if (cb->is_adapter_blob()) {
       
   209     _number_of_adapters++;
       
   210   }
       
   211 
   197   // flush the hardware I-cache
   212   // flush the hardware I-cache
   198   ICache::invalidate_range(cb->instructions_begin(), cb->instructions_size());
   213   ICache::invalidate_range(cb->instructions_begin(), cb->instructions_size());
   199 }
   214 }
   200 
   215 
   201 
   216