'byfile' compilation policy
Jonathan Gibbons
jonathan.gibbons at oracle.com
Thu Apr 28 18:20:40 UTC 2016
On 04/28/2016 10:43 AM, Liam Miller-Cushon wrote:
> On Thu, Apr 28, 2016 at 1:55 AM, Maurizio Cimadamore
> <maurizio.cimadamore at oracle.com
> <mailto:maurizio.cimadamore at oracle.com>> wrote:
>
> Hi Liam,
> the approach you put forward seems sensible; one alternate
> approach would be to let the entire compilation unit through until
> Gen if a dependency is encountered rather than stopping at desugar
> - but I assume that's what you said it's problematic because of
> cycles?
>
>
> Right, the repro in my original message is an example of that. The
> compilation units are: [One, Two] and [Three, Four], and the
> superclass dependencies are: One -> Three, Four -> Two. So we can
> linearize the classes to group by compilation unit, or so the
> superclasses are encountered first, but not both.
>
> A meta-question: is it still worthwhile to have separate
> compilation policies? I see that at least two of them (ATTR_ONLY
> and CHECK_ONLY) can probably be replaced by other options (i.e.
> -XDshouldStop) - are there significant use cases out there relying
> on either byfile or simple? Given that, as it has been observed,
> javac will need to bypass the compilation policy anyway to
> guarantee the correctness of the generated code (i.e. that
> supertypes are desugared before subtypes) - can a client really
> blindly rely on the assumption that a compilation policy does what
> it says on the tin?
>
>
> Consolidating the existing policies sounds like a good idea to me. I
> haven't seen any uses of ATTR_ONLY or CHECK_ONLY. Using bytodo isn't
> great for our purposes for the reasons Eddie described. In a previous
> thread [1] it was mentioned that byfile was originally supposed to
> become the default. Maybe it's time to consider replacing bytodo?
>
> [1]
> http://mail.openjdk.java.net/pipermail/compiler-dev/2015-August/009748.html
bytodo was the original JDK5-era policy, and yes, byfile was a step
towards trying to support an "all or nothing" policy for a compilation
unit. If we can reasonably make that work, I think it would be good to
make it the default and maybe eventually, the only variant.
-- Jon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20160428/9009927d/attachment.html>
More information about the compiler-dev
mailing list