< prev index next >

src/hotspot/share/aot/aotCompiledMethod.cpp

Print this page
rev 54621 : imported patch 8221734-v1

@@ -165,11 +165,11 @@
   methodHandle the_method(method());
   NoSafepointVerifier nsv;
 
   {
     // Enter critical section.  Does not block for safepoint.
-    MutexLockerEx pl(Patching_lock, Mutex::_no_safepoint_check_flag);
+    MutexLockerEx pl(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
 
     if (*_state_adr == new_state) {
       // another thread already performed this transition so nothing
       // to do, but return false to indicate this.
       return false;

@@ -188,16 +188,12 @@
         method()->set_aot_code(NULL);
     }
 #endif
 
     // Remove AOTCompiledMethod from method.
-    if (method() != NULL && (method()->code() == this ||
-                             method()->from_compiled_entry() == verified_entry_point())) {
-      HandleMark hm;
-      method()->clear_code(false /* already owns Patching_lock */);
-    }
-  } // leave critical region under Patching_lock
+    Method::unlink_code(method(), this);
+  } // leave critical region under CompiledMethod_lock
 
 
   if (TraceCreateZombies) {
     ResourceMark m;
     const char *new_state_str = (new_state == not_entrant) ? "not entrant" : "not used";

@@ -216,11 +212,11 @@
   methodHandle the_method(method());
   NoSafepointVerifier nsv;
 
   {
     // Enter critical section.  Does not block for safepoint.
-    MutexLockerEx pl(Patching_lock, Mutex::_no_safepoint_check_flag);
+    MutexLockerEx pl(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
 
     if (*_state_adr == in_use) {
       // another thread already performed this transition so nothing
       // to do, but return false to indicate this.
       return false;

@@ -230,11 +226,11 @@
     OrderAccess::storestore();
     *_state_adr = in_use;
 
     // Log the transition once
     log_state_change();
-  } // leave critical region under Patching_lock
+  } // leave critical region under CompiledMethod_lock
 
 
   if (TraceCreateZombies) {
     ResourceMark m;
     tty->print_cr("aot method <" INTPTR_FORMAT "> %s code made entrant", p2i(this), this->method() ? this->method()->name_and_sig_as_C_string() : "null");
< prev index next >