--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp Thu Sep 30 12:15:13 2010 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp Fri Oct 01 16:12:54 2010 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, 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
@@ -50,6 +50,18 @@
}
}
+HeapWord* CMSPermGen::request_expand_and_allocate(Generation* gen,
+ size_t size,
+ GCCause::Cause prev_cause /* ignored */) {
+ HeapWord* obj = gen->expand_and_allocate(size, false);
+ if (gen->capacity() >= _capacity_expansion_limit) {
+ set_capacity_expansion_limit(gen->capacity() + MaxPermHeapExpansion);
+ assert(((ConcurrentMarkSweepGeneration*)gen)->should_concurrent_collect(),
+ "Should kick off a collection if one not in progress");
+ }
+ return obj;
+}
+
void CMSPermGen::compute_new_size() {
_gen->compute_new_size();
}