[12] RFR: 8215194: Initial size of UnicodeBlock map is incorrect
Naoto Sato
naoto.sato at oracle.com
Tue Dec 11 22:29:40 UTC 2018
Hi Claes,
I don't see any particular reason for that. In fact, I was wondering the
same thing, but just left it as it was. Since I've already pushed the
changeset, I will fix it on the next occasion.
Naoto
On 12/11/18 2:31 PM, Claes Redestad wrote:
> Hi Naoto,
>
> while the here fix looks good, I can't help wondering why the map isn't
> final?
>
> /Claes
>
> On 2018-12-11 19:59, Naoto Sato wrote:
>> Hi Ivan,
>>
>> Thank you for the review.
>>
>> On 12/11/18 10:49 AM, Ivan Gerasimov wrote:
>>> OptimalCapacity.ofHashMap uses the initialCapacity to verify that a
>>> HashMap created with that initialCapacity will not reallocate its
>>> internal array after inserting the factual number of elements.
>>>
>>> So, if one day the number of entities is increased, but the constant
>>> NUM_ENTITIES is not updated, then the test will catch it.
>>
>> Actually the reason I am fixing it is that, the test did not detect
>> the discrepancy with Unicode 11 upgrade, where it just increased the
>> entry numbers by the true block increases (11 blocks), without adding
>> their aliases.
>>
>> ---
>>
>> --- a/src/java.base/share/classes/java/lang/Character.java Wed Nov
>> 14 13:15:54 2018 +0100
>> +++ b/src/java.base/share/classes/java/lang/Character.java Wed Nov
>> 21 14:24:31 2018 +0530
>> @@ -43,7 +43,7 @@
>> * a character's category (lowercase letter, digit, etc.) and for
>> converting
>> * characters from uppercase to lowercase and vice versa.
>> * <p>
>> - * Character information is based on the Unicode Standard, version
>> 10.0.0.
>> + * Character information is based on the Unicode Standard, version
>> 11.0.0.
>> * <p>
>> * The methods and data of class {@code Character} are defined by
>> * the information in the <i>UnicodeData</i> file that is part of the
>> @@ -681,11 +681,11 @@
>> */
>> public static final class UnicodeBlock extends Subset {
>> /**
>> - * 638 - the expected number of entities
>> + * 649 - the expected number of entities
>> * 0.75 - the default load factor of HashMap
>> */
>> private static Map<String, UnicodeBlock> map =
>> - new HashMap<>((int)(638 / 0.75f + 1.0f));
>> + new HashMap<>((int)(649 / 0.75f + 1.0f));
>>
>> /**
>> * Creates a UnicodeBlock with the given identifier name.
>> ---
>>
>> However, the HashMap allocates the entry size to the nearest power of
>> two number, i.e., 1024 for both numbers 649 and 667. Thus the test
>> passes even if there is discrepancy.
>>
>> Naoto
More information about the core-libs-dev
mailing list