< prev index next >

src/hotspot/share/cds/lambdaProxyClassDictionary.hpp

Print this page

194            _instantiated_method_type == other._instantiated_method_type;
195   }
196 
197 #ifndef PRODUCT
198   void print_on(outputStream* st) const;
199 #endif
200 };
201 
202 class DumpTimeLambdaProxyClassInfo {
203 public:
204   GrowableArray<InstanceKlass*>* _proxy_klasses;
205   DumpTimeLambdaProxyClassInfo() : _proxy_klasses(nullptr) {}
206   DumpTimeLambdaProxyClassInfo& operator=(const DumpTimeLambdaProxyClassInfo&) = delete;
207   ~DumpTimeLambdaProxyClassInfo();
208 
209   void add_proxy_klass(InstanceKlass* proxy_klass) {
210     if (_proxy_klasses == nullptr) {
211       _proxy_klasses = new (mtClassShared) GrowableArray<InstanceKlass*>(5, mtClassShared);
212     }
213     assert(_proxy_klasses != nullptr, "sanity");
214     _proxy_klasses->append(proxy_klass);

215   }
216 
217   void metaspace_pointers_do(MetaspaceClosure* it) {
218     for (int i=0; i<_proxy_klasses->length(); i++) {
219       it->push(_proxy_klasses->adr_at(i));
220     }
221   }
222 };
223 
224 class RunTimeLambdaProxyClassInfo {
225   RunTimeLambdaProxyClassKey _key;
226   InstanceKlass* _proxy_klass_head;
227 public:
228   RunTimeLambdaProxyClassInfo(RunTimeLambdaProxyClassKey key, InstanceKlass* proxy_klass_head) :
229     _key(key), _proxy_klass_head(proxy_klass_head) {}
230 
231   InstanceKlass* proxy_klass_head() const { return _proxy_klass_head; }
232 
233   // Used by LambdaProxyClassDictionary to implement OffsetCompactHashtable::EQUALS
234   static inline bool EQUALS(

194            _instantiated_method_type == other._instantiated_method_type;
195   }
196 
197 #ifndef PRODUCT
198   void print_on(outputStream* st) const;
199 #endif
200 };
201 
202 class DumpTimeLambdaProxyClassInfo {
203 public:
204   GrowableArray<InstanceKlass*>* _proxy_klasses;
205   DumpTimeLambdaProxyClassInfo() : _proxy_klasses(nullptr) {}
206   DumpTimeLambdaProxyClassInfo& operator=(const DumpTimeLambdaProxyClassInfo&) = delete;
207   ~DumpTimeLambdaProxyClassInfo();
208 
209   void add_proxy_klass(InstanceKlass* proxy_klass) {
210     if (_proxy_klasses == nullptr) {
211       _proxy_klasses = new (mtClassShared) GrowableArray<InstanceKlass*>(5, mtClassShared);
212     }
213     assert(_proxy_klasses != nullptr, "sanity");
214     // Try to preserve the order. get_shared_lambda_proxy_class returns shared classes in reverse order.
215     _proxy_klasses->insert_before(0, proxy_klass);
216   }
217 
218   void metaspace_pointers_do(MetaspaceClosure* it) {
219     for (int i=0; i<_proxy_klasses->length(); i++) {
220       it->push(_proxy_klasses->adr_at(i));
221     }
222   }
223 };
224 
225 class RunTimeLambdaProxyClassInfo {
226   RunTimeLambdaProxyClassKey _key;
227   InstanceKlass* _proxy_klass_head;
228 public:
229   RunTimeLambdaProxyClassInfo(RunTimeLambdaProxyClassKey key, InstanceKlass* proxy_klass_head) :
230     _key(key), _proxy_klass_head(proxy_klass_head) {}
231 
232   InstanceKlass* proxy_klass_head() const { return _proxy_klass_head; }
233 
234   // Used by LambdaProxyClassDictionary to implement OffsetCompactHashtable::EQUALS
235   static inline bool EQUALS(
< prev index next >