RFR: 8133951: Zero interpreter asserts in stubRoutines.cpp
Coleen Phillimore
coleen.phillimore at oracle.com
Wed Aug 19 18:21:23 UTC 2015
I can make the change like this. Thank you for finding where the 0
size comes from! I didn't notice initially that code_size1 and 2 were
constants.
Coleen
On 8/19/15 2:15 PM, Vladimir Kozlov wrote:
> I found it in stubRoutines_zero.hpp:
>
> enum platform_dependent_constants {
> code_size1 = 0, // The assembler will fail with a guarantee
> code_size2 = 0 // if these are too small. Simply increase
> }; // them if that happens.
>
> That is why zero hits assert.
>
> I think asserts should be relaxed as:
>
> assert(code_size1 == 0 || buffer.insts_remaining() > 200, "increase
> code_size1");
>
> assert(code_size2 == 0 || buffer.insts_remaining() > 200, "increase
> code_size2");
>
> Thanks,
> Vladimir
>
> On 8/19/15 10:57 AM, Vladimir Kozlov wrote:
>> Insts sizes are set by CodeBuffer constructor which is called before
>> StubGenerator_generate:
>>
>> CodeBuffer buffer(_code1);
>> StubGenerator_generate(&buffer, false);
>>
>> See CodeBuffer::initialize() and CodeSection::initialize(). So if
>> nothing generated insts_remaining() should be code_size1 value. Why it
>> is not?
>>
>> Thanks,
>> Vladimir
>>
>> On 8/19/15 10:45 AM, Coleen Phillimore wrote:
>>> Summary: Allow zero sized code buffer when checking if there's enough
>>> remaining size
>>>
>>> open webrev at http://cr.openjdk.java.net/~coleenp/8133951/
>>> bug link https://bugs.openjdk.java.net/browse/JDK-8133951
>>>
>>> Tested with java -version of zero and runThese -jck tests.
>>>
>>> Thanks,
>>> Coleen
More information about the hotspot-dev
mailing list