mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
6863023: need non-perm oops in code cache for JSR 292
Make a special root-list for those few nmethods which might contain non-perm oops. Reviewed-by: twisti, kvn, never, jmasa, ysr
This commit is contained in:
parent
1cf5b7ae11
commit
e261aecad8
74 changed files with 979 additions and 279 deletions
|
@ -2025,7 +2025,7 @@ void instanceKlass::add_osr_nmethod(nmethod* n) {
|
|||
// This is a short non-blocking critical region, so the no safepoint check is ok.
|
||||
OsrList_lock->lock_without_safepoint_check();
|
||||
assert(n->is_osr_method(), "wrong kind of nmethod");
|
||||
n->set_link(osr_nmethods_head());
|
||||
n->set_osr_link(osr_nmethods_head());
|
||||
set_osr_nmethods_head(n);
|
||||
// Remember to unlock again
|
||||
OsrList_lock->unlock();
|
||||
|
@ -2041,17 +2041,17 @@ void instanceKlass::remove_osr_nmethod(nmethod* n) {
|
|||
// Search for match
|
||||
while(cur != NULL && cur != n) {
|
||||
last = cur;
|
||||
cur = cur->link();
|
||||
cur = cur->osr_link();
|
||||
}
|
||||
if (cur == n) {
|
||||
if (last == NULL) {
|
||||
// Remove first element
|
||||
set_osr_nmethods_head(osr_nmethods_head()->link());
|
||||
set_osr_nmethods_head(osr_nmethods_head()->osr_link());
|
||||
} else {
|
||||
last->set_link(cur->link());
|
||||
last->set_osr_link(cur->osr_link());
|
||||
}
|
||||
}
|
||||
n->set_link(NULL);
|
||||
n->set_osr_link(NULL);
|
||||
// Remember to unlock again
|
||||
OsrList_lock->unlock();
|
||||
}
|
||||
|
@ -2068,7 +2068,7 @@ nmethod* instanceKlass::lookup_osr_nmethod(const methodOop m, int bci) const {
|
|||
OsrList_lock->unlock();
|
||||
return osr;
|
||||
}
|
||||
osr = osr->link();
|
||||
osr = osr->osr_link();
|
||||
}
|
||||
OsrList_lock->unlock();
|
||||
return NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue