United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6554508 compilation of parNewGeneration.cpp fails on fedora 6
6554508 : compilation of parNewGeneration.cpp fails on fedora 6

Details
Type:
Bug
Submit Date:
2007-05-07
Status:
Resolved
Updated Date:
2010-04-02
Project Name:
JDK
Resolved Date:
2007-05-24
Component:
hotspot
OS:
linux
Sub-Component:
gc
CPU:
x86
Priority:
P4
Resolution:
Fixed
Affected Versions:
7
Fixed Versions:
hs10

Related Reports
Backport:
Backport:

Sub Tasks

Description
On Fedora 6, the default GCC compiler is 4.1.1 and it is now strict about finding out inline method definition if it is declared to be "inline". 

In hotspot, during compilation of "parNewGeneration.cpp", it tries to include "concurrentMarkSweepGeneration.hpp" (parNewGeneration.cpp depends on genOopClosures.inline.hpp which depends on concurrentMarkSweepGeneration.hpp). MarkFromRootsClosure::do_yield_check() & Par_MarkFromRootsClosure::do_yield_check() are both defined as "inline", but the implementation actually is in its inline.hpp version. We could add concurrentMarkSweepGeneration.inline.hpp as the dependency of genOopClosures.inline.hpp, but a better solution would be to just remove the "inline" keyword in its declaration.

                                    

Comments
EVALUATION

Remove "inline" keywords in the declaration of the methods should fix the bug.
                                     
2007-05-07
EVALUATION

This was caused by recent putback for 4922901. There used to be an entry in include_core which explicitly put "concurrentMarkSweepGeneration.inline.hpp" as one of the dependencies for parNewGeneration.cpp. That was removed as part of the putback. 

It makes sense to remove the dependencies (parNewGeneration should not depend on CMS). However, parNewGeneration.cpp does still indirectly depend on concurrentMarkSweepGeneration through genOopClosures.inline.hpp which itself depends on concurrentMarkSweepGeneration.hpp. 

So a better fix without touching the source code is to change the dependency for genOopClosures.inline.hpp to concurrentMarkSweepGeneration.inline.hpp.
                                     
2007-05-07



Hardware and Software, Engineered to Work Together