[9] RFR(S): 8034839: jvm hangs with gc/gctests/LoadUnloadGC test

Christian Thalinger christian.thalinger at oracle.com
Fri Feb 21 14:54:21 PST 2014


On Feb 21, 2014, at 11:27 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

> Lets discuss it on hotspot-dev.
> 
> Note the current hashtable allocates only in c_heap. Albert added hashtable which can allocate in thread local resource area for temporary table and c_heap for long live table.
> 
> Albert,
> 
> So you restored code in dependencies.?pp to one before 7194669 fix. Right?
> 
> I think you need to follow GrowableArray example to name parameter "bool C_heap = false" instead of "bool resource_mark". It should be saved in a field because you need to free c_heap in destructor if C-heap is used:
> 
> ~GrowableArray()  { if (on_C_heap()) clear_and_deallocate(); }
> 
> Also I think you should avoid call to contains(item) in add() to avoid doing the same thing twice.

…and you should stick to either item or element:

+ template<class T, class F> bool GenericHashtable<T, F>::add(T* item) {
+ template<class T, class F> bool GenericHashtable<T, F>::contains(T* element) {

> 
> You should implement remove().
> 
> Thanks,
> Vladimir
> 
> On 2/21/14 12:04 AM, Albert wrote:
>> Hi,
>> 
>> could I get reviews for this small patch?
>> 
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8034839
>> 
>> Problem: The problem is that the patch (7194669) - which was supposed to
>> speed-up dependency checking
>>                causes a performance regression. The reason for the
>> performance regression is that most dependencies
>>                are unique, so we have the overhead of determining if
>> the dependency is already checked plus the
>>                overhead of dependency checking. The overhead of
>> searching is significant, since we perform
>>                a linear search on 6000+ items each time.
>> 
>> Solution: Use a hashtable instead of linear search to lookup already
>> checked dependencies. The new hashtable
>>                is very rudimentary. It provides only the required
>> functionality to solve this bug. However, the functionality
>>                can be easily extended as needed.
>> 
>> Testing: jprt, failing test case, nashorn. The failing test case
>> completes in approx. the same time as before 7194669.
>>              For nashorn + Octane, this patch yields the following
>> times spent for dependency checking:
>> 
>>               with this patch:  844s
>>                        7194669: 1080s
>>            before 7194669: 5223s
>> 
>> webrev: http://cr.openjdk.java.net/~anoll/8034939/webrev.00/
>> 
>> Thanks,
>> Albert
>> 



More information about the hotspot-dev mailing list