RFR 4947890 : Minimize JNI upcalls in system-properties initialization

Thomas Stüfe thomas.stuefe at gmail.com
Tue Nov 13 21:21:10 UTC 2018


Hi Roger,

I somehow wonder whether that coding could be further simplified and
maybe made faster by just returning a big byte array or String from
the hotspot containing a concatenation of key-value pairs, each
separated by \0, e.g. like this:

"os.name\0linux\0os.arch\0i386\0java.io.tmpdir\0/tmp\0..."

instead of a string array, that is.

That string could be parsed in java, chopped into single string
key-value pairs, which one could feed it into the Properties.

For speedups, one could even return an integer array in addition to
the big string, containing the start indices of the key/value strings.

That way, one would also not have to maintain named indices in java.

Just a thought. I may not seeing the whole picture though.

Best Regards, Thomas
On Tue, Nov 13, 2018 at 5:03 PM Roger Riggs <Roger.Riggs at oracle.com> wrote:
>
> Please review a re-implementation of the initialization of System properties
> moving some functions from native to Java.
>
> The upcalls from native to java for each property are replaced by a
> mechanism
> to gather the platform, VM and command line properties and return them
> from a single JNI call.  The creation of the Properties instance and
> applying
> command line overrides is handled in Java instead of native.
>
> The JVM_initProperties interface in Hotspot is replaced by
> JVM_getProperties.
>
> Webrev:
>    http://cr.openjdk.java.net/~rriggs/webrev-props-only-raw/
>
> Issue:
>    https://bugs.openjdk.java.net/browse/JDK-4947890
>
> Thanks, Roger
>


More information about the core-libs-dev mailing list