6990754: Use native memory and reference counting to implement SymbolTable

Move symbols from permgen into C heap and reference count them

Reviewed-by: never, acorn, jmasa, stefank
This commit is contained in:
Coleen Phillimore 2011-01-27 16:11:27 -08:00
parent 950858350d
commit 7b4f8073f0
223 changed files with 3783 additions and 3641 deletions

View file

@ -107,15 +107,23 @@ void CompactingPermGenGen::initialize_oops() {
// Skip over (reserve space for) a list of addresses of C++ vtables
// for Klass objects. They get filled in later.
void** vtbl_list = (void**)buffer;
buffer += vtbl_list_size * sizeof(void*);
Universe::init_self_patching_vtbl_list(vtbl_list, vtbl_list_size);
// Skip over (reserve space for) dummy C++ vtables Klass objects.
// They are used as is.
void** vtbl_list = (void**)buffer;
buffer += vtbl_list_size * sizeof(void*);
intptr_t vtable_size = *(intptr_t*)buffer;
buffer += sizeof(intptr_t);
buffer += vtable_size;
// Skip the recorded symbols.
intptr_t total_symbol_size = *(intptr_t*)buffer;
buffer += sizeof(intptr_t) * 2;
buffer += total_symbol_size;
// Create the symbol table using the bucket array at this spot in the
// misc data space. Since the symbol table is often modified, this
// region (of mapped pages) will be copy-on-write.