On Fri, 24 Mar 2023 19:02:57 GMT, Vladimir Kozlov <k...@openjdk.org> wrote:

>> Cesar Soares Lucas has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   Add support for SR'ing some inputs of merges used for field loads
>
> src/hotspot/share/code/debugInfo.hpp line 199:
> 
>> 197: // ObjectValue describing an object that was scalar replaced.
>> 198: 
>> 199: class ObjectMergeValue: public ScopeValue {
> 
> Why you did not make subclass of ObjectValue? You would need to check 
> `sv->is_object_merge()` first before `sv->is_object()` in few places. But on 
> other hand you don't need to duplicates ObjectValue`s fields and asserts.

Let me try that and see how it looks.

> src/hotspot/share/opto/callnode.hpp line 511:
> 
>> 509: // by a SafePoint; 2) A scalar replaced object is participating in an 
>> allocation
>> 510: // merge (Phi) and the Phi is referenced by a SafePoint. The schematics 
>> of how
>> 511: // 'spobj' is used in both scenarios are described below.
> 
> I am not comfortable with reusing SafePointScalarObjectNode for 2) since it 
> describes totally different information.
> I think it should be separate Node which points to array of  SFSO  id (in 
> addition to Phis) similar how we do now if SFSO is referenced in other SFSO's 
> field.   SFSO could be created before the merge. Consider:
> 
>   Point p = new Point();
>   Point q = foo();
>   if (cond) {
>       q = p;
>   }
>   trap(p, q);

I had considered that but decided not to do it to prevent adding a new IR node. 
I'll give that a shot and update this thread with how it goes.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/12897#discussion_r1148150933
PR Review Comment: https://git.openjdk.org/jdk/pull/12897#discussion_r1148151474

Reply via email to