RFR: 8305321: Remove unused exports in java.desktop [v3]
Alexey Ivanov
aivanov at openjdk.org
Wed Oct 11 17:31:23 UTC 2023
On Thu, 5 Oct 2023 16:29:26 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:
>> Please review this patch that removes a number of unused exports from java.desktop native libraries.
>>
>> In most cases I removed JNIEXPORT from methods and variables that are only used within a single shared library. Other than that:
>> - removed `getSunFontIDs` that was reportedly used by rasterizer; as far as I could tell, rasterizer project is dead now, but if that's incorrect I can restore that export.
>> - removed `colorValueID` in X11Color; that field was not used.
>> - removed `J2dTraceInit` from header file. That method is only used internally by `J2dTraceImpl`.
>>
>> The methods `Transform_GetInfo` and `Transform_transform` are declared in GraphicsPrimitiveMgr, but are only used in TransformHelper. Let me know if I should move them to where they are used.
>>
>> The method `img_makePalette`, currently located in `share/native/libawt/awt/image/cvutils/img_colors.c`, is only used by `unix/native/common/awt/X11Color.c`; it could be moved to the same directory to avoid exporting the method from libawt. The files `img_colors.[ch]` do not have any references to other files in `cvutils`.
>>
>> Manually verified that the exports are no longer present after these changes. Tier1-3 and client libs tests still pass.
>
> Daniel Jeliński has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
>
> - Merge remote-tracking branch 'origin' into desktop-exports
> - Merge remote-tracking branch 'origin' into desktop-exports
> - Make J2dTraceInit static
> - Remove unnecessary exports
src/java.desktop/share/native/libawt/java2d/SurfaceData.h line 557:
> 555: */
> 556: SurfaceDataOps *
> 557: SurfaceData_GetOpsNoSetup(JNIEnv *env, jobject sData);
~~It seems to me none of the functions in `SurfaceData.h` should be exported. They all end up in `awt.dll` / `libawt.so`. I can't see any of these functions are accessed from other DLLs.~~
~~Would you like to create a separate task for removing exports from `SurfaceData` functions?~~
Some are used from `fontmanager.dll`. But not as many as we export.
Potentially all symbols exported from `awt.dll` except from `Java*` can be hidden…
I found that `Disposer_AddRecord` and `J2dTraceImpl` are used from `lcms.dll`.
src/java.desktop/share/native/libawt/java2d/Trace.c line 39:
> 37: JNIEXPORT void JNICALL
> 38: J2dTraceImpl(int level, jboolean cr, const char *string, ...)
> 39: {
`J2dTraceImpl` is used from `lcms.dll`, so it should remain exported. I thought it shouldn't be exported either.
src/java.desktop/unix/native/libawt/awt/initIDs.c line 47:
> 45: (JNIEnv *env, jclass clazz)
> 46: {
> 47: }
Shall we remove `Color.initIDs`? Its implementation is now empty for all platforms.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13261#discussion_r1355356940
PR Review Comment: https://git.openjdk.org/jdk/pull/13261#discussion_r1355354455
PR Review Comment: https://git.openjdk.org/jdk/pull/13261#discussion_r1355437407
More information about the client-libs-dev
mailing list