RFR (S): 8012972: Incremental Inlining should support scalar replaced object in debug info

Christian Thalinger christian.thalinger at oracle.com
Fri Aug 23 12:21:33 PDT 2013


Looks good.  -- Chris

On Aug 23, 2013, at 10:43 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

> I did additional testing with expanded incremental inlining and have to add additional changes in callnode.cpp:
> - the assert(scl_size() == 0) is not correct anymore;
> - and I have to shift input edges preserving their order when inserting or removing monitors debug info because they precede scalar fields info.
> 
> http://cr.openjdk.java.net/~kvn/8012972/webrev.01/
> 
> And I did full testing again.
> 
> Thanks,
> Vladimir
> 
> On 8/20/13 6:22 PM, Vladimir Kozlov wrote:
>> http://cr.openjdk.java.net/~kvn/8012972/webrev/
>> 
>> We need incremental inlining after EA but it does not work with
>> SafePointScalarObject nodes in debug info.
>> SafePointScalarObjectNode::_first_index is input edge's index in
>> safepoint node where start input edges which point to scalarized
>> object's fields. With incremental inlining debuginfo (jvms) edges can
>> change because of inlining and _first_index will be incorrect. To update
>> _first_index in all places where we modify debug info is too complex (I
>> tried).
>> 
>> The solution is to store in _first_index not absolute index but an index
>> relative to the last (youngest) jvms->_scloff value (which is already
>> updated during debug info updates). Note, that scalarized object fields
>> edges are the last input edges after all regular debug info edges. So
>> they start at sfpt->jvms()->scloff() edge.
>> 
>> Tested with jtreg tests, ctw, jprt, also jtreg tests with
>> -XX:+DeoptimizeALot flag.
>> 
>> Thanks,
>> Vladimir
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 



More information about the hotspot-compiler-dev mailing list