RFR: JDK-6604021: RMIC is defaulting to BOOT jdk version, needs to be rmic.jar

David Holmes david.holmes at oracle.com
Wed Oct 16 10:35:23 UTC 2013


Ship it! Quickly! :)

Thanks,
David

On 16/10/2013 8:19 PM, Erik Joelsson wrote:
> New webrev: http://cr.openjdk.java.net/~erikj/6604021/webrev.02/
>
> * Changed Node.java as David suggested.
> * Added comment suggested by Martin to Setup.gmk, where the compiler
> setup is done. Couldn't think of a better place.
> * Changed comment in JavaCompilation.
>
> A note on Corba. While the corba classes are linked against the bootjdk
> APIs, the current compilation of those classes produce jdk8 version
> classfiles, which cannot be run on the bootjdk. That's why we have to
> compile two times, to produce jdk7 classfiles.
>
> /Erik
>
> On 2013-10-16 02:12, David Holmes wrote:
>> On 16/10/2013 10:02 AM, David Holmes wrote:
>>> Hi Erik,
>>>
>>> Many thanks for jumping on this!
>>>
>>> On 16/10/2013 12:30 AM, Erik Joelsson wrote:
>>>> Currently the RMI stubs in the jdk are built with the newly built rmic
>>>> binary at the end of the build. This patch changes that and instead
>>>> builds a bootstrap version of the rmic classes, much like bootstrap
>>>> javac in langtools, which runs on the bootjdk, but generates classes
>>>> for
>>>> the new jdk. The new solution is more friendly to cross compilation.
>>>>
>>>> A few notes on the patch:
>>>>
>>>> * In src/share/classes/sun/tools/tree/Node.java, I had to change a call
>>>> to a jdk8 only constructor in java.lang.InternalError.
>>>
>>> A better fix to preserve the cause is:
>>>
>>> throw new InternalError().initCause(e);
>>
>> That should be
>>
>> throw (InternalError) new InternalError().initCause(e);
>>
>> David
>> -----
>>
>>>> * The packages included when compiling rmic were just picked by
>>>> extending for each missing class until the compilation succeeded. If
>>>> someone knows of a crucial package or class that needs to be included,
>>>> please say so.
>>>> * I renamed a parameter to SetupJavaCompilation. I do not consider the
>>>> parameter a hack anymore, but a necessary option for this case.
>>>
>>> So should "Don't use this. " say "Use with care." or something like
>>> that? :)
>>>
>>>> * In RMICompilation, the dependency file is now a real touch file
>>>> instead of a virtual one. This was needed for proper dependencies in
>>>> GenerateClasses.gmk.
>>>> * All of corba is compiled twice since I have no idea which parts would
>>>> actually be needed. This doesn't add much build time since it can be
>>>> run
>>>> effectively in parallel with the rest of the corba build.
>>>
>>> I don't understand the need for changes here given that this is Java
>>> compilation and it is already using GENERATE_OLDBYTECODE ??
>>>
>>>> * I put the compilation of bootstrap rmic in GenerateClasses.gmk
>>>> directly instead of Tools.gmk. This was to not add much compile time,
>>>> since Tools.gmk is included and therefore parsed a lot.
>>>
>>> Seems okay - the proof of course is in the building.
>>>
>>> Thanks,
>>> David
>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-6604021
>>>> Webrev: http://cr.openjdk.java.net/~erikj/6604021/webrev.01/
>>>>
>>>> /Erik
>



More information about the build-dev mailing list