compilation failure using gcc 4.7.2

Coleen Phillimore coleen.phillimore at oracle.com
Wed Nov 14 20:13:13 PST 2012


David,

I think adding this-> to these is the best way to fix these, and we've 
been fixing similar bugs the same way.  I don't think anyone preferred 
adding "using" directives, at least for this sort of compilation 
error.   I'm not sure why the compilation error exists.  It seems that 
the compiler should be able to resolve these calls with the same 
template instantiation as the function, but I guess not.

Coleen

On 11/4/2012 5:28 PM, David Holmes wrote:
> Hi Peter,
>
> I think we have lost some changes through the NPG integration. This 
> code was updated by Mikael Gerdin under:
>
> 7172226: HotSpot fails to build with GCC 4.7 because of stricter c++ 
> argument dependent lookup
>
> http://hg.openjdk.java.net/jdk8/jdk8/hotspot/diff/a297b0e14605/src/share/vm/memory/binaryTreeDictionary.cpp 
>
>
> but the NPG changes by Jon under
>
> 7045397: NPG: Add freelists to class loader arenas
>
> http://hg.openjdk.java.net/jdk8/jdk8/hotspot/rev/685df3c6f84b
>
> http://hg.openjdk.java.net/jdk8/jdk8/hotspot/diff/685df3c6f84b/src/share/vm/memory/binaryTreeDictionary.cpp 
>
>
> seems to have undone those changes in part.
>
> The preferred fix was to add "using" directives rather than writing 
> fully-qualified names.
>
> David
>
> On 5/11/2012 7:09 AM, Peter Levart wrote:
>> Hi,
>>
>> Current head of jdk8/hotspot repository (3790:4d37eb50b9b1) can not be
>> built with gcc 4.7.2.
>>
>> I had to make the following changes to compile with gcc 4.7.2 (on 
>> linux):
>>
>>
>> diff -r 4d37eb50b9b1 src/share/vm/memory/binaryTreeDictionary.cpp
>> --- a/src/share/vm/memory/binaryTreeDictionary.cpp Thu Nov 01 14:11:16
>> 2012 -0700
>> +++ b/src/share/vm/memory/binaryTreeDictionary.cpp Sun Nov 04 22:07:29
>> 2012 +0100
>> @@ -239,7 +239,7 @@
>> } else {
>> if (nextTC == NULL) {
>> // Removing chunk at tail of list
>> - link_tail(prevFC);
>> + this->link_tail(prevFC);
>> }
>> // Chunk is interior to the list
>> prevFC->link_after(nextTC);
>> @@ -296,7 +296,7 @@
>>
>> Chunk_t* fc = tail();
>> fc->link_after(chunk);
>> - link_tail(chunk);
>> + this->link_tail(chunk);
>>
>> assert(!tail() || size() == tail()->size(), "Wrong sized chunk in 
>> list");
>> FreeList_t<Chunk_t>::increment_count();
>> @@ -323,7 +323,7 @@
>> chunk->link_after(fc);
>> } else {
>> assert(tail() == NULL, "List is inconsistent");
>> - link_tail(chunk);
>> + this->link_tail(chunk);
>> }
>> head()->link_after(chunk);
>> assert(!head() || size() == head()->size(), "Wrong sized chunk in 
>> list");
>> @@ -940,7 +940,7 @@
>> void do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
>> if (tl != NULL) {
>> do_tree(tl->left());
>> - do_list(tl);
>> + this->do_list(tl);
>> do_tree(tl->right());
>> }
>> }
>> @@ -952,7 +952,7 @@
>> void do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
>> if (tl != NULL) {
>> do_tree(tl->right());
>> - do_list(tl);
>> + this->do_list(tl);
>> do_tree(tl->left());
>> }
>> }
>> @@ -1008,7 +1008,7 @@
>> bool do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
>> if (tl != NULL) {
>> if (do_tree(tl->left())) return true;
>> - if (do_list(tl)) return true;
>> + if (this->do_list(tl)) return true;
>> if (do_tree(tl->right())) return true;
>> }
>> return false;
>> @@ -1022,7 +1022,7 @@
>> bool do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
>> if (tl != NULL) {
>> if (do_tree(tl->right())) return true;
>> - if (do_list(tl)) return true;
>> + if (this->do_list(tl)) return true;
>> if (do_tree(tl->left())) return true;
>> }
>> return false;
>>
>>
>>
>> Regards, Peter
>>



More information about the hotspot-runtime-dev mailing list