Integrated: 8312235: [JVMCI] ConstantPool should not force eager resolution
Doug Simon
dnsimon at openjdk.org
Thu Jul 27 08:42:02 UTC 2023
On Tue, 18 Jul 2023 20:35:54 GMT, Doug Simon <dnsimon at openjdk.org> wrote:
> The existing `jdk.vm.ci.meta.ConstantPool.lookupConstant(int cpi)` method forces eager resolving of constants. For `DynamicConstant`, `MethodHandle` and `MethodType`, this can mean invoking bootstrap methods, something that should not be done during JIT compilation. To avoid this, this PR adds the following to `jdk.vm.ci.meta.ConstantPool`:
>
>
> /**
> * Looks up a constant at the specified index.
> *
> * If {@code resolve == false} and the denoted constant is of type
> * {@code JVM_CONSTANT_Dynamic}, {@code JVM_CONSTANT_MethodHandle} or
> * {@code JVM_CONSTANT_MethodType} and it's not yet resolved then
> * {@code null} is returned.
> *
> * @param cpi the constant pool index
> * @return the {@code Constant} or {@code JavaType} instance representing the constant pool
> * entry
> */
> Object lookupConstant(int cpi, boolean resolve);
>
>
> Likewise, `jdk.vm.ci.meta.ConstantPool.lookupBootstrapMethodInvocation` has been fixed to no longer invoke the associated bootstrap method.
>
> ---------
> ### Progress
> - [x] Change must be properly reviewed (1 review required, with at least 1 [Reviewer](https://openjdk.org/bylaws#reviewer))
> - [x] Change must not contain extraneous whitespace
> - [x] Commit message must refer to an issue
>
>
>
> ### Reviewing
> <details><summary>Using <code>git</code></summary>
>
> Checkout this PR locally: \
> `$ git fetch https://git.openjdk.org/jdk.git pull/14927/head:pull/14927` \
> `$ git checkout pull/14927`
>
> Update a local copy of the PR: \
> `$ git checkout pull/14927` \
> `$ git pull https://git.openjdk.org/jdk.git pull/14927/head`
>
> </details>
> <details><summary>Using Skara CLI tools</summary>
>
> Checkout this PR locally: \
> `$ git pr checkout 14927`
>
> View PR using the GUI difftool: \
> `$ git pr show -t 14927`
>
> </details>
> <details><summary>Using diff file</summary>
>
> Download this PR as a diff file: \
> <a href="https://git.openjdk.org/jdk/pull/14927.diff">https://git.openjdk.org/jdk/pull/14927.diff</a>
>
> </details>
This pull request has now been integrated.
Changeset: 86821a7c
Author: Doug Simon <dnsimon at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/86821a7ce89c51cc3650228c55a4a88c743209e4
Stats: 458 lines in 8 files changed: 260 ins; 157 del; 41 mod
8312235: [JVMCI] ConstantPool should not force eager resolution
Reviewed-by: never, matsaave
-------------
PR: https://git.openjdk.org/jdk/pull/14927
More information about the hotspot-compiler-dev
mailing list