< prev index next >
src/share/vm/classfile/placeholders.hpp
Print this page
@@ -40,11 +40,11 @@
PlaceholderTable(int table_size);
PlaceholderEntry* new_entry(int hash, Symbol* name, ClassLoaderData* loader_data, bool havesupername, Symbol* supername);
void free_entry(PlaceholderEntry* entry);
- PlaceholderEntry* bucket(int i) {
+ PlaceholderEntry* bucket(int i) const {
return (PlaceholderEntry*)Hashtable<Symbol*, mtClass>::bucket(i);
}
PlaceholderEntry** bucket_addr(int i) {
return (PlaceholderEntry**)Hashtable<Symbol*, mtClass>::bucket_addr(i);
@@ -95,13 +95,11 @@
// If all queues are empty and definer is null, remove the PlacheholderEntry completely
void find_and_remove(int index, unsigned int hash,
Symbol* name, ClassLoaderData* loader_data,
classloadAction action, Thread* thread);
-#ifndef PRODUCT
- void print();
-#endif
+ void print_on(outputStream* st) const;
void verify();
};
// SeenThread objects represent list of threads that are
// currently performing a load action on a class.
@@ -127,20 +125,18 @@
SeenThread* next() const { return _stnext;}
void set_next(SeenThread *seen) { _stnext = seen; }
void set_prev(SeenThread *seen) { _stprev = seen; }
-#ifndef PRODUCT
- void printActionQ() {
+ void print_action_queue(outputStream* st) {
SeenThread* seen = this;
while (seen != NULL) {
- seen->thread()->print_value();
- tty->print(", ");
+ seen->thread()->print_value_on(st);
+ st->print(", ");
seen = seen->next();
}
}
-#endif // PRODUCT
};
// Placeholder objects represent classes currently being loaded.
// All threads examining the placeholder table must hold the
// SystemDictionary_lock, so we don't need special precautions
@@ -319,10 +315,10 @@
}
return (actionToQueue(action) == NULL);
}
// Print method doesn't append a cr
- void print() const PRODUCT_RETURN;
+ void print_entry(outputStream* st) const;;
void verify() const;
};
#endif // SHARE_VM_CLASSFILE_PLACEHOLDERS_HPP
< prev index next >