RFR 8199756 : Simplify language, country, script, and variant property initialization

mandy chung mandy.chung at oracle.com
Thu Mar 22 19:10:59 UTC 2018


The performance concern is a fair point and it'll need the benchmark and 
proper perf measurement.  It's okay with me to follow up as a separate 
clean up and you already have the work started any way.

Mandy

On 3/22/18 12:01 PM, Roger Riggs wrote:
> Hi Mandy,
>
> This is just one step in untangling and improving property 
> initialization.
>
> I'm also working on a change similar to what you suggest to remove 
> some/more of the upcalls
> and replace them with setting fields. In that case, the adjustments to 
> the values would be handled in java.
>
> I have performance concern (as yet unmeasured)  that moving from using 
> a mostly native encoding function
> (JNU_NewStringPlatform) to a Java based encoding will hurt startup 
> performance. (its too early to be compiled).
>
> So for now, I'd like to commit this as is and work on the next step 
> separately.
>
> Thanks, Roger
>
> On 3/22/18 2:19 PM, mandy chung wrote:
>> Hi Roger,
>>
>> Thanks for adding the test that should have created when JDK-4700857 
>> was resolved.
>>
>> Since this fix changes the setting of those i18n properties to later 
>> after JVM_InitProperties is called, it would be a good opportunity to 
>> set these properties in Java and remove the native fillI18nProps 
>> method.  What it needs from Java is to get the value of 
>> sprops->display_XXX, one option is to define a Java class holding 
>> these displayXXX fields that are set by initProperties directly.
>>
>> What do you think?
>>
>> Mandy
>>
>> On 3/22/18 8:24 AM, Roger Riggs wrote:
>>> Hi,
>>>
>>> The webrev[1] has been updated with a new test added to verify that 
>>> if a user.* property
>>> is defined on the command line, then corresponding property has the 
>>> same value and
>>> correctly overrides any value from the platform.
>>>
>>> After verification, the comment (line 304) has been corrected to 
>>> refer to the platform native
>>> encoding of bytes -> strings instead of the user.* I18N properties.
>>>
>>> The tests for properties and locales have been run and passed in a 
>>> variety of locales.
>>>
>>> Thanks, Roger
>>>
>>> [1] http://cr.openjdk.java.net/~rriggs/webrev-prop-simplify-8199756/
>>>
>>>
>>> On 3/19/2018 6:38 PM, David Holmes wrote:
>>>> Hi Roger,
>>>>
>>>> On 19/03/2018 11:55 PM, Roger Riggs wrote:
>>>>> Hi Alan,
>>>>>
>>>>> The original changeset [1] is most easily viewed in the jdk-8u repo.
>>>>>
>>>>> The comment and placement of the removes of the properties and the 
>>>>> code to re-set them
>>>>> around the call to the JVM_InitProperties (which sets properties 
>>>>> from the
>>>>> -D arguments among others), seem to indicate that the previous 
>>>>> property
>>>>> values are irrelevant.
>>>>
>>>> Not irrelevant: defaults.
>>>>
>>>>>
>>>>> The remaining question is whether there are any side effects or 
>>>>> usage of those
>>>>> four property values between the time they are initially set and 
>>>>> when they are removed.
>>>>> The code in System.initProperties is straightforward and the bulk 
>>>>> of the code
>>>>> is simply setting property values, with one interspersed call to 
>>>>> initialize the sun.jnu_encoding.
>>>>>  From all appearances there are no side effects or uses of the 
>>>>> initially set values of those four properties.
>>>>
>>>> I would have expected these values to possibly have an impact on 
>>>> InitalizeEncoding and subsequent use of PUTPROP_ForPlatformNString. 
>>>> Else why set them early then unset them again? Or maybe they impact 
>>>> any error messages that might arise in this stage of initialization?
>>>>
>>>> I expect any issues here to be extremely subtle - as Alan 
>>>> indicated. If there is any path to Java code that may try to read 
>>>> and use these properties then they need to be set.
>>>>
>>>> And if these are truly unnecessary then doesn't that imply that 
>>>> placing them in sprops via GetJavaProperties in the first place is 
>>>> also unnecessary?
>>>>
>>>> Has this been extensively tested on a non-English Windows system? 
>>>> And do we even have tests for various initialization failures?
>>>>
>>>> David
>>>> -----
>>>>
>>>>> Thanks, Roger
>>>>>
>>>>> [1] https://bugs.openjdk.java.net/browse/JDK-4700857
>>>>>      RFE: separating user locale and user interface locale
>>>>>
>>>>> On 3/17/18 5:46 AM, Alan Bateman wrote:
>>>>>> On 16/03/2018 20:32, Roger Riggs wrote:
>>>>>>> Please review a small simplification of the initialization of 
>>>>>>> System properties for
>>>>>>> language, country, script, and variant.  Some steps for 
>>>>>>> initializing them are unnecessary.
>>>>>>> The tests pass; a careful review would be appreciated so as to 
>>>>>>> avoid breakage.
>>>>>>>
>>>>>>> Webrev:
>>>>>>> http://cr.openjdk.java.net/~rriggs/webrev-prop-simplify-8199756/
>>>>>>>
>>>>>>> Issue:
>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8199756
>>>>>> There are subtle interactions with how system properties are set 
>>>>>> in the VM and on the command line which will take a bit effort to 
>>>>>> research in order to review this and be satisfied that the change 
>>>>>> is safe. Have you dug into the ancient history and bugs to see 
>>>>>> why it was done this way?
>>>>>>
>>>>>> -Alan
>>>>>
>>>
>>
>



More information about the core-libs-dev mailing list