< prev index next >
src/hotspot/share/aot/aotCompiledMethod.cpp
Print this page
rev 54936 : imported patch 8221734-v3
*** 163,173 ****
methodHandle the_method(method());
NoSafepointVerifier nsv;
{
// Enter critical section. Does not block for safepoint.
! MutexLocker pl(Patching_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;
--- 163,173 ----
methodHandle the_method(method());
NoSafepointVerifier nsv;
{
// Enter critical section. Does not block for safepoint.
! MutexLocker 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;
*** 186,201 ****
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
if (TraceCreateZombies) {
ResourceMark m;
const char *new_state_str = (new_state == not_entrant) ? "not entrant" : "not used";
--- 186,199 ----
method()->set_aot_code(NULL);
}
#endif
// Remove AOTCompiledMethod from method.
! if (method() != NULL) {
! method()->unlink_code(this);
}
! } // leave critical region under CompiledMethod_lock
if (TraceCreateZombies) {
ResourceMark m;
const char *new_state_str = (new_state == not_entrant) ? "not entrant" : "not used";
*** 214,224 ****
methodHandle the_method(method());
NoSafepointVerifier nsv;
{
// Enter critical section. Does not block for safepoint.
! MutexLocker pl(Patching_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;
--- 212,222 ----
methodHandle the_method(method());
NoSafepointVerifier nsv;
{
// Enter critical section. Does not block for safepoint.
! MutexLocker 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;
*** 228,238 ****
OrderAccess::storestore();
*_state_adr = in_use;
// Log the transition once
log_state_change();
! } // leave critical region under Patching_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");
--- 226,236 ----
OrderAccess::storestore();
*_state_adr = in_use;
// Log the transition once
log_state_change();
! } // 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 >