[12] RFR(M) 8209594: guarantee(this->is8bit(imm8)) failed: Short forward jump exceeds 8-bit offset

Chuck Rasbold rasbold at google.com
Mon Aug 27 18:00:57 UTC 2018


Thanks, Vladimir. This looks good to me also.

We also recently detected the failing guarantee for jmpb(CLEANUP) in
MacroAssembler::string_indexof().
Your new diagnostics are better than the ones I was working on.

How did you instrument the code to generate the largest possible code
sequence? I found a couple of incorrect short jumps in
vectorized_mismatch() which may be considered false positives; the xmm
registers always are in the lower bank.




On Sat, Aug 25, 2018 at 1:05 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com
> wrote:

> http://cr.openjdk.java.net/~kvn/8209594/webrev.05/
> https://bugs.openjdk.java.net/browse/JDK-8209594
>
> All platforms are affected. Please, test.
>
> I instrumented code to generated biggest code and find all possible
> incorrect short jumps. This is the result.
>
> Changed jump instruction patching API to added jump's source location in
> debug build but implemented it only on x86. I tired to search instructions
> by code offsets. I used very simple macro:
>
> #define jmpb(L) jmpb_0(L, __FILE__, __LINE__)
>
> 'do {} while(0)' does not work here because I need to replace non-static
> method. I will be glad if someone can give better suggestion how implement
> this macro.
>
> Fixed incorrect avx512 code in macroAssembler_x86.cpp and x86.ad file.
> There were missing instructions and incorrect instructions (copy-paste
> typos).
>
> Fixed C2 scratch buffer sizing. It did not take into account everything
> and as result from MAX_inst_size=1024 only 700 bytes were available. I hit
> this issue when RTM locking was generated for FastLock node.
>
> Tested tier1-3 on all our platforms. And also running these tiers on
> avx512 machine.
>
> --
> Thanks,
> Vladimir
>


More information about the hotspot-dev mailing list