On Mon, 18 Mar 2024 22:51:55 GMT, Claes Redestad <redes...@openjdk.org> wrote:

>> This PR proposes to remove the native method `StringUTF16::isBigEndian` and 
>> its corresponding C implementation and instead rely on the 
>> `jdk.internal.misc.Unsafe::isBigEndian` method.
>> 
>> This PR passes tier1-3 tests.
>
>> Initialization order
> 
> ```java -Xlog:class+init -XX:-CompactStrings -version```:
> 
> Before:
> 
> [0.015s][info][class,init] 71 Initializing 'java/lang/StringUTF16' 
> (0x000000ff00063a20) by thread "main"
> [0.015s][info][class,init] 72 Initializing 'jdk/internal/util/ArraysSupport' 
> (0x000000ff00063c20) by thread "main"
> [0.015s][info][class,init] 73 Initializing 'jdk/internal/misc/Unsafe' 
> (0x000000ff00050de0) by thread "main"
> 
> 
> After:
> 
> [0.018s][info][class,init] 71 Initializing 'java/lang/StringUTF16' 
> (0x0000000400063a30) by thread "main"
> [0.018s][info][class,init] 72 Initializing 'jdk/internal/misc/Unsafe' 
> (0x0000000400050de0) by thread "main"
> [0.018s][info][class,init] 73 Initializing 'jdk/internal/util/ArraysSupport' 
> (0x0000000400063c30) by thread "main"
> 
> Seems the order only changes subtly. 
> 
>> Unsafe was added 2015, a few weeks before the explicit C code was added. 
>> This might indicate the previous solution was deliberate or it might be the 
>> case, the new method was not known by the author at the time.
> 
> `sun.misc.Unsafe::isBigEndian` has existed longer, and was removed when 
> `jdk.internal.misc.Unsafe` was added. `StringUTF16::isBigEndian` was added by 
> JEP 254 by a group of people who I believe would have been well aware of its 
> existence. It doesn't seem that having `StringUTF16` have a `<clinit>` 
> dependency on `Unsafe` is problematic today, though. Perhaps 
> `sun.misc.Unsafe` did more weird things back in 2015.

Thanks for the clarifications @cl4es!

-------------

PR Comment: https://git.openjdk.org/jdk/pull/18348#issuecomment-2006338283

Reply via email to