diff --git a/test/hotspot/jtreg/compiler/intrinsics/string/TestRangeCheck.java b/test/hotspot/jtreg/compiler/intrinsics/string/TestRangeCheck.java index 139986b9810..2fd5052630c 100644 --- a/test/hotspot/jtreg/compiler/intrinsics/string/TestRangeCheck.java +++ b/test/hotspot/jtreg/compiler/intrinsics/string/TestRangeCheck.java @@ -54,11 +54,11 @@ public class TestRangeCheck { // to the `StringCoding::countPositives0` intrinsic. // `countPositives` validates its input using // `Preconditions::checkFromIndexSize`, which also maps to an - // intrinsic. When `checkFromIndexSize` is not inlined, C2 does not - // know about the explicit range checks, and does not cut off the - // dead code. As a result, an invalid value (e.g., `-1`) can be fed - // as input into the `countPositives0` intrinsic, got replaced - // by TOP, and cause a failure in the matcher. + // intrinsic. If `checkFromIndexSize` is not inlined, + // C2 lacks knowledge of the explicit range checks, so an invalid + // index (e.g., -1) can reach `countPositives0`. The intrinsic then + // replaces the out‑of‑range data input with TOP, preserving the + // control flow, which leads to a matcher failure. return JLA.countPositives(bytes, -1, 42); } catch (Exception e) { return 0;