RFR(M): Tiered: incorrect results in VM tests stringconcat with -Xcomp -XX:+DeoptimizeALot on solaris-amd64
Christian Thalinger
christian.thalinger at oracle.com
Tue Oct 15 10:23:45 PDT 2013
On Oct 14, 2013, at 5:38 PM, Igor Veresov <igor.veresov at oracle.com> wrote:
>
> On Oct 14, 2013, at 2:39 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>
>> You don't need 'if()':
>>
>> + if (mem->is_MergeMem()) {
>> + while (mem->is_MergeMem()) {
>>
> ok
>
>> Typo "the have" ("it is"?):
>>
>> + // now let it fall though, and see if the have a projection
>>
> yup
"though" should be "through"?
>
>> I wish you had some asserts for constructors case. May be check in debug VM that controls from Initialize to contructor don't have other uses.
>>
>
> Well, this is already handled in the control flow analysis, but sure, I'll add some code. I'll come back with this tomorrow.
>
> Thanks!
> igor
>
>> Thanks,
>> Vladimir
>>
>> On 10/14/13 1:57 PM, Igor Veresov wrote:
>>> Hi guys,
>>>
>>> I had to go back and think about the solution to clear up some doubts. While my original solution mostly worked, there is actually a more efficient way to do the analysis in polynomial time.
>>> Basically the implementation boils down to verifying that there are no side effects between the first constructor and all the following calls by following the bottom memory slices up until we find a know call. The presence of memory slices of different alias types between the calls also indicate the side effect. As for the case when side effects (calls or stores) happen after allocation and before the constructor call they always have a control dependency on initialization, and therefore will be caught by the existing control flow validation.
>>>
>>> Webrev: http://cr.openjdk.java.net/~iveresov/8009303/webrev.2/
>>>
>>> Testing: jtreg, CTW, the failing tests
>>>
>>> igor
>>>
>>>
>
More information about the hotspot-compiler-dev
mailing list