Request for reviews (XS): 7106774: JSR 292: nightly test inlineMHTarget fails with wrong result
christian.thalinger at oracle.com
Thu Nov 3 01:40:29 PDT 2011
Thank you, Vladimir. -- Chris
On Nov 2, 2011, at 6:08 PM, Vladimir Kozlov wrote:
> Looks good.
> On 11/2/11 7:03 AM, Christian Thalinger wrote:
>> 7106774: JSR 292: nightly test inlineMHTarget fails with wrong result
>> The problem is in code which was added with 7090904 that checks if the
>> call site is a method handle invoke. The new code uses
>> Bytecode::code() and compares the result to Bytecodes values:
>> if (cur.code() == Bytecodes::_invokedynamic ||
>> (cur.code() == Bytecodes::_invokevirtual&&
>> But an invokevirtual can be quickened so that the resulting Bytecode
>> is a different one:
>> (dbx) n
>> t at 2 (l at 2) stopped in Deoptimization::fetch_unroll_info_helper at line 393 in file "deoptimization.cpp"
>> 393 if (cur.code() == Bytecodes::_invokedynamic ||
>> (dbx) p cur.code()
>> cur.code() = _fast_invokevfinal
>> The fix is to use Bytecode_invoke::is_invokevirtual() and
>> is_invokedynamic() which use Bytecode::java_code().
>> Tested with failing test case.
More information about the hotspot-compiler-dev