src/share/vm/classfile/symbolTable.cpp

changeset 5196
8dbc025ff709
parent 5195
95c00927be11
child 5277
01522ca68fc7
     1.1 --- a/src/share/vm/classfile/symbolTable.cpp	Mon May 27 12:56:34 2013 +0200
     1.2 +++ b/src/share/vm/classfile/symbolTable.cpp	Mon May 27 12:58:42 2013 +0200
     1.3 @@ -737,7 +737,7 @@
     1.4    return result;
     1.5  }
     1.6  
     1.7 -void StringTable::unlink(BoolObjectClosure* is_alive) {
     1.8 +void StringTable::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f) {
     1.9    // Readers of the table are unlocked, so we should only be removing
    1.10    // entries at a safepoint.
    1.11    assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
    1.12 @@ -748,6 +748,9 @@
    1.13        assert(!entry->is_shared(), "CDS not used for the StringTable");
    1.14  
    1.15        if (is_alive->do_object_b(entry->literal())) {
    1.16 +        if (f != NULL) {
    1.17 +          f->do_oop((oop*)entry->literal_addr());
    1.18 +        }
    1.19          p = entry->next_addr();
    1.20        } else {
    1.21          *p = entry->next();

mercurial