Beispiel #1
0
 void printActionQ() {
   SeenThread* seen = this;
   while (seen != NULL) {
     seen->thread()->print_value();
     tty->print(", ");
     seen = seen->next();
   }
 }
Beispiel #2
0
 bool check_seen_thread(Thread* thread, PlaceholderTable::classloadAction action) {
   assert_lock_strong(SystemDictionary_lock);
   SeenThread* threadQ = actionToQueue(action);
   SeenThread* seen = threadQ;
   while (seen) {
     if (thread == seen->thread()) {
       return true;
     }
     seen = seen->next();
   }
   return false;
 }
Beispiel #3
0
 // returns true if seenthreadQ is now empty
 // Note, caller must ensure probe still exists while holding
 // SystemDictionary_lock
 // ignores if cleanup has already been done
 // if found, deletes SeenThread
 bool remove_seen_thread(Thread* thread, PlaceholderTable::classloadAction action) {
   assert_lock_strong(SystemDictionary_lock);
   SeenThread* threadQ = actionToQueue(action);
   SeenThread* seen = threadQ;
   SeenThread* prev = NULL;
   while (seen) {
     if (thread == seen->thread()) {
       if (prev) {
         prev->set_next(seen->next());
       } else {
         set_threadQ(seen->next(), action);
       }
       if (seen->next()) {
         seen->next()->set_prev(prev);
       }
       delete seen;
       break;
     }
     prev = seen;
     seen = seen->next();
   }
   return (actionToQueue(action) == NULL);
 }