Pending Character-related work - Character-warnings

Ulf Zibis Ulf.Zibis at gmx.de
Fri Jul 2 00:33:14 UTC 2010


Am 02.07.2010 02:15, schrieb Jonathan Gibbons:
> Ulf,
>
> Have you tried it, and if so, what error do you get?

Sorry, no. It was Martin. I don't know the exact error message.
Building the whole JDK is outside my resources (Windows, labtop, etc.) :-( .
Anyway thanks for your time.

-Ulf

>    If you get an error, this may be a fault in the Makefiles for this 
> part of the system, using the wrong macro to get at javac.   That's 
> what I was trying to get at in my previous message.  However, I'm not 
> an expert on this part of the code, I'm just trying to explain 
> generalities here. There may be reasons I don't know about why this 
> needs to be compilable by the BOOT JDK.
>
> Separately, I know at some point, Joe was planning to have a concerted 
> effort to diamond-ize the JDK code base in areas where that is 
> technically reasonable (i.e. not javac etc.)
>
> -- Jon
>
>
> On 07/01/2010 04:51 PM, Ulf Zibis wrote:
>> Jonathan,
>>
>> much thanks.
>>
>> My question is not about the generated parts, it's about following lines
>>
>>  652         private static Map<String, UnicodeBlock>  map
>>  653             = new HashMap<String, UnicodeBlock>(256);
>>
>> in 
>> http://cr.openjdk.java.net/~martin/webrevs/openjdk7/Character-warnings/src/share/classes/java/lang/Character.java.sdiff.html 
>>
>> where JDK-7 compiler returns a warning: "redundant type arguments in 
>> new expression (use diamond operator instead).".
>>
>> If coded as:
>>
>>  652         private static Map<String, UnicodeBlock>  map  = new 
>> HashMap<>(256);
>>
>> Martin said, this doesn't work, because j.l.Character must be 
>> compilable by the bootstrap JDK which is JDK-6.
>> This I don't understand in reference to what you said: "... and all 
>> the code in the jdk/ repo can be built with the latest language 
>> features."
>>
>> -Ulf
>>
>>
>>
>> Am 02.07.2010 01:22, schrieb Jonathan Gibbons:
>>> Ulf,
>>>
>>> As complicated as the build is now, it used to be way more 
>>> complicated.  I suspect you're just seeing a bit of history leaking 
>>> into that part of the build.   Because some of the code in the 
>>> java.lang.Character area is automatically generated, it has its own 
>>> special Makefile rules, so I suspect it has slipped through the 
>>> cracks to make sure the files that get generated are compiled with 
>>> the latest compiler to -target 7 class files.
>>>
>>> -- Jon
>>>
>>>
>>> On 07/01/2010 04:11 PM, Ulf Zibis wrote:
>>>> Jonathan, Kelly,
>>>>
>>>> thanks for your short but excellent descriptive explanation.
>>>> It mainly reflects how I understood the build process in general.
>>>> Can you briefly answer my questions below?
>>>>
>>>> Am 01.07.2010 18:13, schrieb Kelly O'Hair:
>>>>>
>>>>> On Jul 1, 2010, at 7:56 AM, Jonathan Gibbons wrote:
>>>>>
>>>>>> On 07/01/2010 01:32 AM, Ulf Zibis wrote:
>>>>>>> Am 01.07.2010 09:38, schrieb Martin Buchholz:
>>>>>>>> On Wed, Jun 30, 2010 at 23:49, Ulf Zibis<Ulf.Zibis at gmx.de>  wrote:
>>>>>>>>> Am 30.06.2010 19:50, schrieb Martin Buchholz:
>>>>>>>>>> On Wed, Jun 30, 2010 at 01:22, Ulf Zibis<Ulf.Zibis at gmx.de>    
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Am 29.06.2010 02:29, schrieb Martin Buchholz:
>>>>>>>>>>>> I tried to do that, but Character.java is one of those classes
>>>>>>>>>>>> that needs to be compilable by the bootstrap JDK,
>>>>>>>>>>>> so this change ist leider nicht moeglich.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>> I think, there should be a note about this in the sources of 
>>>>>>>>>>> those
>>>>>>>>>>> classes.
>>>>>>>>>>>
>>>>>>>>>> Such a note is likely to become obsolete soon.
>>>>>>>>>>
>>>>>>>>> How do you mean that? Will the build procedure change soon. 
>>>>>>>>> Then it would be
>>>>>>>>> anyway appropriate to update to new "style".
>>>>>>>> In jdk8, the bootstrap jdk will be at least jdk7.
>>>>>>>
>>>>>>> It would make me wonder if there wont come new language extensions.
>>>>>>> I was thinking about a comment (in all bootstrap compiled 
>>>>>>> classes) which couldn't become obsolete like:
>>>>>>> "Don't use latest language extensions in this class. It's one of 
>>>>>>> those which must be compilable by the bootstrap JDK while 
>>>>>>> building this JDK. Add @suppressWarnings if appropriate."
>>>>>>>
>>>>>>> Anyway, couldn't we use the latest existing JDK-7 build for 
>>>>>>> bootstrap? Then we could update the sources 2 weeks later.
>>>>>>> ... or use 2 versions for bootstrap and library as said before.
>>>>>>>
>>>>>>> -Ulf
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> Ulf,
>>>>>>
>>>>>> I suggest you go read blogs by Kelly (http://blogs.sun.com/kto/) 
>>>>>> and myself (http://blogs.sun.com/jjg/) on the process of building 
>>>>>> the JDK. The boot JDK is always the latest available FCS product 
>>>>>> (i.e JDK 6 for JDK 7), but the first thing done in the build is 
>>>>>> to build a hybrid javac that runs on the boot JDK and which 
>>>>>> understands the latest language.  Therefore, with the exception 
>>>>>> of javac and related tools that are used during the bootstrap 
>>>>>> (e.g. javah) most of the JDK, and all the code in the jdk/ repo 
>>>>>> can be built with the latest language features.
>>>>
>>>> I understand this, that all classes in jdk7/tl are compiled by 
>>>> source=7 level.
>>>> Is that correct?
>>>> In particular, why should j.l.Character then be compilable by 
>>>> source=6 level, as Martin said?
>>>> If so, is it thinkable to have 2 versions, one for the bootstrap 
>>>> and one for the final JDK7 library, so the latter would be "clean" 
>>>> for the source=7 level?
>>>>
>>>> -Ulf
>>>>
>>>>
>>>>>>
>>>>>> There may however be historical reasons why some classes still 
>>>>>> get special treatment; those would need to be examined on a case 
>>>>>> by case basis.
>>>>>>
>>>>>
>>>>> I think some of the source generation tools may require a 'dumbing 
>>>>> down' of the source, I forget the exact details.
>>>>>
>>>>> The jdk/make/tools/src tools are supposed to be built with the 
>>>>> BOOT jdk (jdk6), and in general are small utility tools
>>>>> that need to be run before the jdk7 image exists, but are not 
>>>>> technically part of the jdk7 image.
>>>>> So like langtools, they need to be BOOT jdk flavored sources, or 
>>>>> have a way to run with a BOOT jdk.
>>>>>
>>>>> -kto
>>>>>
>>>>>> -- Jon
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
>
>
>




More information about the build-dev mailing list