RFR(L): 8024070: C2 needs some form of type speculation

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Sep 16 14:08:07 PDT 2013

On 9/16/13 4:32 AM, Roland Westrelin wrote:
> Hi Vladimir,
> Thanks for your comments.
>> You need to add jtreg tests to verify these changes for different cases (especially merge points with different profile types).
> Do you mean tests that show an improvement (artificially pollute profiling at a call site and verify that some profiling that dominates the call site helps for instance)? I have such tests but they need manual inspection of the resulting code or inlining. Given the effect of the change has no visible effects at the java level how would I automate testing? Run with -XX:+PrintInlining and parse the output? Have we done that before on other tests?

No. I just want to test correctness. Something like merging array and 
instance types, reflection, constant types etc. To make sure your new 
code in C2 types works correctly (correct inlining). Use test cases 
which you think can be problematic. Even if a test doesn't fail with 
your current changes we need it.

>> Please, explain why we need CastPP. In merge points it will leak to Phi nodes and further anyway.
> I don't see how this can be made to work in general without the extra CastPP nodes. Can you elaborate on how you would do it?

Nevermind that. You need it since it is control dependent (different 
branches can have different profiling types for the same object). Then 
why not use CheckCastPP with control edge?. CastPP is mostly used to 
cast NULLness.


> Roland.

More information about the hotspot-compiler-dev mailing list