RFR (S) 8184753: Assert against MinObjectAlignmentMask to avoid integer division
Mikael Gerdin
mikael.gerdin at oracle.com
Tue Jul 18 07:48:12 UTC 2017
Hi Aleksey,
On 2017-07-17 21:40, Aleksey Shipilev wrote:
> On 07/17/2017 06:00 PM, Aleksey Shipilev wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8184753
>>
>> fastdebug builds performance is important to minimize testing time. In GC tests,
>> we have a big hotspot at this line in oop::size_given_klass():
>> assert(s % MinObjAlignment == 0, "Oop size is not properly aligned: %d", s);
>>
>> The hotspot is because of the integer division. Alas, the divisor is not known
>> at compile time, because it can be set from the JVM command line, so compiler
>> cannot optimize it. There is an easy fix, use the MinObjectAlignmentMask to assert:
>> http://cr.openjdk.java.net/~shade/8184753/webrev.01
>>
>> This also fixes all uses of MinObjAlignment in similar expressions.
>
> Noticed two new asserts in arguments.cpp have excess whitespace, fixed:
> http://cr.openjdk.java.net/~shade/8184753/webrev.02
Did you consider using is_object_aligned in the newly created align.hpp?
http://hg.openjdk.java.net/jdk10/hs/hotspot/file/5e9c41536bd2/src/share/vm/utilities/align.hpp#l120
inline bool is_object_aligned(size_t word_size) {
return is_aligned(word_size, MinObjAlignment);
}
Thanks
/Mikael
>
> -Aleksey
>
More information about the hotspot-dev
mailing list