RFR: 8303526: Changing "arbitrary" Name.compareTo() ordering breaks the regression suite [v2]
Vicente Romero
vromero at openjdk.org
Mon Mar 27 20:07:52 UTC 2023
On Fri, 24 Mar 2023 22:20:48 GMT, Archie L. Cobbs <duke at openjdk.org> wrote:
> > sorry if I'm missing something but I'm not totally sure what we are fixing here, I mean it could be that the current code is not arbitrarily consistent but it is faster than the proposed implementation
>
> I can explain the problem we're fixing... I think the real question here though is whether the problem we're fixing is a big enough problem that it need to be fixed, or just not worth worrying about.
>
> The problem is that the specification of `Name.compareTo()` is so loose that it introduces a source of non-determinism in the compiler that is dependent on (for example) the order in which class files are read. That non-determinism then flows into `TypeSymbol.precedes()`.
>
> So the real question is, do we really want `TypeSymbol.precedes()` potentially sorting `TypeSymbols` differently each time?
>
> I can't really say definitively, because I'm not familiar with this method - so I'm just basing my opinion on the circumstantial evidence that there are 9 regression tests that are sensitive to this ordering, and also my overall general feeling that needless non-determinism is always a bad thing in computer software because it makes everything harder to debug.
>
> The downside of this patch is a slower implementation of `TypeSymbol.precedes()` - again, I'm not familiar with this method so unsure how critical it is. Also, note that this downside may happen in the future regardless if/when the `Name` classes get refactored to just be `String` wrappers, etc.
>
> So... I dunno. Your thoughts?
I see, patch looks good, we will though have to be on watch for possible performance regressions, but we'll see
-------------
PR Comment: https://git.openjdk.org/jdk/pull/12843#issuecomment-1485790300
More information about the compiler-dev
mailing list