Failing typeflow responsibility assertions

Gary Benson gbenson at redhat.com
Thu May 22 02:17:25 PDT 2008


John Rose wrote:
> On May 20, 2008, at 12:44 AM, Gary Benson wrote:
> > So does the ciTypeFlow pass actually load the unloaded classes for
> > you?
> 
> No, the JIT tries pretty hard not to load classes.  IIRC, the only
> exception to this rule is the call to load_signature_classes in
> compileBroker.cpp.

So the 'assert(will_link, "typeflow responsibility")' bits aren't
being hit because the typeflow pass bails out?  (ie env()->failing()
returns true?)  Will the compile broker retry the compilation later?

> JIT compilation should be transparent to Java execution, but loading
> classes causes class loader code to execute.  If the JIT causes
> bytecode execution, then the JIT can cause application state
> changes, which explores new application states unnecessarily.  This
> can expose JIT-entangled bugs in the application.  You want this in
> stress testing, but not in the field.
> 
> The JVM spec. allows class loading--not initialization--for any
> reason, but it's better (for system reproducibility) if the JIT has
> no detectable effect on app. state except speedups.

That makes sense :)

Cheers,
Gary

-- 
http://gbenson.net/



More information about the hotspot-compiler-dev mailing list