RFR (S) 8037226: compiler/7196199/Test7196199.java fails on 32-bit linux with MaxVectorSize > 16

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Mar 14 23:30:56 UTC 2014


Thank you, Igor

I fixed the comment as you suggested.

Thanks,
Vladimir

On 3/14/14 4:23 PM, Igor Veresov wrote:
> Look good, except for the typo in vm_version_x86.cpp:
>    55 // Address of instruction which causes SEGV
>    56 address VM_Version::_cpuinfo_cont_addr = 0;
> The comment probably has to say: "Address of the instruction after the one that causes SEGV" ?
>
> igor
>
> On Mar 14, 2014, at 4:01 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>
>> I updated changes to include more ymm registers to test and print them in debug VM.
>>
>> http://cr.openjdk.java.net/~kvn/8037226/webrev.01/
>>
>> Thanks,
>> Vladimir
>>
>> On 3/13/14 11:11 PM, Vladimir Kozlov wrote:
>>> WARNING: it is ugly but I don't know an other way to fix the problem and
>>> keep wide AVX vectors.
>>>
>>> Some operating systems (or VMs) does not restore upper 128 bit of AVX
>>> registers YMM after signal processing. About year ago Mac OS had this
>>> problem (8003878). And now we found 32-bit Ubuntu (Linux 3.8.0-29) which
>>> has the same problem.
>>>
>>> Instead of reducing vectorization to 16 bytes (XMM registers) I added
>>> code which verifies YMM state after signal processing and set limit on
>>> vector's size. The code is part of cpuid info code which JVM executes
>>> during startup.
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8037226
>>> http://cr.openjdk.java.net/~kvn/8037226/webrev/
>>>
>>> Tested on failing machines.
>>>
>>> thanks,
>>> Vladimir
>


More information about the hotspot-dev mailing list