value type hygiene

Dan Smith daniel.smith at
Fri May 11 17:48:56 UTC 2018

> On May 10, 2018, at 7:36 PM, John Rose <john.r.rose at> wrote:
> There could be an interface default method, or some other method,
> which is simultaneously a member of two trees with two different
> decisions about scalarization vs. buffering.  This can be handled
> by having the JVM create multiple adapters.  I'd rather forbid the
> condition that requires multiple adapters as a CLC violation,
> because it is potentially complex and buggy, and it's not clear
> we need this level of service from the JVM.

Use case:


Library code

interface Event {
    LocalDateTime timestamp();


Client 1 code, compiled with reference class LocalDateTime

class Client1Event implements Event { ... }


Client 2 code, compiled with value class LocalDateTime

class Client2Event implements Event { ... }


Various circumstances can lead to two different clients running on a single JVM, including, say, dependencies between different libraries.

Am I understanding correctly that you would consider loading/invoking these methods to be a JVM error?

More information about the valhalla-spec-observers mailing list