[External] : Re: RFC - Improving C2 Escape Analysis
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Dec 1 20:15:21 UTC 2021
I did not finish sentence:
> We just need to know correct field's value after merge which current EA.
which current EA does not provide.
Thanks,
Vladimir K
On 12/1/21 11:35 AM, Vladimir Kozlov wrote:
> Thank you, Yang, for your input.
>
> We never planned "implement PEA for C2 according to what Graal compiler does". As you correctly pointed it would require
> a lot of changes incompatible with current C2.
>
> As I understand, Cesar and Co are also looking for a solution for merge cases first without drastically changing C2.
>
> I think we have enough info (or we can add more if needed) in C2 generated CFG we can consult to decide if some EA
> transformation/optimization are safe without drastically rewriting C2. We just need to know correct field's value after
> merge which current EA.
>
> We are not looking on the case you pointed yet. May be we can create something similar to SafePointScalarObject node for
> such purpose.
>
> Thanks,
> Vladimir K
>
> On 11/30/21 11:13 PM, Yi Yang wrote:
>> I read the discussion in this thread and aforementioned discussion of PEA by AWS, as well as related papers. I wonder
>> is it a good/feasible direction to implement PEA for C2 according to what Graal compiler does. Actually, I did some
>> exploration on this for personal interest, but I'm not sure if this direction is correct and if it is worth the time
>> to continue.
>>
>> Graal's escape analysis constructs CFG first, then traverses each basic block, each basic block has an associated
>> state set that records the alias and object state. It will clone the state for successor blocks at the control flow
>> split, and merge the state at control flow merge point.
>>
>> For example:
>> Object obj = new Object(); // Replace Allocation with VirtualAllocationNode
>> // CFG split
>> if (...) {
>> return obj; // Find alias, i.e VirtualAllocationNode, still virtual now
>> } else {
>> staticField = obj; // Materialize VirtualAllocationNode, i.e. real allocation
>> return obj; // Proj of materialized VirtualAllocationNode
>> }
>> It's able to solve the most critical control flow problem mentioned in earlier discussion. But it brings some new
>> problems:
>>
>> 0. CFG is constructed during code generation while escape analysis happens during optimization. GCM can construct CFG
>> and schedule nodes into basic blocks, but PhaseCFG::schedule_late can not work without Matcher.
>>
>> 1. Essentially it moves the location of the object allocation. Graal deletes the original allocation node and replaces
>> it with VirtualAllocationNode. This node will become a real allocation where the object needs to be materialized. Can
>> an object(Allocation) be created on demand where it should materialize? I'm worried about this.
>>
>> 2. If we implement PEA for C2 according to what Graal does, should we completely rewrite subsequent optimizations?
>> That would definitely take significant effort as far as I see. PEA is only analysis, any subsequent optimizations such
>> as scalar replacement and lock elimination need to be reimplemented. Because the existing implementation relies on
>> AllocationNode::_non_escape, Graal's PEA uses a completely novel approach.
>>
>>
>> ------------------------------------------------------------------
>> From:Vladimir Kozlov <vladimir.kozlov at oracle.com>
>> Send Time:2021 Nov. 12 (Fri.) 04:38
>> To:Cesar Soares Lucas <Divino.Cesar at microsoft.com>; Tobias Hartmann <tobias.hartmann at oracle.com>
>> Cc:John Rose <john.r.rose at oracle.com>; hotspot-dev at openjdk.java.net <hotspot-dev at openjdk.java.net>; Brian Stafford
>> <Brian.Stafford at microsoft.com>; Martijn Verburg <Martijn.Verburg at microsoft.com>; "Hohensee, Paul"
>> <hohensee at amazon.com>; Monica Beckwith <Monica.Beckwith at microsoft.com>; David Therkelsen <david.therkelsen at oracle.com>
>> Subject:Re: [External] : Re: RFC - Improving C2 Escape Analysis
>>
>> Hi Cesar,
>>
>> On 11/11/21 11:24 AM, Cesar Soares Lucas wrote:
>>> Hi Vladimir,
>>>
>>> Thank you for the feedback and sorry for the delay in getting back to you!
>>>
>>> > Yes, finding solution for allocation merges (or NULL) is a pain. I spent some
>>> > time investigating possible solutions for it but "no cigar". May be we do
>>> > indead need control flow analysis to resolve this.
>>>
>>> Can you elaborate a bit on the approaches you tried and why you didn't like
>>> them? By allocation merges do you mean nested objects like "obj1.obj2.x",
>>> right? Did you try solving both control-flow merge issues and also allocation
>>> merges?
>>
>> I mean control flow merges of allocations, like in your "Code Example 4".
>>
>> I tried to create separate unique instance IDs (in addition to Node::_idx) to use for merged allocations case (not NULL
>> case) which would look like one allocation after merge point with different paths for fields initialization. But
>> stumbles on some issues and did not proceed further. After some thinking I decided that it is wrong approach since it
>> still don't solve main merge issue of flow-insensitive analysis:
>>
>> https://bugs.openjdk.java.net/browse/JDK-6726999
>> test/hotspot/jtreg/compiler/escapeAnalysis/Test6726999.java
>>
>> The issue with deep nested allocations `new A(new B( new C)))` will be addressed by Iterative EA I propose:
>> https://bugs.openjdk.java.net/browse/JDK-8276455
>>
>>>
>>> > There are 2 test files with small methods for different EA cases I used to
>>> > see how EA works:
>>>
>>> These examples are being very helpful, thank you again! >
>>> > Yes, I think it would be good to have a prototype if you are comfortable to
>>> > work with C2 code already. I proposed small RFEs just for warmup ;)
>>>
>>> I talked with my colleagues and we decided to start the work by trying to fix
>>> the control/data-flow merge issues - *perhaps not for all cases, but at least
>>> for some of them*. Then, based on our experience with this and some
>>> benchmarking we'll decide if we really need flow-sensitive analysis and how to
>>> best approach that.
>>
>> Use Test6726999.java for that. It may need to be modified to verify correctness of results (currently it just print
>> result).
>>
>>>
>>> We'll definitely take a look at the RFEs as we move along! Implementing Stadler
>>> algorithm was just something that crossed my mind initially, it's very likely
>>> the last approach we'd try ... I don't want to bite more than I can chew..
>>
>> I may look on some RFE myself after I am done with 8276455. Please, let me know if you pick one to avoid duplicated work.
>>
>> Regards,
>> Vladimir K
>>
>>>
>>>
>>> Regards,
>>> Cesar
>>> ------------------------------------------------------------------------------------------------------------------------
>>> *From:* Vladimir Kozlov <vladimir.kozlov at oracle.com>
>>> *Sent:* October 29, 2021 5:27 PM
>>> *To:* Cesar Soares Lucas <Divino.Cesar at microsoft.com>; Tobias Hartmann <tobias.hartmann at oracle.com>; Ron Pressler
>>> <ron.pressler at oracle.com>
>>> *Cc:* John Rose <john.r.rose at oracle.com>; Mark Reinhold <mark.reinhold at oracle.com>; hotspot-dev at openjdk.java.net
>>> <hotspot-dev at openjdk.java.net>; Brian Stafford <Brian.Stafford at microsoft.com>; Martijn Verburg
>>> <Martijn.Verburg at microsoft.com>; Hohensee, Paul <hohensee at amazon.com>
>>> *Subject:* Re: [External] : Re: RFC - Improving C2 Escape Analysis
>>> On 10/29/21 4:50 PM, Cesar Soares Lucas wrote:
>>>> Hi Vladimir and Tobias,
>>>>
>>>> >> Sure, here are four examples of EA and/or scalarization failing due to
>>>> >> complicated control/data flow:
>>>> >>
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcr.openjdk.java.net%2F~thartmann%2FEA_examples&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731032568%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=hz4ti9lgmQeGLX%2BZ3vmSngXHHUAX%2FAvtObgeu%2Fqz1DI%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fcr.openjdk.java.net*2F*thartmann*2FEA_examples&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731032568*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=hz4ti9lgmQeGLX*2BZ3vmSngXHHUAX*2FAvtObgeu*2Fqz1DI*3D&reserved=0__;JSUlJX4lJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgiJmfBTxA$>
>>>
>>>>
>>>> >> There are 2 test files with small methods for different EA cases I used to
>>>> >> see how EA works:
>>>> >>
>>>> >> test/hotspot/jtreg/compiler/escapeAnalysis/Test6726999.java
>>>> >> test/hotspot/jtreg/compiler/escapeAnalysis/Test6689060.java
>>>>
>>>> Thank you for the examples, Tobias/Vladimir. This is being very helpful.
>>>>
>>>> >> Yes, finding solution for allocation merges (or NULL) is a pain. I spent
>>>> >> some time investigating possible solutions for it but "no cigar". May be we
>>>> >> do indead need control flow analysis to resolve this.
>>>>
>>>> By "need control flow analysis" you mean the flow-sensitive EA algorithm? My
>>>
>>> Yes.
>>>
>>> To clarify. I investigated solutions in current flow-insensitive EA.
>>>
>>>> first idea to handle these control/data-merge issues was to implement in C2 the
>>>> same algorithm used by GRAAL - i.e., the algorithm described in Stadler et. al
>>>> PEA paper. Do you think this is reasonable?
>>>
>>> Yes, I think it would be good to have a prototype if you are comfortable to work with C2 code already.
>>> I proposed small RFEs just for warmup ;)
>>>
>>>>
>>>> >> I am currently looking on iterative EA. Do more EA rounds if we can
>>>> >> eliminate more connected allocations. It was proposed by Vladimir Ivanov and
>>>> >> I have working prototype.
>>>>
>>>> Cool! I'm curious, when do you plan to submit a Pull Request for this?
>>>
>>> I am investigating regressions in some benchmarks.
>>>
>>>>
>>>> >> There is also suggestion from Amazon Java group about "C2 Partial Escape
>>>> >> Analysis" which needs more discussion:
>>>> >>
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.openjdk.java.net%2Fpipermail%2Fhotspot-compiler-dev%2F2021-May%2F047486.html&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731032568%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=S65Ko1Jss1PRksoLs9w1Ci7lH7Cprikus4goFUXDdL4%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fmail.openjdk.java.net*2Fpipermail*2Fhotspot-compiler-dev*2F2021-May*2F047486.html&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731032568*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=S65Ko1Jss1PRksoLs9w1Ci7lH7Cprikus4goFUXDdL4*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrghkjcrRWA$>
>>>
>>>>
>>>> I'd love to hear from them about their experience with these issues and if they
>>>> have any plans to work on this moving forward! I'll ping them on the thread
>>>> that you linked above.
>>>
>>> Yes, I would like them to participate too (CCing to Paul). They sent proposal almost 6 months ago and we did not hear
>>> any additional information after Vladimir Ivanov replied.
>>>
>>> Regards,
>>> Vladimir K
>>>
>>>>
>>>>
>>>> Regards,
>>>> Cesar
>>>> ------------------------------------------------------------------------------------------------------------------------
>>>>
>>>> *From:* Vladimir Kozlov <vladimir.kozlov at oracle.com>
>>>> *Sent:* October 27, 2021 10:26 AM
>>>> *To:* Tobias Hartmann <tobias.hartmann at oracle.com>; Cesar Soares Lucas <Divino.Cesar at microsoft.com>; Ron Pressler
>>>> <ron.pressler at oracle.com>
>>>> *Cc:* John Rose <john.r.rose at oracle.com>; Mark Reinhold <mark.reinhold at oracle.com>; hotspot-dev at openjdk.java.net
>>>> <hotspot-dev at openjdk.java.net>; Brian Stafford <Brian.Stafford at microsoft.com>; Martijn Verburg
>>>> <Martijn.Verburg at microsoft.com>
>>>> *Subject:* Re: [External] : Re: RFC - Improving C2 Escape Analysis
>>>> First. Thank you, Cesar, for collecting data about C2 EA shortcomings.
>>>>
>>>> I agree with cases Tobias pointed as possible starting points to improve EA.
>>>>
>>>> Yes, finding solution for allocation merges (or NULL) is a pain. I spent some time investigating possible solutions for
>>>> it but "no cigar". May be we do indead need control flow analysis to resolve this.
>>>>
>>>> I looked through JBS and found few issues which are not required to write new EA:
>>>>
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.openjdk.java.net%2Fbrowse%2FJDK-7149991&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731032568%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=w1OPBcpSVInagqRbMJ9%2BB0XYxxm84DWKGltPT5Btjss%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-7149991&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731032568*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=w1OPBcpSVInagqRbMJ9*2BB0XYxxm84DWKGltPT5Btjss*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgheYcbU4Q$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-7149991%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DQrR7*2BGxXon4ToV6x3PhtQzZGl5tF7f1RUDbEi2AMTqA*3D%26amp%3Breserved%3D0__%3BJSUlJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx0nlxftOg%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731032568%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Z%2B99B925iq8y%2BCcl%2Bs3zsocygNtEpAl%2F22xgX5CJcFg%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-7149991*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DQrR7*2BGxXon4ToV6x3PhtQzZGl5tF7f1RUDbEi2AMTqA*3D*26amp*3Breserved*3D0__*3BJSUlJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx0nlxftOg*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731032568*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=Z*2B99B925iq8y*2BCcl*2Bs3zsocygNtEpAl*2F22xgX5CJcFg*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKiUlJSoqKioqKioqKioqKiUlJSoqJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgiwzRBBlA$>>
>>>
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.openjdk.java.net%2Fbrowse%2FJDK-8059378&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=iFo%2Farh7mS777oQl705t5pznFZttfMGqFO6%2BQpr71uY%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8059378&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=iFo*2Farh7mS777oQl705t5pznFZttfMGqFO6*2BQpr71uY*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4Zrgjj331Sew$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8059378%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DrsMHgOyTDYF*2B*2Ba38jGeown5TcZfIEDucAWI5QuAaTd4*3D%26amp%3Breserved%3D0__%3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx3fmFwUkA%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=30G1N2vm%2BTNOgRtDesl3ssesCGuvx2RUqyw6tns%2FDi0%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8059378*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DrsMHgOyTDYF*2B*2Ba38jGeown5TcZfIEDucAWI5QuAaTd4*3D*26amp*3Breserved*3D0__*3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx3fmFwUkA*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=30G1N2vm*2BTNOgRtDesl3ssesCGuvx2RUqyw6tns*2FDi0*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKiUlJSoqKioqKioqKioqKiUlJSoqKiUlJSUlJSUlJSUlJSUlJSUlJSUl!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgjBgIowbA$>>
>>>
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.openjdk.java.net%2Fbrowse%2FJDK-8073358&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=wkSutLxq2%2B%2FqUsUViubbNO97gQQ9I91%2FarNQqQxIFC8%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8073358&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=wkSutLxq2*2B*2FqUsUViubbNO97gQQ9I91*2FarNQqQxIFC8*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSUl!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4Zrgh-8TmvrA$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8073358%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DCypHNEd5B5EymTYMnF6jf30LspY6sBqXoz1sypE2tSg*3D%26amp%3Breserved%3D0__%3BJSUlJSUlJSUlJSUlJSUlJSUl!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx2VVMtprg%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=qcUOOBHFXNmPXPvG66KDzdlFQvTZ453fdsUliva4W8A%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8073358*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DCypHNEd5B5EymTYMnF6jf30LspY6sBqXoz1sypE2tSg*3D*26amp*3Breserved*3D0__*3BJSUlJSUlJSUlJSUlJSUlJSUl!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx2VVMtprg*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=qcUOOBHFXNmPXPvG66KDzdlFQvTZ453fdsUliva4W8A*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKiUlJSoqKioqKioqKioqKiUlJSolJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrghnfIIXrA$>>
>>>
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.openjdk.java.net%2Fbrowse%2FJDK-8155769&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=oCMhOgnX0FjV4j%2Bymy7z8Op6IFfd8z71AZ%2BZlqbYWSU%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8155769&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=oCMhOgnX0FjV4j*2Bymy7z8Op6IFfd8z71AZ*2BZlqbYWSU*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrggugJT1_A$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8155769%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DBE170*2BZrn2c2*2FDLcijZsol25q2zY5X5idHXXwjCn7ug*3D%26amp%3Breserved%3D0__%3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx3hRRGkQg%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Irx%2Bc6pTAZmB6ipB2IF2ma%2BVE7t0mXK%2Fl7%2BiwhPntPA%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8155769*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DBE170*2BZrn2c2*2FDLcijZsol25q2zY5X5idHXXwjCn7ug*3D*26amp*3Breserved*3D0__*3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx3hRRGkQg*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=Irx*2Bc6pTAZmB6ipB2IF2ma*2BVE7t0mXK*2Fl7*2BiwhPntPA*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKiUlJSoqKioqKioqKioqKiUlJSoqKiUlJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgiWf_hS0w$>>
>>>
>>>>
>>>> Tobias also has fix prototype for next bug which was not fixed yet:
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.openjdk.java.net%2Fbrowse%2FJDK-8236493&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=KCLrH3%2FnNhLANzyGrbCLILwuDUfql5h3Lx0REVsol%2F0%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8236493&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=KCLrH3*2FnNhLANzyGrbCLILwuDUfql5h3Lx0REVsol*2F0*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4Zrgjz1pKoaQ$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8236493%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DfqaQ7zhAHGdsnUcw7wjA6c4XX96Aaa3acTIzc6*2FJXmY*3D%26amp%3Breserved%3D0__%3BJSUlJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx2urgFigw%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=TEd4GjLj1FC%2BwwBaix%2B0JwWoSX7ch0nCsVmsI4VDc%2B4%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-8236493*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262611242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DfqaQ7zhAHGdsnUcw7wjA6c4XX96Aaa3acTIzc6*2FJXmY*3D*26amp*3Breserved*3D0__*3BJSUlJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx2urgFigw*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=TEd4GjLj1FC*2BwwBaix*2B0JwWoSX7ch0nCsVmsI4VDc*2B4*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKiUlJSoqKioqKioqKioqKiUlJSoqJSUlJSUlJSUlJSUlJSUlJSUlJSUl!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrghE9H_vWw$>>
>>>
>>>>
>>>> Ther are 2 test files with small methods for different EA cases I used to see how EA works:
>>>>
>>>> test/hotspot/jtreg/compiler/escapeAnalysis/Test6726999.java
>>>> test/hotspot/jtreg/compiler/escapeAnalysis/Test6689060.java
>>>>
>>>> You can start looking on above RFE/bug or run these tests and see why scalarization failed for some cases. Except for
>>>> known merge issue:
>>>>
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.openjdk.java.net%2Fbrowse%2FJDK-6853701&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=vYIhnXEGGw%2FLx83NKcCAu0Vdt382TngtfpQ%2BCDBq7cU%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-6853701&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=vYIhnXEGGw*2FLx83NKcCAu0Vdt382TngtfpQ*2BCDBq7cU*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgjXHRgx9A$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-6853701%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262621193*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DF*2Bz1CFuCK6ZgXi5*2FWOcOgBWuXKeap0oZJh4873QKRgk*3D%26amp%3Breserved%3D0__%3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx1olloG2Q%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731042513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=1G7%2FG24Dpl23jat0F6EMv7EU8ezR2RoviINRcopQwpw%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fbugs.openjdk.java.net*2Fbrowse*2FJDK-6853701*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262621193*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DF*2Bz1CFuCK6ZgXi5*2FWOcOgBWuXKeap0oZJh4873QKRgk*3D*26amp*3Breserved*3D0__*3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx1olloG2Q*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731042513*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=1G7*2FG24Dpl23jat0F6EMv7EU8ezR2RoviINRcopQwpw*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKiUlJSoqKioqKioqKioqKiUlJSoqKiUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4Zrgg10-OyiA$>>
>>>
>>>>
>>>> I am currently looking on iterative EA. Do more EA rounds if we can eliminate more connected allocations. It was
>>>> proposed by Vladimir Ivanov and I have working prototype.
>>>>
>>>> There is also suggestin from Amazon Java group about "C2 Partial Escape Analysis" which needs more discsussion:
>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.openjdk.java.net%2Fpipermail%2Fhotspot-compiler-dev%2F2021-May%2F047486.html&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731052481%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=VUDTiLcJzwQkcUHQzLk7vcOIjmqSKQt8glKSrTHRX6w%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fmail.openjdk.java.net*2Fpipermail*2Fhotspot-compiler-dev*2F2021-May*2F047486.html&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731052481*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=VUDTiLcJzwQkcUHQzLk7vcOIjmqSKQt8glKSrTHRX6w*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgihwSqtAQ$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fmail.openjdk.java.net*2Fpipermail*2Fhotspot-compiler-dev*2F2021-May*2F047486.html%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262621193*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DQFszHSDnPkYLBkjqzNkmU92P6VlBFSok1mOku5sNudw*3D%26amp%3Breserved%3D0__%3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx2tIPFENw%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731052481%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=eEcFdBEBJb%2Bg%2F2NYA9mp3%2BaBRhshP8Nk9R7lCIrpc7A%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fmail.openjdk.java.net*2Fpipermail*2Fhotspot-compiler-dev*2F2021-May*2F047486.html*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262621193*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DQFszHSDnPkYLBkjqzNkmU92P6VlBFSok1mOku5sNudw*3D*26amp*3Breserved*3D0__*3BJSUlJSUlJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx2tIPFENw*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731052481*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=eEcFdBEBJb*2Bg*2F2NYA9mp3*2BaBRhshP8Nk9R7lCIrpc7A*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKioqJSUlKioqKioqKioqKioqJSUlKiUlJSUlJSUlJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrggBRWcARQ$>>
>>>
>>>>
>>>> Thanks,
>>>> Vladimir K
>>>>
>>>> On 10/27/21 3:04 AM, Tobias Hartmann wrote:
>>>>> Hi Cesar,
>>>>>
>>>>> On 27.10.21 08:20, Cesar Soares Lucas wrote:
>>>>>> Right. I was suspecting this to be the most critical issue indeed. However, I
>>>>>> didn't know there was a case where "... the object does not escape on any paths
>>>>>> but control flow is too complicated for EA to prove that." Is this an issue
>>>>>> tracked in JBS or perhaps you can show me an example where this happens?
>>>>>
>>>>> Sure, here are four examples of EA and/or scalarization failing due to complicated control/data
>>>>> flow:
>>>>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcr.openjdk.java.net%2F~thartmann%2FEA_examples&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731052481%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=jv5lNO928mVyKHHlZIKyQ2eZGfu4W9ADV%2BlyX2IAvlk%3D&reserved=0
>>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Fcr.openjdk.java.net*2F*thartmann*2FEA_examples&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731052481*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=jv5lNO928mVyKHHlZIKyQ2eZGfu4W9ADV*2BlyX2IAvlk*3D&reserved=0__;JSUlJX4lJSUlJSUlJSUlJSUlJSU!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4Zrgjd4sxUaQ$>
>>>
>>>
>>>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Furldefense.com%2Fv3%2F__https%3A%2F%2Fnam06.safelinks.protection.outlook.com%2F%3Furl%3Dhttps*3A*2F*2Fcr.openjdk.java.net*2F*thartmann*2FEA_examples%26amp%3Bdata%3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262621193*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000%26amp%3Bsdata%3DYbaF4T0zt9dle23nulvUWWLktuTvaWFWENQHD7Q13CE*3D%26amp%3Breserved%3D0__%3BJSUlJX4lJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx03YEOG3w%24&data=04%7C01%7CDivino.Cesar%40microsoft.com%7C027f2da3f2e14f914c2608d99b3c195e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637711504731052481%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=1eI2my4BwLVxIqImsawvnY1sAHVV2Jth2lnMBmMLwFI%3D&reserved=0
>>>>
>>> <https://urldefense.com/v3/__https://nam06.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__https*3A*2F*2Fnam06.safelinks.protection.outlook.com*2F*3Furl*3Dhttps*3A*2F*2Fcr.openjdk.java.net*2F*thartmann*2FEA_examples*26amp*3Bdata*3D04*7C01*7CDivino.Cesar*40microsoft.com*7C63920cb1798f48c3487508d9996efd44*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637709524262621193*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000*26amp*3Bsdata*3DYbaF4T0zt9dle23nulvUWWLktuTvaWFWENQHD7Q13CE*3D*26amp*3Breserved*3D0__*3BJSUlJX4lJSUlJSUlJSUlJSUlJQ!!ACWV5N9M2RV99hQ!Y9n_pFC3a0ZG4KrWKJhrn9mlogJtuWmPqPlYgyNTBHWD2o2yhpaz9QpDsRbFhx03YEOG3w*24&data=04*7C01*7CDivino.Cesar*40microsoft.com*7C027f2da3f2e14f914c2608d99b3c195e*7C72f988bf86f141af91ab2d7cd011db47*7C1*7C0*7C637711504731052481*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=1eI2my4BwLVxIqImsawvnY1sAHVV2Jth2lnMBmMLwFI*3D&reserved=0__;JSUlJSUlJSUlJSUqKioqKiolJSUqKioqKioqKioqKiolJSUqJSUlJSUlJSUlJSUlJSUlJSUl!!ACWV5N9M2RV99hQ!a2yltdzJejKSFAqSoN7N5X0yqmRW0Nb7yS2_bBOlp6rrf8axPBXgR9arXi4ZrgiSyzgF4A$>>
>>>
>>>>>
>>>>> All examples would completely fold with inline types (Valhalla).
>>>>>
>>>>> I'm not sure if these issues are tracked by JBS issues but there's most likely an overlap with some
>>>>> of the issues you already described.
>>>>>
>>>>> Best regards,
>>>>> Tobias
>>>>>
More information about the hotspot-dev
mailing list