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

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Aug 28 22:48:17 UTC 2018


Thank you, Dean

On 8/27/18 10:21 AM, dean.long at oracle.com wrote:
> Looks good.  I did not review avx changes.
> 
> A couple questions:
> 
> Did you consider adding "const char* file = NULL, int line = 0" for x86 only instead of all platforms?

Unfortunately pd_patch_instruction() method which is called from shared Label::patch_instructions() 
is not virtual and is declared on all platforms.
Also I think other platforms can implement this functionality using new API.

> 
> Are _file[] and _line[] arrays every used?

They are used in macroAssembler_x86.hpp in guarantee() in pd_patch_instruction() which is called 
when forward branches are processed in bind(Label):

http://cr.openjdk.java.net/~kvn/8209594/webrev.05/src/hotspot/cpu/x86/macroAssembler_x86.hpp.udiff.html

Thanks,
Vladimir

> 
> dl
> 
> On 8/25/18 1:05 PM, Vladimir Kozlov 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.
>>
> 


More information about the hotspot-dev mailing list