[9] RFR(M): 7194669: CodeCache::mark_for_deoptimization should avoid verifying dependencies multiple times

Christian Thalinger christian.thalinger at oracle.com
Fri Jan 10 12:59:50 PST 2014


This looks good.  Just a suggestion (you can ignore that if you want):  GrowableArray has find() and contains() methods.  If you would override operator== in DependencySignature you could use GrowableArray::find().

On Jan 10, 2014, at 5:28 AM, Albert Noll <albert.noll at oracle.com> wrote:

> Hi,
> 
> I've evaluated the performance difference (nashorn + octane) between binary search
> and a linear search. The linear-search version uses one GrowableArray<DependencySignature*>
> for each dependency type. The difference in dependency checking time is 15-20%, i.e., binary
> search is 15-20% faster than linear search. However, using linear search to cache checked
> dependencies is still ~4X faster compared to checking all dependencies.
> 
> I guess 15-20% is not enough to justify using the new data structure. Here is the new
> webrev that uses linear search:
> http://cr.openjdk.java.net/~anoll/7194669/webrev.01/
> 
> Best,
> Albert
> 
> On 01/09/2014 06:57 PM, Roland Westrelin wrote:
>>> As I recall running some nashorn benchmarks takes about 10X more time when using fastdebug VM if VerifyDependencies is not switched off.
>> Thanks Vladimir.
>> What about simply pushing the dependency signatures to an unsorted growableArray() and doing a linear search? Maybe that’s good enough?
>> 
>> Roland.
>> 
> 



More information about the hotspot-compiler-dev mailing list