Integrated: 8346781: [JVMCI] Limit ServiceLoader to class initializers
Doug Simon
dnsimon at openjdk.org
Mon Feb 17 19:37:24 UTC 2025
On Mon, 23 Dec 2024 17:58:23 GMT, Doug Simon <dnsimon at openjdk.org> wrote:
> In the context of libgraal, the current use of ServiceLoader in JVMCI is problematic as libgraal does all class loading at image build time. There are static fields such as `JVMCIServiceLocator.cachedLocators` that need to be initialized [via reflection](https://github.com/oracle/graal/blob/30492c3f7847a13ae7f8dc50663a5a039e49a8e7/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/libgraal/BuildTime.java#L175-L180) when building libgraal.
>
> This PR removes the need for such reflection by moving all use of ServiceLoader in JVMCI into `<clinit>` methods. These methods are executed when building libgraal. It also removes a few other public methods and fields that are no longer used by Graal. Given that only has qualified exports to Graal, a CSR is not needed.
This pull request has now been integrated.
Changeset: 8ec58939
Author: Doug Simon <dnsimon at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/8ec589390f7dc67dd883a1efddb8da32790f6591
Stats: 166 lines in 7 files changed: 10 ins; 126 del; 30 mod
8346781: [JVMCI] Limit ServiceLoader to class initializers
Reviewed-by: never, yzheng
-------------
PR: https://git.openjdk.org/jdk/pull/22869
More information about the hotspot-compiler-dev
mailing list