Request for review (XS): crash in C2 when using -XX:+CountCompiledCalls

Christian Thalinger christian.thalinger at oracle.com
Thu May 17 17:40:50 PDT 2012


Looks good.  -- Chris

On May 16, 2012, at 6:02 AM, Krystal Mok wrote:

> Hi all,
> 
> Could I get some reviews for this patch, please?
> https://gist.github.com/2710000#file_count_compiled_calls.patch
> 
> Description:
> 
> C2 may crash when compiling methods with -XX:+CountCompiledCalls turned on. The cause is in Parse::count_compiled_calls(), where it made a TypeInstPtr from a ciMethod:
> 
> const TypeInstPtr* addr_type = TypeInstPtr::make(method());
> 
> Since the klass of a ciMethod is a ciMethodKlass, which isn't a ciInstanceKlass, an assertion is hit later in Compile::flatten_alias_type(), where it's expecting a TypeInstPtr to have a ciInstanceKlass:
> 
> ciInstanceKlass *k = to->klass()->as_instance_klass();
> 
> An example of the crash is available here: https://gist.github.com/2710000
> In the example, I started a Groovy shell with -XX:+CountCompiledCalls set, and it crashed quickly when compiling java.lang.String.charAt().
> 
> The fix is to use TypeOopPtr::make_from_constant(method()) instead of TypeInstPtr::make(method()).
> I did check the hg history, and looks like it's been like this since duke at 0. Wonder if there's any history behind this.
> 
> Note that this fix may have to be changed again when methodOopDesc's are moved out of PermGen.
> 
> Regards,
> Kris

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20120517/88dcba4d/attachment.html 


More information about the hotspot-compiler-dev mailing list