RFR: 8284883: JVM crash: guarantee(sect->end() <= sect->limit()) failed: sanity on AVX512
Dean Long
dlong at openjdk.java.net
Thu Apr 28 21:53:32 UTC 2022
On Thu, 28 Apr 2022 20:33:51 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:
>> This fix prevents overflowing the C2 scratch buffer for large ClearArray operations. I also noticed that when IdealizeClearArrayNode is turned off, the "is_large" flag on the ClearArray node was not set correctly, so I fixed that too.
>>
>> I could use some help testing the x86_32 change.
>
> I think we should fix code in `MacroAssembler::clear_mem()` to generate loop code (4 in loop and remaining after it) instead of line of instructions if more then 8 64-bytes move instructions are generated.
> Even with 256 value, you suggested, there will be 32 instructions. Originally it was assumed that `!is_large()` will be true for arrays with < InitArrayShortSize (64) so you will have only 8 instructions. But, as you said, InitArrayShortSize could be set to ridiculous value.
> Also forcing use Mach instruction with value loaded into register may affect spilling in surrounding code.
@vnkozlov OK, good suggestion. Let me try that.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8457
More information about the hotspot-compiler-dev
mailing list