mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
7088955: add C2 IR support to the SA
Reviewed-by: kvn
This commit is contained in:
parent
e39ba1a5fe
commit
e3afdf10ad
200 changed files with 7232 additions and 13674 deletions
|
@ -1371,37 +1371,6 @@ int instanceKlass::cached_itable_index(size_t idnum) {
|
|||
}
|
||||
|
||||
|
||||
//
|
||||
// nmethodBucket is used to record dependent nmethods for
|
||||
// deoptimization. nmethod dependencies are actually <klass, method>
|
||||
// pairs but we really only care about the klass part for purposes of
|
||||
// finding nmethods which might need to be deoptimized. Instead of
|
||||
// recording the method, a count of how many times a particular nmethod
|
||||
// was recorded is kept. This ensures that any recording errors are
|
||||
// noticed since an nmethod should be removed as many times are it's
|
||||
// added.
|
||||
//
|
||||
class nmethodBucket {
|
||||
private:
|
||||
nmethod* _nmethod;
|
||||
int _count;
|
||||
nmethodBucket* _next;
|
||||
|
||||
public:
|
||||
nmethodBucket(nmethod* nmethod, nmethodBucket* next) {
|
||||
_nmethod = nmethod;
|
||||
_next = next;
|
||||
_count = 1;
|
||||
}
|
||||
int count() { return _count; }
|
||||
int increment() { _count += 1; return _count; }
|
||||
int decrement() { _count -= 1; assert(_count >= 0, "don't underflow"); return _count; }
|
||||
nmethodBucket* next() { return _next; }
|
||||
void set_next(nmethodBucket* b) { _next = b; }
|
||||
nmethod* get_nmethod() { return _nmethod; }
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Walk the list of dependent nmethods searching for nmethods which
|
||||
// are dependent on the changes that were passed in and mark them for
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue