Request for review, 6766644: Redefinition of compiled method fails with assertion "Can not load classes with the Compiler thread"

Keith McGuigan keith.mcguigan at
Tue Jan 25 08:49:01 PST 2011


This code modifies the way that JVMTI compiled-method-load events are  
posted.  Previously, they were posted directly from the compiler  
thread, which could cause issues if the JVMTI event handling code made  
calls to RedefineClasses, since the compiler thread is unable to load  
classes if that is required.  This solution is to defer the posting of  
the events to the Service thread (formerly: LowMemoryDetector thread)  
which is a Java thread and is able to load classes.

The "Service thread" now handles both low-memory detection and JVMTI  
deferred event posting.   I left the door open for other types of  
events to be deferred and posted via this mechanism in case we find  
other situations where posting events from a non-Java thread causes  


- Keith

More information about the hotspot-runtime-dev mailing list