RFR: 8315771: [JVMCI] Resolution of bootstrap methods with int[] static arguments [v6]
Sacha Coppey
duke at openjdk.org
Fri Sep 8 15:41:44 UTC 2023
> Currently, `jdk.vm.ci.meta.ConstantPool.lookupBootstrapMethodInvocation` does not support static arguments of type `int[]`.
>
> Supporting those static arguments allows to correctly lookup the `BootstrapMethodInvocation` of some `InvokeDynamic` and `DynamicConstant`.
>
> To lookup the constant at the index in the static arguments index list, a new class is introduced, allowing to lazily resolve the constant or obtain the constant pool index of the arguments:
>
>
> static class CachedBSMArgs extends AbstractList<JavaConstant> {
> private final JavaConstant[] cache;
> private final HotSpotConstantPool cp;
> private final int bssIndex;
>
> CachedBSMArgs(HotSpotConstantPool cp, int bssIndex, int size) {
> this.cp = cp;
> this.bssIndex = bssIndex;
> this.cache = new JavaConstant[size];
> }
>
> @Override
> public JavaConstant get(int index) {
> JavaConstant res = cache[index];
> if (res == null) {
> int argCpi = compilerToVM().bootstrapArgumentIndexAt(cp, bssIndex, index);
> res = compilerToVM().lookupConstantInPool(cp, argCpi, false);
> if (res == null) {
> res = JavaConstant.forInt(argCpi);
> }
> cache[index] = res;
> }
> return res;
> }
>
> @Override
> public int size() {
> return cache.length;
> }
> }
Sacha Coppey has updated the pull request incrementally with one additional commit since the last revision:
Fix BootstrapMethodInvocation.getStaticArguments documentation and add documentation for CachedBSMArgs
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/15588/files
- new: https://git.openjdk.org/jdk/pull/15588/files/4ec0a7b7..079969cf
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=15588&range=05
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=15588&range=04-05
Stats: 30 lines in 2 files changed: 22 ins; 0 del; 8 mod
Patch: https://git.openjdk.org/jdk/pull/15588.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/15588/head:pull/15588
PR: https://git.openjdk.org/jdk/pull/15588
More information about the hotspot-compiler-dev
mailing list