Request for reviews (S): 7160610: Unknown Native Code compilation issue
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Apr 12 15:29:04 PDT 2012
http://cr.openjdk.java.net/~kvn/7160610/webrev
I updated webrev with added regression test and using BasicType for input's type
verification. And I ran nsk, full CTW and compiler regression tests with
-XX:-OptimizeFile and -XX:-TieredCompilation. They passed.
Thanks,
Vladimir
Vladimir Kozlov wrote:
> On 4/11/12 9:34 PM, Tom Rodriguez wrote:
>>
>> On Apr 11, 2012, at 9:15 PM, Vladimir Kozlov wrote:
>>>>> http://cr.openjdk.java.net/~kvn/7160610/webrev
>>>>>
>>>>> 7160610: Unknown Native Code compilation issue
>>>>>
>>>>> When constructing input vector use type of vector's operation which
>>>>> use it since element's sizes should match. In the bug case byte
>>>>> value is used for initialization of int[] array. The store vector
>>>>> is Store2I and input's type (byte) was used to construct init
>>>>> vector but there is no Replicate2B. Even if Replicate2B existed it
>>>>> will be wrong since it initialize only lowest 2 bytes.
>>>>
>>>> Why does in_bb(opd) ever affect which type to use?
>>>
>>> If you ask why we had this condition, I don't know. I also think it
>>> is bogus.
>>
>> Yes, that's what I'm asking. Maybe it's some kind of shortcut check
>> for whether it's part of the pack or not?
>
> I think it was simple shortcut to get type. Nodes in loop has special
> types velt_type() pre-calculated for them, like next (in container_type()):
>
> if (t->basic_type() == T_INT) {
> if (t->higher_equal(TypeInt::BOOL)) return TypeInt::BOOL;
> if (t->higher_equal(TypeInt::BYTE)) return TypeInt::BYTE;
> ...
>
>> We probably need to run a bunch of code past this to make sure it
>> doesn't break anything. Don't we have a few regressions tests that
>> exercise this pretty well?
>
> I doubt we have such tests for vectors. Vectors were introduced eons ago
> and we hit this bug only with 7u2. Also OptimizeFill optimization
> reduced number of cases for vectorized loops. I start writing
> TestVect.java in my big vectors changes to cover common cases but I
> think we need to ask QE to write more tests for more coverage.
> Especially for vector arithmetic.
>
> It reminds me that I need to add the test from bug report to the
> compiler regression tests.
>
> I will run nsk, full CTW and compiler regression tests tomorrow.
>
>>> I will change it to next to verify that all packed input's has the
>>> same type (they should, since they come from loop unrolling/node
>>> cloning):
>>>
>>> DEBUG_ONLY( const Type* opd_t = opd->bottom_type();
>>>
>>> assert(opd_t == in->bottom_type(), "all same type");
>>
>> That wouldn't necessarily be true would it? It could be a more
>> precise type but still the same BasicType couldn't it?
>
> You are right, may be I should use just BasicType.
>
> Vladimir
>
>>
>> tom
>>
>>>
>>> Vladimir
>>>
>>>>
>>>> tom
>>>>
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>
>>
More information about the hotspot-compiler-dev
mailing list