# HG changeset patch # User Christos Kotselidis # Date 1375443091 -7200 # Node ID f22cbff51c120ce88411659551b4ee6e88dbe797 # Parent 87d9b55180653adada1e27d432ea2323a33f5168 Remove forced addition of Graal's oop during weak root processing (creates race condition) diff -r 87d9b5518065 -r f22cbff51c12 src/share/vm/code/codeCache.cpp --- a/src/share/vm/code/codeCache.cpp Fri Aug 02 11:22:23 2013 +0200 +++ b/src/share/vm/code/codeCache.cpp Fri Aug 02 13:31:31 2013 +0200 @@ -304,15 +304,6 @@ } } -#ifdef GRAAL -void CodeCache::alive_nmethods_do_graal_methods(OopClosure* closure) { - assert_locked_or_safepoint(CodeCache_lock); - FOR_ALL_ALIVE_NMETHODS(nm) { - nm->mark_graal_reference(closure); - } -} -#endif - int CodeCache::alignment_unit() { return (int)_heap->alignment_unit(); } diff -r 87d9b5518065 -r f22cbff51c12 src/share/vm/code/codeCache.hpp --- a/src/share/vm/code/codeCache.hpp Fri Aug 02 11:22:23 2013 +0200 +++ b/src/share/vm/code/codeCache.hpp Fri Aug 02 13:31:31 2013 +0200 @@ -85,12 +85,7 @@ static void blobs_do(CodeBlobClosure* f); // iterates over all CodeBlobs static void nmethods_do(void f(nmethod* nm)); // iterates over all nmethods static void alive_nmethods_do(void f(nmethod* nm)); // iterates over all alive nmethods -#ifdef GRAAL - //Special method iterating and marking all HotSpotNMethods which are weakly referenced by nmethods. - //This has to be done since the HotSpotNMethods are only referenced from within the nmethods and the GC - //believes they are dead since they are not marked. - static void alive_nmethods_do_graal_methods(OopClosure* closure); -#endif + // Lookup static CodeBlob* find_blob(void* start); static nmethod* find_nmethod(void* start); diff -r 87d9b5518065 -r f22cbff51c12 src/share/vm/code/nmethod.cpp --- a/src/share/vm/code/nmethod.cpp Fri Aug 02 11:22:23 2013 +0200 +++ b/src/share/vm/code/nmethod.cpp Fri Aug 02 13:31:31 2013 +0200 @@ -1861,14 +1861,6 @@ #endif } -#ifdef GRAAL -void nmethod::mark_graal_reference(OopClosure* f) { - if (_graal_installed_code != NULL) { - f->do_oop((oop*) &_graal_installed_code); - } -} -#endif - // Iterate over metadata calling this function. Used by RedefineClasses void nmethod::metadata_do(void f(Metadata*)) { address low_boundary = verified_entry_point(); diff -r 87d9b5518065 -r f22cbff51c12 src/share/vm/code/nmethod.hpp --- a/src/share/vm/code/nmethod.hpp Fri Aug 02 11:22:23 2013 +0200 +++ b/src/share/vm/code/nmethod.hpp Fri Aug 02 13:31:31 2013 +0200 @@ -747,10 +747,6 @@ nm->metadata_do(Metadata::mark_on_stack); } void metadata_do(void f(Metadata*)); - -#ifdef GRAAL - void mark_graal_reference(OopClosure* f); -#endif }; // Locks an nmethod so its code will not get removed and it will not diff -r 87d9b5518065 -r f22cbff51c12 src/share/vm/memory/referenceProcessor.cpp --- a/src/share/vm/memory/referenceProcessor.cpp Fri Aug 02 11:22:23 2013 +0200 +++ b/src/share/vm/memory/referenceProcessor.cpp Fri Aug 02 13:31:31 2013 +0200 @@ -34,10 +34,6 @@ #include "oops/oop.inline.hpp" #include "runtime/java.hpp" #include "runtime/jniHandles.hpp" -#ifdef GRAAL -#include "code/codeCache.hpp" -#include "code/nmethod.hpp" -#endif ReferencePolicy* ReferenceProcessor::_always_clear_soft_ref_policy = NULL; ReferencePolicy* ReferenceProcessor::_default_soft_ref_policy = NULL; @@ -267,9 +263,6 @@ task_executor->set_single_threaded_mode(); } process_phaseJNI(is_alive, keep_alive, complete_gc); -#ifdef GRAAL - process_phaseGraalNMethods(keep_alive, complete_gc); -#endif } return ReferenceProcessorStats(soft_count, weak_count, final_count, phantom_count); @@ -312,15 +305,6 @@ complete_gc->do_void(); } -#ifdef GRAAL -void ReferenceProcessor::process_phaseGraalNMethods(OopClosure* keep_alive, - VoidClosure* complete_gc) { - CodeCache::alive_nmethods_do_graal_methods(keep_alive); - complete_gc->do_void(); -} - -#endif - template bool enqueue_discovered_ref_helper(ReferenceProcessor* ref, AbstractRefProcTaskExecutor* task_executor) { diff -r 87d9b5518065 -r f22cbff51c12 src/share/vm/memory/referenceProcessor.hpp --- a/src/share/vm/memory/referenceProcessor.hpp Fri Aug 02 11:22:23 2013 +0200 +++ b/src/share/vm/memory/referenceProcessor.hpp Fri Aug 02 13:31:31 2013 +0200 @@ -301,10 +301,6 @@ void process_phaseJNI(BoolObjectClosure* is_alive, OopClosure* keep_alive, VoidClosure* complete_gc); -#ifdef GRAAL - void process_phaseGraalNMethods(OopClosure* keep_alive, - VoidClosure* complete_gc); -#endif // Work methods used by the method process_discovered_reflist // Phase1: keep alive all those referents that are otherwise