< prev index next >
src/share/vm/classfile/stringTable.cpp
Print this page
*** 678,688 ****
}
}
#if INCLUDE_CDS_JAVA_HEAP
// Sharing
! oop StringTable::archive_string(oop s, Thread* THREAD) {
assert(DumpSharedSpaces, "this function is only used with -Xshare:dump");
oop new_s = NULL;
typeArrayOop v = java_lang_String::value(s);
typeArrayOop new_v = (typeArrayOop)MetaspaceShared::archive_heap_object(v, THREAD);
--- 678,688 ----
}
}
#if INCLUDE_CDS_JAVA_HEAP
// Sharing
! oop StringTable::create_archived_string(oop s, Thread* THREAD) {
assert(DumpSharedSpaces, "this function is only used with -Xshare:dump");
oop new_s = NULL;
typeArrayOop v = java_lang_String::value(s);
typeArrayOop new_v = (typeArrayOop)MetaspaceShared::archive_heap_object(v, THREAD);
*** 699,711 ****
return new_s;
}
bool StringTable::copy_shared_string(GrowableArray<MemRegion> *string_space,
CompactStringTableWriter* writer) {
! assert(UseG1GC, "Only support G1 GC");
! assert(UseCompressedOops && UseCompressedClassPointers,
! "Only support UseCompressedOops and UseCompressedClassPointers enabled");
Thread* THREAD = Thread::current();
G1CollectedHeap::heap()->begin_archive_alloc_range();
for (int i = 0; i < the_table()->table_size(); ++i) {
HashtableEntry<oop, mtSymbol>* bucket = the_table()->bucket(i);
--- 699,709 ----
return new_s;
}
bool StringTable::copy_shared_string(GrowableArray<MemRegion> *string_space,
CompactStringTableWriter* writer) {
! assert(MetaspaceShared::is_heap_object_archiving_allowed(), "must be");
Thread* THREAD = Thread::current();
G1CollectedHeap::heap()->begin_archive_alloc_range();
for (int i = 0; i < the_table()->table_size(); ++i) {
HashtableEntry<oop, mtSymbol>* bucket = the_table()->bucket(i);
*** 715,725 ****
if (hash == 0) {
continue;
}
java_lang_String::set_hash(s, hash);
! oop new_s = archive_string(s, THREAD);
if (new_s == NULL) {
continue;
}
// set the archived string in bucket
--- 713,723 ----
if (hash == 0) {
continue;
}
java_lang_String::set_hash(s, hash);
! oop new_s = create_archived_string(s, THREAD);
if (new_s == NULL) {
continue;
}
// set the archived string in bucket
*** 734,746 ****
assert(string_space->length() <= 2, "sanity");
return true;
}
void StringTable::write_to_archive(GrowableArray<MemRegion> *string_space) {
! assert(UseG1GC, "Only support G1 GC");
! assert(UseCompressedOops && UseCompressedClassPointers,
! "Only support UseCompressedOops and UseCompressedClassPointers enabled");
_shared_table.reset();
int num_buckets = the_table()->number_of_entries() /
SharedSymbolTableBucketSize;
// calculation of num_buckets can result in zero buckets, we need at least one
--- 732,742 ----
assert(string_space->length() <= 2, "sanity");
return true;
}
void StringTable::write_to_archive(GrowableArray<MemRegion> *string_space) {
! assert(MetaspaceShared::is_heap_object_archiving_allowed(), "must be");
_shared_table.reset();
int num_buckets = the_table()->number_of_entries() /
SharedSymbolTableBucketSize;
// calculation of num_buckets can result in zero buckets, we need at least one
< prev index next >