Code Review for 7170053

Prepared by:twisti on Fri May 18 12:18:30 PDT 2012
Workspace:/home/twisti/hsx/hotspot-comp/7170053
Compare against: /net/hs-usca-06.sfbay.sun.com/export/home2/16/twisti/hsx/hotspot-comp/hotspot
Summary of changes: 1 line changed: 0 ins; 0 del; 1 mod; 907 unchg
Patch of changes: 7170053.patch
Printable review: 7170053.pdf
Author comments:
7170053: crash in C2 when using -XX:+CountCompiledCalls
Reviewed-by: kvn, twisti
Contributed-by: Krystal Mok <sajia@taobao.com>

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();

The fix is to use TypeOopPtr::make_from_constant(method()) instead of
TypeInstPtr::make(method()).

Bug id: Bug Database
Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/doCall.cpp

1 line changed: 0 ins; 0 del; 1 mod; 907 unchg

This code review page was prepared using /home/twisti/bin/webrev (vers 23.18-hg-never).