diff --git a/src/share/vm/memory/compactingPermGenGen.cpp b/src/share/vm/memory/compactingPermGenGen.cpp
index af94649..e1de54e 100644
--- a/src/share/vm/memory/compactingPermGenGen.cpp
+++ b/src/share/vm/memory/compactingPermGenGen.cpp
@@ -421,30 +421,6 @@
 }
 
 
-
-bool CompactingPermGenGen::grow_by(size_t bytes) {
-  // Don't allow _virtual_size to expand into shared spaces.
-  size_t max_bytes = _virtual_space.uncommitted_size() - _shared_space_size;
-  if (bytes > _shared_space_size) {
-    bytes = _shared_space_size;
-  }
-  return OneContigSpaceCardGeneration::grow_by(bytes);
-}
-
-
-bool CompactingPermGenGen::grow_to_reserved() {
-  // Don't allow _virtual_size to expand into shared spaces.
-  bool success = false;
-  if (_virtual_space.uncommitted_size() > _shared_space_size) {
-    size_t remaining_bytes =
-      _virtual_space.uncommitted_size() - _shared_space_size;
-    success = OneContigSpaceCardGeneration::grow_by(remaining_bytes);
-    DEBUG_ONLY(if (!success) warning("grow to reserved failed");)
-  }
-  return success;
-}
-
-
 // No young generation references, clear this generation's main space's
 // card table entries.  Do NOT clear the card table entries for the
 // read-only space (always clear) or the read-write space (valuable
diff --git a/src/share/vm/memory/compactingPermGenGen.hpp b/src/share/vm/memory/compactingPermGenGen.hpp
index 4d76e47..3a12a88 100644
--- a/src/share/vm/memory/compactingPermGenGen.hpp
+++ b/src/share/vm/memory/compactingPermGenGen.hpp
@@ -183,8 +183,6 @@
   void compact();
   void post_compact();
   size_t contiguous_available() const;
-  bool grow_by(size_t bytes);
-  virtual bool grow_to_reserved();
 
   void clear_remembered_set();
   void invalidate_remembered_set();
