Mercurial > hg > truffle
diff src/share/vm/memory/generationSpec.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | 9f059abe8cf2 |
children | db9981fd3124 |
line wrap: on
line diff
--- a/src/share/vm/memory/generationSpec.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/memory/generationSpec.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ */ #include "precompiled.hpp" -#include "memory/compactPermGen.hpp" +#include "memory/binaryTreeDictionary.hpp" #include "memory/defNewGeneration.hpp" #include "memory/filemap.hpp" #include "memory/genRemSet.hpp" @@ -31,8 +31,8 @@ #include "memory/tenuredGeneration.hpp" #include "runtime/java.hpp" #ifndef SERIALGC -#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp" #include "gc_implementation/parNew/asParNewGeneration.hpp" +#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp" #include "gc_implementation/parNew/parNewGeneration.hpp" #endif @@ -101,99 +101,3 @@ return NULL; } } - - -PermanentGenerationSpec::PermanentGenerationSpec(PermGen::Name name, - size_t init_size, size_t max_size, - size_t read_only_size, size_t read_write_size, - size_t misc_data_size, size_t misc_code_size) { - _name = name; - _init_size = init_size; - - if (UseSharedSpaces || DumpSharedSpaces) { - _enable_shared_spaces = true; - if (UseSharedSpaces) { - // Override shared space sizes from those in the file. - FileMapInfo* mapinfo = FileMapInfo::current_info(); - _read_only_size = mapinfo->space_capacity(CompactingPermGenGen::ro); - _read_write_size = mapinfo->space_capacity(CompactingPermGenGen::rw); - _misc_data_size = mapinfo->space_capacity(CompactingPermGenGen::md); - _misc_code_size = mapinfo->space_capacity(CompactingPermGenGen::mc); - } else { - _read_only_size = read_only_size; - _read_write_size = read_write_size; - _misc_data_size = misc_data_size; - _misc_code_size = misc_code_size; - } - } else { - _enable_shared_spaces = false; - _read_only_size = 0; - _read_write_size = 0; - _misc_data_size = 0; - _misc_code_size = 0; - } - - _max_size = max_size; -} - - -PermGen* PermanentGenerationSpec::init(ReservedSpace rs, - size_t init_size, - GenRemSet *remset) { - - // Break the reserved spaces into pieces for the permanent space - // and the shared spaces. - ReservedSpace perm_rs = rs.first_part(_max_size, UseSharedSpaces, - UseSharedSpaces); - ReservedSpace shared_rs = rs.last_part(_max_size); - - if (enable_shared_spaces()) { - if (!perm_rs.is_reserved() || - perm_rs.base() + perm_rs.size() != shared_rs.base()) { - FileMapInfo* mapinfo = FileMapInfo::current_info(); - mapinfo->fail_continue("Sharing disabled - unable to " - "reserve address space."); - shared_rs.release(); - disable_sharing(); - } - } - - switch (name()) { - case PermGen::MarkSweepCompact: - return new CompactingPermGen(perm_rs, shared_rs, init_size, remset, this); - -#ifndef SERIALGC - case PermGen::MarkSweep: - guarantee(false, "NYI"); - return NULL; - - case PermGen::ConcurrentMarkSweep: { - assert(UseConcMarkSweepGC, "UseConcMarkSweepGC should be set"); - CardTableRS* ctrs = remset->as_CardTableRS(); - if (ctrs == NULL) { - vm_exit_during_initialization("RemSet/generation incompatibility."); - } - // XXXPERM - return new CMSPermGen(perm_rs, init_size, ctrs, - (FreeBlockDictionary<FreeChunk>::DictionaryChoice)CMSDictionaryChoice); - } -#endif // SERIALGC - default: - guarantee(false, "unrecognized GenerationName"); - return NULL; - } -} - - -// Alignment -void PermanentGenerationSpec::align(size_t alignment) { - _init_size = align_size_up(_init_size, alignment); - _max_size = align_size_up(_max_size, alignment); - _read_only_size = align_size_up(_read_only_size, alignment); - _read_write_size = align_size_up(_read_write_size, alignment); - _misc_data_size = align_size_up(_misc_data_size, alignment); - _misc_code_size = align_size_up(_misc_code_size, alignment); - - assert(enable_shared_spaces() || (_read_only_size + _read_write_size == 0), - "Shared space when disabled?"); -}