Preferring class files to source files in ClassReader.java
Jonathan Gibbons
jonathan.gibbons at oracle.com
Mon Jan 13 16:39:30 PST 2014
I'm not sure what you mean about preferring the first encountered: are
you referring to javac, or to some modified version? I completely
agree that the preference should be preference should be consistent and
deterministic.
-- Jon
On 01/13/2014 04:11 PM, Jeremy Manson wrote:
> Bump, because of JDK9 opening (I somehow missed the conversation after
> my last message - sorry about abandoning the thread mid-stream).
>
> I'd say that regardless of which you choose, it should probably be
> consistently preferring source or classfile. Right now, the
> preference depends on what it happens to encounter first, which is
> rather unpredictable. Anyone actually relying on this behavior is
> doing something deeply brittle, since a small refactoring of their
> build rules can change which they get.
>
> Once the decision has been taken to pin it down one way or the other,
> I'm not averse to a flag or something.
>
> Jeremy
>
>
> On Thu, Nov 14, 2013 at 11:22 AM, Jonathan Gibbons
> <jonathan.gibbons at oracle.com <mailto:jonathan.gibbons at oracle.com>> wrote:
>
> On 11/14/2013 11:06 AM, Joel Borggrén-Franck wrote:
>
> On 14 nov 2013, at 19:44, Jonathan Gibbons
> <jonathan.gibbons at oracle.com
> <mailto:jonathan.gibbons at oracle.com>> wrote:
>
> On 11/14/2013 04:03 AM, Joel Borggren-Franck wrote:
>
> Hi Jeremy,
>
> On 2013-11-13, Jeremy Manson wrote:
>
> Hi folks,
>
> A bit of background:
>
> - We use a content-addressable storage around
> here, so to minimize the
> diffs between two JAR files (and get more hits in
> our content-addressable
> storage), we reset all timestamps in JAR files to
> the same values.
> - Some of our users include both source and class
> files in their JAR files.
> - When those users want to put those JAR files on
> the classpath for javac,
> and use them to compile other files, they may not
> have included enough on
> the classpath to compile the source files.
> - We've worked around this by favoring classfiles
> when the two files are of
> the same age. This has the added benefit of not
> having to recompile the
> source files when they are found.
> - What do you think? Too esoteric? Wait for JDK9?
>
> Thinking out loud here. While I do understand your
> usecase, don't we
> want the opposite to be the default case? If javac
> finds a source and a
> class file and the timestamps are suspect isn't the
> responsible thing to
> do to compile the source again?
>
> cheers
> /Joel
>
> I think Jeremy would argue that the timestamps are not
> suspect -- they are exactly what they have set them to be!
>
>
> Yes, but javac doesn't know that. In order to make a change
> like this I think you need to argue it is correct in all
> cases. I'm not convinced of that yet, but then again I'm not
> yet convinced of the opposite either.
>
> Could be interesting to compare with how make handles equal
> timestamps.
>
> cheers
> /Joel
>
>
>
> I think the general take on this discussion is that in JDK 9, we
> should examine the possibility of updating -Xprefer to have more
> policies available. I'm also open to changing existing policies
> -- but with some concern for compatibility for those who like the
> existing policies.
>
> -- Jon
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20140113/4f4c996c/attachment.html
More information about the compiler-dev
mailing list