changeset 10939:f22cbff51c12

Remove forced addition of Graal's oop during weak root processing (creates race condition)
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Fri, 02 Aug 2013 13:31:31 +0200
parents 87d9b5518065
children d85bdcb38fa2
files src/share/vm/code/codeCache.cpp src/share/vm/code/codeCache.hpp src/share/vm/code/nmethod.cpp src/share/vm/code/nmethod.hpp src/share/vm/memory/referenceProcessor.cpp src/share/vm/memory/referenceProcessor.hpp
diffstat 6 files changed, 1 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- 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();
 }
--- 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);
--- 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();
--- 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
--- 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 <class T>
 bool enqueue_discovered_ref_helper(ReferenceProcessor* ref,
                                    AbstractRefProcTaskExecutor* task_executor) {
--- 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