comparison src/share/vm/classfile/loaderConstraints.hpp @ 6197:d2a62e0f25eb

6995781: Native Memory Tracking (Phase 1) 7151532: DCmd for hotspot native memory tracking Summary: Implementation of native memory tracking phase 1, which tracks VM native memory usage, and related DCmd Reviewed-by: acorn, coleenp, fparain
author zgu
date Thu, 28 Jun 2012 17:03:16 -0400
parents 1d1603768966
children da91efe96a93
comparison
equal deleted inserted replaced
6174:74533f63b116 6197:d2a62e0f25eb
29 #include "classfile/placeholders.hpp" 29 #include "classfile/placeholders.hpp"
30 #include "utilities/hashtable.hpp" 30 #include "utilities/hashtable.hpp"
31 31
32 class LoaderConstraintEntry; 32 class LoaderConstraintEntry;
33 33
34 class LoaderConstraintTable : public Hashtable<klassOop> { 34 class LoaderConstraintTable : public Hashtable<klassOop, mtClass> {
35 friend class VMStructs; 35 friend class VMStructs;
36 private: 36 private:
37 37
38 enum Constants { 38 enum Constants {
39 _loader_constraint_size = 107, // number of entries in constraint table 39 _loader_constraint_size = 107, // number of entries in constraint table
51 klassOop klass, int num_loaders, 51 klassOop klass, int num_loaders,
52 int max_loaders); 52 int max_loaders);
53 void free_entry(LoaderConstraintEntry *entry); 53 void free_entry(LoaderConstraintEntry *entry);
54 54
55 LoaderConstraintEntry* bucket(int i) { 55 LoaderConstraintEntry* bucket(int i) {
56 return (LoaderConstraintEntry*)Hashtable<klassOop>::bucket(i); 56 return (LoaderConstraintEntry*)Hashtable<klassOop, mtClass>::bucket(i);
57 } 57 }
58 58
59 LoaderConstraintEntry** bucket_addr(int i) { 59 LoaderConstraintEntry** bucket_addr(int i) {
60 return (LoaderConstraintEntry**)Hashtable<klassOop>::bucket_addr(i); 60 return (LoaderConstraintEntry**)Hashtable<klassOop, mtClass>::bucket_addr(i);
61 } 61 }
62 62
63 // GC support 63 // GC support
64 void oops_do(OopClosure* f); 64 void oops_do(OopClosure* f);
65 65
92 #ifndef PRODUCT 92 #ifndef PRODUCT
93 void print(); 93 void print();
94 #endif 94 #endif
95 }; 95 };
96 96
97 class LoaderConstraintEntry : public HashtableEntry<klassOop> { 97 class LoaderConstraintEntry : public HashtableEntry<klassOop, mtClass> {
98 friend class VMStructs; 98 friend class VMStructs;
99 private: 99 private:
100 Symbol* _name; // class name 100 Symbol* _name; // class name
101 int _num_loaders; 101 int _num_loaders;
102 int _max_loaders; 102 int _max_loaders;
107 klassOop klass() { return literal(); } 107 klassOop klass() { return literal(); }
108 klassOop* klass_addr() { return literal_addr(); } 108 klassOop* klass_addr() { return literal_addr(); }
109 void set_klass(klassOop k) { set_literal(k); } 109 void set_klass(klassOop k) { set_literal(k); }
110 110
111 LoaderConstraintEntry* next() { 111 LoaderConstraintEntry* next() {
112 return (LoaderConstraintEntry*)HashtableEntry<klassOop>::next(); 112 return (LoaderConstraintEntry*)HashtableEntry<klassOop, mtClass>::next();
113 } 113 }
114 114
115 LoaderConstraintEntry** next_addr() { 115 LoaderConstraintEntry** next_addr() {
116 return (LoaderConstraintEntry**)HashtableEntry<klassOop>::next_addr(); 116 return (LoaderConstraintEntry**)HashtableEntry<klassOop, mtClass>::next_addr();
117 } 117 }
118 void set_next(LoaderConstraintEntry* next) { 118 void set_next(LoaderConstraintEntry* next) {
119 HashtableEntry<klassOop>::set_next(next); 119 HashtableEntry<klassOop, mtClass>::set_next(next);
120 } 120 }
121 121
122 Symbol* name() { return _name; } 122 Symbol* name() { return _name; }
123 void set_name(Symbol* name) { 123 void set_name(Symbol* name) {
124 _name = name; 124 _name = name;