From 99c6bfe43a7eace48c484414a3e234ce782981f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Wed, 4 Mar 2026 10:23:03 +0100 Subject: [PATCH 01/11] Add reduced test --- .../TestMissingOptCastSpeculative.java | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java new file mode 100644 index 00000000000..9a7a2ce1d12 --- /dev/null +++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package compiler.valhalla.inlinetypes; + +import jdk.test.lib.Asserts; +import test.java.lang.invoke.lib.InstructionHelper; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; + +import jdk.internal.value.ValueClass; +import jdk.internal.vm.annotation.NullRestricted; + +import static compiler.valhalla.inlinetypes.InlineTypes.*; + +/* + * @test + * @bug 8367624 + * @summary TODO + * @library /test/lib /test/jdk/java/lang/invoke/common / + * @enablePreview + * @modules java.base/jdk.internal.value + * java.base/jdk.internal.vm.annotation + * @build test.java.lang.invoke.lib.InstructionHelper + * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+IgnoreUnrecognizedVMOptions + * -Xbatch -XX:PerMethodSpecTrapLimit=0 -XX:PerMethodTrapLimit=0 + * -XX:VerifyIterativeGVN=1110 -XX:CompileCommand=compileonly,${test.main.class}::test + * ${test.main.class} + * @run main ${test.main.class} + */ + +public class TestMissingOptCastSpeculative { + + public TestMissingOptCastSpeculative() { + valueField1 = testValue1; + super(); + } + + public static void main(String[] args) { + TestMissingOptCastSpeculative t = new TestMissingOptCastSpeculative(); + for (int i = 0; i < 10000; i++) { + try { + int index = Math.abs(rI) % 3; + t.test(testValue1Array, index); + } catch (Throwable e) { + + } + } + } + + static { + // Make sure RuntimeException is loaded to prevent uncommon traps in IR verified tests + RuntimeException tmp = new RuntimeException("42"); + } + + @NullRestricted + private static final MyValue1 testValue1 = MyValue1.createWithFieldsInline(rI, rL); + + @NullRestricted + MyValue1 valueField1; + + private static final MyValue1[] testValue1Array = (MyValue1[])ValueClass.newNullRestrictedNonAtomicArray(MyValue1.class, 3, MyValue1.DEFAULT); + static { + for (int i = 0; i < 3; ++i) { + testValue1Array[i] = testValue1; + } + } + + // Test writing constant null to a (flattened) inline type array + private static final MethodHandle setArrayElementNull = InstructionHelper.buildMethodHandle(MethodHandles.lookup(), + "setArrayElementNull", + MethodType.methodType(void.class, TestMissingOptCastSpeculative.class, MyValue1[].class, int.class), + CODE -> { + CODE. + aload(1). + iload(2). + aconst_null(). + aastore(). + return_(); + }); + + public void test(MyValue1[] va, int index) throws Throwable { + setArrayElementNull.invoke(this, va, index); + } +} + From 54e11fd6a14bfe8dd919fcbca96f935d6de3bae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Wed, 4 Mar 2026 12:42:40 +0100 Subject: [PATCH 02/11] Fix, first version WIP: add assert to check for contradiction between not_null_free and null_free NOTE: add todo for speculative <= non-speculative WIP: fix stuff WIP: minimum version with reasonable asserts Simplify logic and comment --- src/hotspot/share/opto/castnode.cpp | 2 ++ src/hotspot/share/opto/type.cpp | 22 ++++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/hotspot/share/opto/castnode.cpp b/src/hotspot/share/opto/castnode.cpp index 5a84f206f82..fc92dbc6f15 100644 --- a/src/hotspot/share/opto/castnode.cpp +++ b/src/hotspot/share/opto/castnode.cpp @@ -80,6 +80,8 @@ const Type* ConstraintCastNode::Value(PhaseGVN* phase) const { ft = in_type->filter_speculative(ft); } + // TODO we should probably assert here that speculative is more precise than non-speculative + #ifdef ASSERT // Previous versions of this function had some special case logic, // which is no longer necessary. Make sure of the required effects. diff --git a/src/hotspot/share/opto/type.cpp b/src/hotspot/share/opto/type.cpp index 7e6056316a1..f3234d356b9 100644 --- a/src/hotspot/share/opto/type.cpp +++ b/src/hotspot/share/opto/type.cpp @@ -5162,6 +5162,9 @@ const TypeAryPtr* TypeAryPtr::cast_to_null_free(bool null_free) const { if (res->speculative() == res->remove_speculative()) { return res->remove_speculative(); } + if (res->speculative() != nullptr) { + assert(res->speculative()->with_inline_depth(res->inline_depth())->higher_equal(res->remove_speculative()), "precision"); + } return res; } @@ -5170,15 +5173,26 @@ const TypeAryPtr* TypeAryPtr::cast_to_not_null_free(bool not_null_free) const { if (not_null_free == is_not_null_free()) { return this; } + assert(!not_null_free || !is_null_free(), "inconsistency"); const TypeAry* new_ary = TypeAry::make(elem(), size(), is_stable(), is_flat(), is_not_flat(), not_null_free, is_atomic()); + const TypePtr* new_spec = _speculative; + + if (new_spec != nullptr) { + // Speculation could be too optimistic here and infer not null, which would contradict the cast. + new_spec = new_spec->is_aryptr()->cast_to_null_free(false)->cast_to_not_null_free(); + } const TypeAryPtr* res = make(ptr(), const_oop(), new_ary, klass(), klass_is_exact(), _offset, _field_offset, - _instance_id, _speculative, _inline_depth, _is_autobox_cache); + _instance_id, new_spec, _inline_depth, _is_autobox_cache); + // We keep the speculative part if it contains information about flat-/nullability. // Make sure it's removed if it's not better than the non-speculative type anymore. if (res->speculative() == res->remove_speculative()) { return res->remove_speculative(); } + if (res->speculative() != nullptr) { + assert(res->speculative()->with_inline_depth(res->inline_depth())->higher_equal(res->remove_speculative()), "precision"); + } return res; } @@ -5417,7 +5431,11 @@ const Type *TypeAryPtr::xmeet_helper(const Type *t) const { ptr = NotNull; } } - return make(ptr, o, TypeAry::make(elem, tary->_size, tary->_stable, res_flat, res_not_flat, res_not_null_free, res_atomic), res_klass, res_xk, off, field_off, instance_id, speculative, depth); + const TypeAryPtr* res = make(ptr, o, TypeAry::make(elem, tary->_size, tary->_stable, res_flat, res_not_flat, res_not_null_free, res_atomic), res_klass, res_xk, off, field_off, instance_id, speculative, depth); + // TODO this probably doesn't work because of some weird dual inconsistencies + // => we should only have this when dealing wiht "real" types + // assert(!res->is_not_null_free() || !res->is_null_free(), "array cannot be both 'not null free' and 'null free'"); + return res; } // All arrays inherit from Object class From e7698b056b9b70e1c75b1aeb826e04ee6729de27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Thu, 19 Mar 2026 15:40:40 +0100 Subject: [PATCH 03/11] Format --- src/hotspot/share/opto/type.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/hotspot/share/opto/type.cpp b/src/hotspot/share/opto/type.cpp index f3234d356b9..b72327f5c8f 100644 --- a/src/hotspot/share/opto/type.cpp +++ b/src/hotspot/share/opto/type.cpp @@ -5173,18 +5173,15 @@ const TypeAryPtr* TypeAryPtr::cast_to_not_null_free(bool not_null_free) const { if (not_null_free == is_not_null_free()) { return this; } - assert(!not_null_free || !is_null_free(), "inconsistency"); const TypeAry* new_ary = TypeAry::make(elem(), size(), is_stable(), is_flat(), is_not_flat(), not_null_free, is_atomic()); const TypePtr* new_spec = _speculative; - if (new_spec != nullptr) { // Speculation could be too optimistic here and infer not null, which would contradict the cast. new_spec = new_spec->is_aryptr()->cast_to_null_free(false)->cast_to_not_null_free(); } const TypeAryPtr* res = make(ptr(), const_oop(), new_ary, klass(), klass_is_exact(), _offset, _field_offset, _instance_id, new_spec, _inline_depth, _is_autobox_cache); - // We keep the speculative part if it contains information about flat-/nullability. // Make sure it's removed if it's not better than the non-speculative type anymore. if (res->speculative() == res->remove_speculative()) { From 11b060b856ee8e9ddc361ab0b940fd5e0aa2c8f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Thu, 19 Mar 2026 15:54:21 +0100 Subject: [PATCH 04/11] Remove stuff --- src/hotspot/share/opto/castnode.cpp | 2 -- src/hotspot/share/opto/type.cpp | 6 +----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/hotspot/share/opto/castnode.cpp b/src/hotspot/share/opto/castnode.cpp index fc92dbc6f15..5a84f206f82 100644 --- a/src/hotspot/share/opto/castnode.cpp +++ b/src/hotspot/share/opto/castnode.cpp @@ -80,8 +80,6 @@ const Type* ConstraintCastNode::Value(PhaseGVN* phase) const { ft = in_type->filter_speculative(ft); } - // TODO we should probably assert here that speculative is more precise than non-speculative - #ifdef ASSERT // Previous versions of this function had some special case logic, // which is no longer necessary. Make sure of the required effects. diff --git a/src/hotspot/share/opto/type.cpp b/src/hotspot/share/opto/type.cpp index b72327f5c8f..2beb2e2fce7 100644 --- a/src/hotspot/share/opto/type.cpp +++ b/src/hotspot/share/opto/type.cpp @@ -5428,11 +5428,7 @@ const Type *TypeAryPtr::xmeet_helper(const Type *t) const { ptr = NotNull; } } - const TypeAryPtr* res = make(ptr, o, TypeAry::make(elem, tary->_size, tary->_stable, res_flat, res_not_flat, res_not_null_free, res_atomic), res_klass, res_xk, off, field_off, instance_id, speculative, depth); - // TODO this probably doesn't work because of some weird dual inconsistencies - // => we should only have this when dealing wiht "real" types - // assert(!res->is_not_null_free() || !res->is_null_free(), "array cannot be both 'not null free' and 'null free'"); - return res; + return make(ptr, o, TypeAry::make(elem, tary->_size, tary->_stable, res_flat, res_not_flat, res_not_null_free, res_atomic), res_klass, res_xk, off, field_off, instance_id, speculative, depth); } // All arrays inherit from Object class From 3a54a623d6c60209a3110fec0a88f32fe56d8d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Thu, 19 Mar 2026 16:01:11 +0100 Subject: [PATCH 05/11] Revert "8380395: [lworld] ProblemList 4 sub-tests of compiler/valhalla/inlinetypes/TestCallingConvention.java" This reverts commit 04365846345b6675964c4b362f6b3531c95c08f3. --- test/hotspot/jtreg/ProblemList.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt index 799800647f3..cbd03d99ee6 100644 --- a/test/hotspot/jtreg/ProblemList.txt +++ b/test/hotspot/jtreg/ProblemList.txt @@ -199,10 +199,6 @@ vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find006/Test # Valhalla failures start here: compiler/codegen/TestRedundantLea.java#Spill 8361089 generic-all -compiler/valhalla/inlinetypes/TestCallingConvention.java#id0 8367624 generic-all -compiler/valhalla/inlinetypes/TestCallingConvention.java#id3 8367624 generic-all -compiler/valhalla/inlinetypes/TestCallingConvention.java#id5 8367624 generic-all -compiler/valhalla/inlinetypes/TestCallingConvention.java#id6 8367624 generic-all vmTestbase/nsk/jdb/exclude/exclude001/exclude001.java 8375062 windows-x64 vmTestbase/nsk/jdi/Scenarios/invokeMethod/popframes001/TestDescription.java 8375076 windows-x64 From 4fe9e68b56a63120a6152460b74991490a61ce23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Fri, 20 Mar 2026 10:30:49 +0100 Subject: [PATCH 06/11] Cleanup test --- .../TestMissingOptCastSpeculative.java | 36 +++---------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java index 9a7a2ce1d12..db67db0567f 100644 --- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java +++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java @@ -23,7 +23,6 @@ package compiler.valhalla.inlinetypes; -import jdk.test.lib.Asserts; import test.java.lang.invoke.lib.InstructionHelper; import java.lang.invoke.MethodHandle; @@ -31,7 +30,6 @@ import java.lang.invoke.MethodType; import jdk.internal.value.ValueClass; -import jdk.internal.vm.annotation.NullRestricted; import static compiler.valhalla.inlinetypes.InlineTypes.*; @@ -52,39 +50,13 @@ */ public class TestMissingOptCastSpeculative { - - public TestMissingOptCastSpeculative() { - valueField1 = testValue1; - super(); - } - public static void main(String[] args) { TestMissingOptCastSpeculative t = new TestMissingOptCastSpeculative(); + MyValue1[] testValue1Array = (MyValue1[])ValueClass.newNullRestrictedNonAtomicArray(MyValue1.class, 3, MyValue1.DEFAULT); for (int i = 0; i < 10000; i++) { try { - int index = Math.abs(rI) % 3; - t.test(testValue1Array, index); - } catch (Throwable e) { - - } - } - } - - static { - // Make sure RuntimeException is loaded to prevent uncommon traps in IR verified tests - RuntimeException tmp = new RuntimeException("42"); - } - - @NullRestricted - private static final MyValue1 testValue1 = MyValue1.createWithFieldsInline(rI, rL); - - @NullRestricted - MyValue1 valueField1; - - private static final MyValue1[] testValue1Array = (MyValue1[])ValueClass.newNullRestrictedNonAtomicArray(MyValue1.class, 3, MyValue1.DEFAULT); - static { - for (int i = 0; i < 3; ++i) { - testValue1Array[i] = testValue1; + t.test(testValue1Array, 0); + } catch (Throwable e) {} } } @@ -101,7 +73,7 @@ public static void main(String[] args) { return_(); }); - public void test(MyValue1[] va, int index) throws Throwable { + private void test(MyValue1[] va, int index) throws Throwable { setArrayElementNull.invoke(this, va, index); } } From 570034734d3bcac807c288244aac62e2cf47ee29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Fri, 20 Mar 2026 13:26:53 +0100 Subject: [PATCH 07/11] Comments --- src/hotspot/share/opto/type.cpp | 12 +++++------- .../inlinetypes/TestMissingOptCastSpeculative.java | 6 ++++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/hotspot/share/opto/type.cpp b/src/hotspot/share/opto/type.cpp index 2beb2e2fce7..d5a4324185e 100644 --- a/src/hotspot/share/opto/type.cpp +++ b/src/hotspot/share/opto/type.cpp @@ -5162,9 +5162,8 @@ const TypeAryPtr* TypeAryPtr::cast_to_null_free(bool null_free) const { if (res->speculative() == res->remove_speculative()) { return res->remove_speculative(); } - if (res->speculative() != nullptr) { - assert(res->speculative()->with_inline_depth(res->inline_depth())->higher_equal(res->remove_speculative()), "precision"); - } + assert(res->speculative() == nullptr || res->speculative()->with_inline_depth(res->inline_depth())->higher_equal(res->remove_speculative()), + "speculative type must not be narrower than non-speculative type"); return res; } @@ -5177,7 +5176,7 @@ const TypeAryPtr* TypeAryPtr::cast_to_not_null_free(bool not_null_free) const { const TypeAry* new_ary = TypeAry::make(elem(), size(), is_stable(), is_flat(), is_not_flat(), not_null_free, is_atomic()); const TypePtr* new_spec = _speculative; if (new_spec != nullptr) { - // Speculation could be too optimistic here and infer not null, which would contradict the cast. + // Could be 'null free' from profiling, which would contradict the cast. new_spec = new_spec->is_aryptr()->cast_to_null_free(false)->cast_to_not_null_free(); } const TypeAryPtr* res = make(ptr(), const_oop(), new_ary, klass(), klass_is_exact(), _offset, _field_offset, @@ -5187,9 +5186,8 @@ const TypeAryPtr* TypeAryPtr::cast_to_not_null_free(bool not_null_free) const { if (res->speculative() == res->remove_speculative()) { return res->remove_speculative(); } - if (res->speculative() != nullptr) { - assert(res->speculative()->with_inline_depth(res->inline_depth())->higher_equal(res->remove_speculative()), "precision"); - } + assert(res->speculative() == nullptr || res->speculative()->with_inline_depth(res->inline_depth())->higher_equal(res->remove_speculative()), + "speculative type must not be narrower than non-speculative type"); return res; } diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java index db67db0567f..9454a81b043 100644 --- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java +++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java @@ -36,7 +36,10 @@ /* * @test * @bug 8367624 - * @summary TODO + * @summary Writing a null value to an inline type array casts the array to + * 'not null free'. If there is a speculative type before the cast, + * we have to make sure to cast it as well, otherwise we get + * missed value optimization. * @library /test/lib /test/jdk/java/lang/invoke/common / * @enablePreview * @modules java.base/jdk.internal.value @@ -60,7 +63,6 @@ public static void main(String[] args) { } } - // Test writing constant null to a (flattened) inline type array private static final MethodHandle setArrayElementNull = InstructionHelper.buildMethodHandle(MethodHandles.lookup(), "setArrayElementNull", MethodType.methodType(void.class, TestMissingOptCastSpeculative.class, MyValue1[].class, int.class), From bebc4c4d2e9830fd72398cbf89e8070a91d57c89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Fri, 20 Mar 2026 13:34:08 +0100 Subject: [PATCH 08/11] Spaces --- .../valhalla/inlinetypes/TestMissingOptCastSpeculative.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java index 9454a81b043..cec6dede5d6 100644 --- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java +++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java @@ -77,6 +77,6 @@ public static void main(String[] args) { private void test(MyValue1[] va, int index) throws Throwable { setArrayElementNull.invoke(this, va, index); - } + } } From 0e086c4f92cfc5a5173bdac091b573bf48c40d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Fri, 20 Mar 2026 14:08:52 +0100 Subject: [PATCH 09/11] Syntax in comment --- .../valhalla/inlinetypes/TestMissingOptCastSpeculative.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java index cec6dede5d6..a2135b350ae 100644 --- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java +++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java @@ -38,7 +38,7 @@ * @bug 8367624 * @summary Writing a null value to an inline type array casts the array to * 'not null free'. If there is a speculative type before the cast, - * we have to make sure to cast it as well, otherwise we get + * we have to make sure to cast it as well, otherwise we get a * missed value optimization. * @library /test/lib /test/jdk/java/lang/invoke/common / * @enablePreview From 642e67d61c5e06daec0a33b98991389e0ab0a56a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Mon, 23 Mar 2026 09:17:17 +0100 Subject: [PATCH 10/11] Add comment --- .../valhalla/inlinetypes/TestMissingOptCastSpeculative.java | 1 + 1 file changed, 1 insertion(+) diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java index a2135b350ae..4882f16ad60 100644 --- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java +++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestMissingOptCastSpeculative.java @@ -63,6 +63,7 @@ public static void main(String[] args) { } } + // stores null at the specified index in the array private static final MethodHandle setArrayElementNull = InstructionHelper.buildMethodHandle(MethodHandles.lookup(), "setArrayElementNull", MethodType.methodType(void.class, TestMissingOptCastSpeculative.class, MyValue1[].class, int.class), From 6e248e40a08ffad4a0f624ea2d7b9c1bd030229a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Maillard?= Date: Thu, 26 Mar 2026 12:49:52 +0100 Subject: [PATCH 11/11] Reapply "8380395: [lworld] ProblemList 4 sub-tests of compiler/valhalla/inlinetypes/TestCallingConvention.java" This reverts commit 3a54a623d6c60209a3110fec0a88f32fe56d8d7c. --- test/hotspot/jtreg/ProblemList.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt index cbd03d99ee6..799800647f3 100644 --- a/test/hotspot/jtreg/ProblemList.txt +++ b/test/hotspot/jtreg/ProblemList.txt @@ -199,6 +199,10 @@ vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find006/Test # Valhalla failures start here: compiler/codegen/TestRedundantLea.java#Spill 8361089 generic-all +compiler/valhalla/inlinetypes/TestCallingConvention.java#id0 8367624 generic-all +compiler/valhalla/inlinetypes/TestCallingConvention.java#id3 8367624 generic-all +compiler/valhalla/inlinetypes/TestCallingConvention.java#id5 8367624 generic-all +compiler/valhalla/inlinetypes/TestCallingConvention.java#id6 8367624 generic-all vmTestbase/nsk/jdb/exclude/exclude001/exclude001.java 8375062 windows-x64 vmTestbase/nsk/jdi/Scenarios/invokeMethod/popframes001/TestDescription.java 8375076 windows-x64