< prev index next >

src/share/vm/oops/instanceKlass.hpp

Print this page

        

*** 288,300 **** --- 288,306 ---- // named, or a previously loaded anonymous class. A non-anonymous class // or an anonymous class loaded through normal classloading does not // have this embedded field. // + // TODO + bool _set_finals; + friend class SystemDictionary; public: + bool set_finals() { return _set_finals; } + void set_finals(bool b) { _set_finals = b; } + bool has_nonstatic_fields() const { return (_misc_flags & _misc_has_nonstatic_fields) != 0; } void set_has_nonstatic_fields(bool b) { if (b) {
*** 1258,1267 **** --- 1264,1303 ---- void set_is_static_field_id() { _is_static_field_id = true; } #endif void verify(Klass* holder); }; + class nmethodBucketEntry : public CHeapObj<mtClass> { + friend class VMStructs; + private: + nmethod* _nmethod; + int _count; + nmethodBucketEntry* _next; + public: + nmethodBucketEntry(nmethod* nmethod, nmethodBucketEntry* next) { + _nmethod = nmethod; + _next = next; + _count = 1; + } + int count() { return _count; } + int increment() { _count += 1; return _count; } + int decrement(); + nmethodBucketEntry* next() { return _next; } + void set_next(nmethodBucketEntry* b) { _next = b; } + nmethod* get_nmethod() { return _nmethod; } + + static int mark_dependent_nmethods(nmethodBucketEntry* deps, DepChange& changes); + static nmethodBucketEntry* add_dependent_nmethod(nmethodBucketEntry* deps, nmethod* nm); + static bool remove_dependent_nmethod(nmethodBucketEntry* deps, nmethod* nm, bool& found); + static nmethodBucketEntry* clean_dependent_nmethods(nmethodBucketEntry* deps); + + #ifndef PRODUCT + static void verify(nmethodBucketEntry* deps); + static void print_dependent_nmethods(nmethodBucketEntry* deps, bool verbose); + static bool is_dependent_nmethod(nmethodBucketEntry* deps, nmethod* nm); + #endif //PRODUCT + }; // // 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
*** 1272,1303 **** // added. // class nmethodBucket: public CHeapObj<mtClass> { friend class VMStructs; 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(); ! nmethodBucket* next() { return _next; } ! void set_next(nmethodBucket* b) { _next = b; } ! nmethod* get_nmethod() { return _nmethod; } static int mark_dependent_nmethods(nmethodBucket* deps, DepChange& changes); static nmethodBucket* add_dependent_nmethod(nmethodBucket* deps, nmethod* nm); static bool remove_dependent_nmethod(nmethodBucket* deps, nmethod* nm); static nmethodBucket* clean_dependent_nmethods(nmethodBucket* deps); #ifndef PRODUCT static void print_dependent_nmethods(nmethodBucket* deps, bool verbose); static bool is_dependent_nmethod(nmethodBucket* deps, nmethod* nm); #endif //PRODUCT }; --- 1308,1343 ---- // added. // class nmethodBucket: public CHeapObj<mtClass> { friend class VMStructs; private: ! enum { ! FIRST_Bucket = 0, ! KlassBucket = FIRST_Bucket, ! CallSiteBucket, ! ConstantFieldBucket, ! Bucket_LIMIT ! }; ! nmethodBucketEntry* _buckets[Bucket_LIMIT]; ! ! nmethodBucket() { ! for (int i = FIRST_Bucket; i < Bucket_LIMIT; i++) { ! _buckets[i] = NULL; } ! } ! static int bucket_index(DepChange& changes); ! ! public: static int mark_dependent_nmethods(nmethodBucket* deps, DepChange& changes); static nmethodBucket* add_dependent_nmethod(nmethodBucket* deps, nmethod* nm); static bool remove_dependent_nmethod(nmethodBucket* deps, nmethod* nm); static nmethodBucket* clean_dependent_nmethods(nmethodBucket* deps); + static int release(nmethodBucket* deps); #ifndef PRODUCT + static void verify(nmethodBucket* deps); static void print_dependent_nmethods(nmethodBucket* deps, bool verbose); static bool is_dependent_nmethod(nmethodBucket* deps, nmethod* nm); #endif //PRODUCT };
< prev index next >