Build breakage
Mikael Gerdin
mikael.gerdin at oracle.com
Mon May 28 06:30:39 PDT 2012
Hi Andrew,
On 2012-05-28 14:57, Andrew Hughes wrote:
> I'm trying to build a patch against the build forest (http://hg.openjdk.java.net/jdk8/build/) and the HotSpot build
> is broken in the current checkout:
>
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp: In instantiation of 'TreeList<Chunk>* TreeList<Chunk>::remove_chunk_replace_if_needed(TreeChunk<Chunk>*) [with Chunk = FreeChunk]':
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1342:16: required from here
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:173:7: error: 'link_tail' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:173:7: note: declarations in dependent base 'FreeList<FreeChunk>' are not found by unqualified lookup
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:173:7: note: use 'this->link_tail' instead
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp: In instantiation of 'void TreeList<Chunk>::return_chunk_at_head(TreeChunk<Chunk>*) [with Chunk = FreeChunk]':
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1342:16: required from here
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:257:5: error: 'link_tail' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:257:5: note: declarations in dependent base 'FreeList<FreeChunk>' are not found by unqualified lookup
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:257:5: note: use 'this->link_tail' instead
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp: In instantiation of 'void TreeList<Chunk>::return_chunk_at_tail(TreeChunk<Chunk>*) [with Chunk = FreeChunk]':
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1342:16: required from here
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:230:3: error: 'link_tail' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:230:3: note: declarations in dependent base 'FreeList<FreeChunk>' are not found by unqualified lookup
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:230:3: note: use 'this->link_tail' instead
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp: In instantiation of 'bool DescendTreeSearchClosure<Chunk>::do_tree(TreeList<Chunk>*) [with Chunk = FreeChunk]':
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1027:42: required from 'Chunk* BinaryTreeDictionary<Chunk>::find_chunk_ends_at(HeapWord*) const [with Chunk = FreeChunk]'
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1340:16: required from here
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:994:7: error: 'do_list' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:994:7: note: declarations in dependent base 'TreeSearchClosure<FreeChunk>' are not found by unqualified lookup
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:994:7: note: use 'this->do_list' instead
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp: In instantiation of 'void AscendTreeCensusClosure<Chunk>::do_tree(TreeList<Chunk>*) [with Chunk = FreeChunk]':
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1039:3: required from 'void BinaryTreeDictionary<Chunk>::begin_sweep_dict_census(double, float, float, float) [with Chunk = FreeChunk]'
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1340:16: required from here
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:916:7: error: 'do_list' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:916:7: note: declarations in dependent base 'TreeCensusClosure<FreeChunk>' are not found by unqualified lookup
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:916:7: note: use 'this->do_list' instead
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp: In instantiation of 'void DescendTreeCensusClosure<Chunk>::do_tree(TreeList<Chunk>*) [with Chunk = FreeChunk]':
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1135:3: required from 'void BinaryTreeDictionary<Chunk>::set_tree_hints() [with Chunk = FreeChunk]'
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:1340:16: required from here
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:928:7: error: 'do_list' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:928:7: note: declarations in dependent base 'TreeCensusClosure<FreeChunk>' are not found by unqualified lookup
> /home/andrew/projects/openjdk/upstream/build/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp:928:7: note: use 'this->do_list' instead
>
> This is with GCC 4.7, exact same build as I do for 7u which works fine.
>
> ALT_BOOTDIR points to:
>
> java version "1.7.0_03-icedtea"
> OpenJDK Runtime Environment (IcedTea7 2.1) (Gentoo build 1.7.0_03-icedtea-b147)
> OpenJDK 64-Bit Server VM (build 22.0-b10, mixed mode)
>
> Settings:
>
> ANT_RESPECT_JAVA_HOME=true LANG=C make ALT_BOOTDIR=${SYSTEM_ICEDTEA7} \
> ALT_OUTPUTDIR=${WORKING_DIR}/${BUILD_DIR} \
> ALT_PARALLEL_COMPILE_JOBS=$PARALLEL_JOBS \
> ALT_DROPS_DIR=${DROPS_DIR} \
> HOTSPOT_BUILD_JOBS=$PARALLEL_JOBS \
> ANT=/usr/bin/ant \
> QUIETLY="" \
> DEBUG_BINARIES="true" \
> DEBUG_CLASSFILES="true" \
> NO_DOCS="true" \
> OTHER_JAVACFLAGS="-Xmaxwarns 10000" \
> ${WARNINGS} STATIC_CXX=false \
> STRIP_POLICY=no_strip
>
> I think this may be related to:
>
> $ hg log -R hotspot -k 7164144
> changeset: 3297:f69a5d43dc19
> parent: 3295:9f059abe8cf2
> user: jmasa
> date: Wed Apr 25 09:55:55 2012 -0700
> summary: 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
>
> which is in hotspot-comp, hotspot-rt& build, but not 7u.
>
> Any ideas?
I've seen this when I tried building with GCC 4.7 as well.
This problem comes from 9f059abe8cf2, "Generalize the CMS free list
code" which introduced some templates.
It appears that GCC 4.7 is more strict when doing argument dependent
lookup than 4.6.
The fix is to do just what gcc suggests and use this->* or use the
qualified name of the function, for example TreeList<Chunk>::link_tail
in the first failure. As you can see there are already some places in
that code which use the fully qualified name.
I just discovered that I had a patch that fixes most of these issues in
binaryTreeDictionary so I'll go ahead and file a CR for this.
Regards
/mg
--
Mikael Gerdin
Java SE VM SQE Stockholm
More information about the hotspot-dev
mailing list