Mercurial > hg > truffle
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; |