Mercurial > hg > graal-jvmci-8
diff src/share/vm/code/nmethod.cpp @ 14660:3c6ae9109a86
8035946: Use ResourceHashtable for dependency checking
Summary: Use ResourceHashtable for dependency checking and delete GenericHashtable
Reviewed-by: kvn, coleenp
author | anoll |
---|---|
date | Mon, 03 Mar 2014 08:04:14 +0100 |
parents | b3fe59626fdc |
children | b51e29501f30 |
line wrap: on
line diff
--- a/src/share/vm/code/nmethod.cpp Fri Feb 28 09:30:20 2014 -0800 +++ b/src/share/vm/code/nmethod.cpp Mon Mar 03 08:04:14 2014 +0100 @@ -39,6 +39,7 @@ #include "prims/jvmtiImpl.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/sweeper.hpp" +#include "utilities/resourceHash.hpp" #include "utilities/dtrace.hpp" #include "utilities/events.hpp" #include "utilities/xmlstream.hpp" @@ -2135,7 +2136,11 @@ // Turn off dependency tracing while actually testing dependencies. NOT_PRODUCT( FlagSetting fs(TraceDependencies, false) ); - GenericHashtable<DependencySignature, ResourceObj>* table = new GenericHashtable<DependencySignature, ResourceObj>(11027); + typedef ResourceHashtable<DependencySignature, int, &DependencySignature::hash, + &DependencySignature::equals, 11027> DepTable; + + DepTable* table = new DepTable(); + // Iterate over live nmethods and check dependencies of all nmethods that are not // marked for deoptimization. A particular dependency is only checked once. for(nmethod* nm = CodeCache::alive_nmethod(CodeCache::first()); nm != NULL; nm = CodeCache::alive_nmethod(CodeCache::next(nm))) { @@ -2143,9 +2148,10 @@ for (Dependencies::DepStream deps(nm); deps.next(); ) { // Construct abstraction of a dependency. DependencySignature* current_sig = new DependencySignature(deps); - // Determine if 'deps' is already checked. table->add() returns - // 'true' if the dependency was added (i.e., was not in the hashtable). - if (table->add(current_sig)) { + + // Determine if dependency is already checked. table->put(...) returns + // 'true' if the dependency is added (i.e., was not in the hashtable). + if (table->put(*current_sig, 1)) { if (deps.check_dependency() != NULL) { // Dependency checking failed. Print out information about the failed // dependency and finally fail with an assert. We can fail here, since