Mercurial > hg > graal-jvmci-8
comparison 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 |
comparison
equal
deleted
inserted
replaced
1187:cf0685d550f1 | 1188:99af867dfa05 |
---|---|
1247 } | 1247 } |
1248 vm_exit(0); | 1248 vm_exit(0); |
1249 } | 1249 } |
1250 | 1250 |
1251 int ClassLoader::_compile_the_world_counter = 0; | 1251 int ClassLoader::_compile_the_world_counter = 0; |
1252 static int _codecache_sweep_counter = 0; | |
1252 | 1253 |
1253 void ClassLoader::compile_the_world_in(char* name, Handle loader, TRAPS) { | 1254 void ClassLoader::compile_the_world_in(char* name, Handle loader, TRAPS) { |
1254 int len = (int)strlen(name); | 1255 int len = (int)strlen(name); |
1255 if (len > 6 && strcmp(".class", name + len - 6) == 0) { | 1256 if (len > 6 && strcmp(".class", name + len - 6) == 0) { |
1256 // We have a .class file | 1257 // We have a .class file |
1291 // Preload all classes to get around uncommon traps | 1292 // Preload all classes to get around uncommon traps |
1292 // Iterate over all methods in class | 1293 // Iterate over all methods in class |
1293 for (int n = 0; n < k->methods()->length(); n++) { | 1294 for (int n = 0; n < k->methods()->length(); n++) { |
1294 methodHandle m (THREAD, methodOop(k->methods()->obj_at(n))); | 1295 methodHandle m (THREAD, methodOop(k->methods()->obj_at(n))); |
1295 if (CompilationPolicy::canBeCompiled(m)) { | 1296 if (CompilationPolicy::canBeCompiled(m)) { |
1297 | |
1298 if (++_codecache_sweep_counter == CompileTheWorldSafepointInterval) { | |
1299 // Give sweeper a chance to keep up with CTW | |
1300 VM_ForceSafepoint op; | |
1301 VMThread::execute(&op); | |
1302 _codecache_sweep_counter = 0; | |
1303 } | |
1296 // Force compilation | 1304 // Force compilation |
1297 CompileBroker::compile_method(m, InvocationEntryBci, | 1305 CompileBroker::compile_method(m, InvocationEntryBci, |
1298 methodHandle(), 0, "CTW", THREAD); | 1306 methodHandle(), 0, "CTW", THREAD); |
1299 if (HAS_PENDING_EXCEPTION) { | 1307 if (HAS_PENDING_EXCEPTION) { |
1300 CLEAR_PENDING_EXCEPTION; | 1308 CLEAR_PENDING_EXCEPTION; |