On Mon, 24 Aug 2026 10:23:32 GMT, Andrew Dinn <[email protected]> wrote:

> However, I don't think that can happen in practice because of the 
> `@IntrinsicCandidate` annotation. A transform based on profiling info could 
> only be used when compiling `conditionalSet` in which case a call to the 
> intrinsic would override the inlining operation and speculative 
> transformation.

If there is an intrinsic, sure. I'm saying that security should not depend on 
whether an intrinsic is enabled. To be more explicit: constant-time execution 
is part of the specification of this method, and it fails to meet its 
specification. Now, you might argue that it is impossible to guarantee constant 
time in a method written in Java, and I might agree.

What we really need is a value speculation barrier. That doesn't sound so 
difficult: it could be a node that has a value-range type as its input and the 
corresponding type as its output. Either that, or we have a two-input selection 
node semantically `t ? a : b` and we make sure it gets propagated all the way 
through C2. Anything less is just rearranging the deck chairs.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/32047#discussion_r3842756378

Reply via email to