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?");
-}