equal
deleted
inserted
replaced
2150 // only one compilation can be active |
2150 // only one compilation can be active |
2151 NEEDS_CLEANUP |
2151 NEEDS_CLEANUP |
2152 // This is a short non-blocking critical region, so the no safepoint check is ok. |
2152 // This is a short non-blocking critical region, so the no safepoint check is ok. |
2153 OsrList_lock->lock_without_safepoint_check(); |
2153 OsrList_lock->lock_without_safepoint_check(); |
2154 assert(n->is_osr_method(), "wrong kind of nmethod"); |
2154 assert(n->is_osr_method(), "wrong kind of nmethod"); |
2155 n->set_link(osr_nmethods_head()); |
2155 n->set_osr_link(osr_nmethods_head()); |
2156 set_osr_nmethods_head(n); |
2156 set_osr_nmethods_head(n); |
2157 // Remember to unlock again |
2157 // Remember to unlock again |
2158 OsrList_lock->unlock(); |
2158 OsrList_lock->unlock(); |
2159 } |
2159 } |
2160 |
2160 |
2166 nmethod* last = NULL; |
2166 nmethod* last = NULL; |
2167 nmethod* cur = osr_nmethods_head(); |
2167 nmethod* cur = osr_nmethods_head(); |
2168 // Search for match |
2168 // Search for match |
2169 while(cur != NULL && cur != n) { |
2169 while(cur != NULL && cur != n) { |
2170 last = cur; |
2170 last = cur; |
2171 cur = cur->link(); |
2171 cur = cur->osr_link(); |
2172 } |
2172 } |
2173 if (cur == n) { |
2173 if (cur == n) { |
2174 if (last == NULL) { |
2174 if (last == NULL) { |
2175 // Remove first element |
2175 // Remove first element |
2176 set_osr_nmethods_head(osr_nmethods_head()->link()); |
2176 set_osr_nmethods_head(osr_nmethods_head()->osr_link()); |
2177 } else { |
2177 } else { |
2178 last->set_link(cur->link()); |
2178 last->set_osr_link(cur->osr_link()); |
2179 } |
2179 } |
2180 } |
2180 } |
2181 n->set_link(NULL); |
2181 n->set_osr_link(NULL); |
2182 // Remember to unlock again |
2182 // Remember to unlock again |
2183 OsrList_lock->unlock(); |
2183 OsrList_lock->unlock(); |
2184 } |
2184 } |
2185 |
2185 |
2186 nmethod* instanceKlass::lookup_osr_nmethod(const methodOop m, int bci) const { |
2186 nmethod* instanceKlass::lookup_osr_nmethod(const methodOop m, int bci) const { |
2193 (bci == InvocationEntryBci || osr->osr_entry_bci() == bci)) { |
2193 (bci == InvocationEntryBci || osr->osr_entry_bci() == bci)) { |
2194 // Found a match - return it. |
2194 // Found a match - return it. |
2195 OsrList_lock->unlock(); |
2195 OsrList_lock->unlock(); |
2196 return osr; |
2196 return osr; |
2197 } |
2197 } |
2198 osr = osr->link(); |
2198 osr = osr->osr_link(); |
2199 } |
2199 } |
2200 OsrList_lock->unlock(); |
2200 OsrList_lock->unlock(); |
2201 return NULL; |
2201 return NULL; |
2202 } |
2202 } |
2203 |
2203 |