hotspot/src/share/vm/code/nmethod.cpp
changeset 32466 915d0c3d25aa
parent 32401 cc58aeaec340
child 32582 56619bb8bcaa
equal deleted inserted replaced
32465:d38126f16dbe 32466:915d0c3d25aa
  1048         // Ok, to lookup references to zombies here
  1048         // Ok, to lookup references to zombies here
  1049         CodeBlob *cb = CodeCache::find_blob_unsafe(ic->ic_destination());
  1049         CodeBlob *cb = CodeCache::find_blob_unsafe(ic->ic_destination());
  1050         if( cb != NULL && cb->is_nmethod() ) {
  1050         if( cb != NULL && cb->is_nmethod() ) {
  1051           nmethod* nm = (nmethod*)cb;
  1051           nmethod* nm = (nmethod*)cb;
  1052           // Clean inline caches pointing to zombie, non-entrant and unloaded methods
  1052           // Clean inline caches pointing to zombie, non-entrant and unloaded methods
  1053           if (!nm->is_in_use() || (nm->method()->code() != nm)) ic->set_to_clean();
  1053           if (!nm->is_in_use() || (nm->method()->code() != nm)) ic->set_to_clean(is_alive());
  1054         }
  1054         }
  1055         break;
  1055         break;
  1056       }
  1056       }
  1057       case relocInfo::static_call_type: {
  1057       case relocInfo::static_call_type: {
  1058         CompiledStaticCall *csc = compiledStaticCall_at(iter.reloc());
  1058         CompiledStaticCall *csc = compiledStaticCall_at(iter.reloc());
  1148 }
  1148 }
  1149 
  1149 
  1150 // Tell if a non-entrant method can be converted to a zombie (i.e.,
  1150 // Tell if a non-entrant method can be converted to a zombie (i.e.,
  1151 // there are no activations on the stack, not in use by the VM,
  1151 // there are no activations on the stack, not in use by the VM,
  1152 // and not in use by the ServiceThread)
  1152 // and not in use by the ServiceThread)
  1153 bool nmethod::can_not_entrant_be_converted() {
  1153 bool nmethod::can_convert_to_zombie() {
  1154   assert(is_not_entrant(), "must be a non-entrant method");
  1154   assert(is_not_entrant(), "must be a non-entrant method");
  1155 
  1155 
  1156   // Since the nmethod sweeper only does partial sweep the sweeper's traversal
  1156   // Since the nmethod sweeper only does partial sweep the sweeper's traversal
  1157   // count can be greater than the stack traversal count before it hits the
  1157   // count can be greater than the stack traversal count before it hits the
  1158   // nmethod for the second time.
  1158   // nmethod for the second time.