RFR (XXS): 8079156: 32 bit Java 9-fastdebug hit assertion in client mode with StackShadowPages flag value from 32 to 50

gerard ziemski gerard.ziemski at oracle.com
Tue Jul 14 15:00:49 UTC 2015

On 07/13/2015 07:42 PM, Vladimir Kozlov wrote:
> On David's question. The size of code is rounded to 64 bytes (minimum 
> allocation unit in CodeCache). So you don't need to rounding.
> We do calculate additional padding on sparc taking into account 
> instructions sizes and number of StackShadowPages pages (which banging 
> code is looping on):
> #ifdef ASSERT
>   if (UseStackBanging) {
>     pad += StackShadowPages*16 + 32;
>   }
> #endif
> But on x86 we have variable instructions size so it is not easy 
> pre-calculate it.
> So we simple set big number and if we hit the assert in codeBuffer.hpp 
> we increase it:

It sounds like we had to do this before.

Why does CodeBuffer require the space requirements in advance? Wouldn't 
it be more robust to leave it up to the CodeBuffer to figure out the 
exact memory size needed and avoid situations like this? It seems 
fragile to have to guess how big we need it and hope we don't hit the 
assert with all the bells and whistles turned on.


More information about the hotspot-dev mailing list