< prev index next >
src/hotspot/share/classfile/stringTable.hpp
Print this page
rev 50539 : [mq]: 8204613-stringtable-unclean-fix
*** 81,91 ****
void check_concurrent_work();
void trigger_concurrent_work();
static uintx item_added();
static void item_removed();
! static size_t items_to_clean(size_t ncl);
StringTable();
static oop intern(Handle string_or_null_h, jchar* name, int len, TRAPS);
oop do_intern(Handle string_or_null, jchar* name, int len, uintx hash, TRAPS);
--- 81,91 ----
void check_concurrent_work();
void trigger_concurrent_work();
static uintx item_added();
static void item_removed();
! size_t add_items_to_clean(size_t ndead);
StringTable();
static oop intern(Handle string_or_null_h, jchar* name, int len, TRAPS);
oop do_intern(Handle string_or_null, jchar* name, int len, uintx hash, TRAPS);
*** 111,120 ****
--- 111,137 ----
static void do_concurrent_work(JavaThread* jt);
static bool has_work() { return the_table()->_has_work; }
// GC support
+
+ // Must be called before a parallel walk where strings might die.
+ static void reset_dead_counter() {
+ the_table()->_uncleaned_items = 0;
+ }
+ // After the parallel walk this method must be called to trigger
+ // cleaning. Note it might trigger a resize instead.
+ static void finish_dead_counter() {
+ the_table()->check_concurrent_work();
+ }
+
+ // If GC uses ParState directly it should add the number of cleared
+ // strings to this method.
+ static void inc_dead_counter(size_t ndead) {
+ the_table()->add_items_to_clean(ndead);
+ }
+
// Delete pointers to otherwise-unreachable objects.
static void unlink(BoolObjectClosure* cl) {
unlink_or_oops_do(cl);
}
static void unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f = NULL,
*** 148,158 ****
// Sharing
private:
oop lookup_shared(jchar* name, int len, unsigned int hash) NOT_CDS_JAVA_HEAP_RETURN_(NULL);
static void copy_shared_string_table(CompactStringTableWriter* ch_table) NOT_CDS_JAVA_HEAP_RETURN;
public:
! static oop create_archived_string(oop s, Thread* THREAD);
static void set_shared_string_mapped() { _shared_string_mapped = true; }
static bool shared_string_mapped() { return _shared_string_mapped; }
static void shared_oops_do(OopClosure* f) NOT_CDS_JAVA_HEAP_RETURN;
static void write_to_archive() NOT_CDS_JAVA_HEAP_RETURN;
static void serialize(SerializeClosure* soc) NOT_CDS_JAVA_HEAP_RETURN;
--- 165,175 ----
// Sharing
private:
oop lookup_shared(jchar* name, int len, unsigned int hash) NOT_CDS_JAVA_HEAP_RETURN_(NULL);
static void copy_shared_string_table(CompactStringTableWriter* ch_table) NOT_CDS_JAVA_HEAP_RETURN;
public:
! static oop create_archived_string(oop s, Thread* THREAD) NOT_CDS_JAVA_HEAP_RETURN_(NULL);
static void set_shared_string_mapped() { _shared_string_mapped = true; }
static bool shared_string_mapped() { return _shared_string_mapped; }
static void shared_oops_do(OopClosure* f) NOT_CDS_JAVA_HEAP_RETURN;
static void write_to_archive() NOT_CDS_JAVA_HEAP_RETURN;
static void serialize(SerializeClosure* soc) NOT_CDS_JAVA_HEAP_RETURN;
< prev index next >