Mercurial > hg > truffle
diff src/share/vm/classfile/classLoader.cpp @ 1188:99af867dfa05
6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
Summary: Add safepoint after CompileTheWorldSafepointInterval (100) compilations and do full sweep of CodeCache each time.
Reviewed-by: never
Contributed-by: eric.caspole@amd.com
author | kvn |
---|---|
date | Tue, 26 Jan 2010 08:53:24 -0800 |
parents | 4ce7240d622c |
children | 1b41af477605 c18cbe5936b8 |
line wrap: on
line diff
--- a/src/share/vm/classfile/classLoader.cpp Wed Jan 20 22:10:33 2010 -0800 +++ b/src/share/vm/classfile/classLoader.cpp Tue Jan 26 08:53:24 2010 -0800 @@ -1249,6 +1249,7 @@ } 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 @@ 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);