6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld

Add safepoint after CompileTheWorldSafepointInterval (100) compilations and do full sweep of CodeCache each time.

Reviewed-by: never
This commit is contained in:
Eric Caspole 2010-01-26 08:53:24 -08:00 committed by Vladimir Kozlov
parent bac125984c
commit f557cc8bd0
3 changed files with 20 additions and 0 deletions

View file

@ -1249,6 +1249,7 @@ void ClassLoader::compile_the_world() {
}
int ClassLoader::_compile_the_world_counter = 0;
static int _codecache_sweep_counter = 0;
void ClassLoader::compile_the_world_in(char* name, Handle loader, TRAPS) {
int len = (int)strlen(name);
@ -1293,6 +1294,13 @@ void ClassLoader::compile_the_world_in(char* name, Handle loader, TRAPS) {
for (int n = 0; n < k->methods()->length(); n++) {
methodHandle m (THREAD, methodOop(k->methods()->obj_at(n)));
if (CompilationPolicy::canBeCompiled(m)) {
if (++_codecache_sweep_counter == CompileTheWorldSafepointInterval) {
// Give sweeper a chance to keep up with CTW
VM_ForceSafepoint op;
VMThread::execute(&op);
_codecache_sweep_counter = 0;
}
// Force compilation
CompileBroker::compile_method(m, InvocationEntryBci,
methodHandle(), 0, "CTW", THREAD);