< prev index next >

src/hotspot/share/cds/lambdaProxyClassDictionary.hpp

Print this page

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

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

193            _instantiated_method_type == other._instantiated_method_type;
194   }
195 
196 #ifndef PRODUCT
197   void print_on(outputStream* st) const;
198 #endif
199 };
200 
201 class DumpTimeLambdaProxyClassInfo {
202 public:
203   GrowableArray<InstanceKlass*>* _proxy_klasses;
204   DumpTimeLambdaProxyClassInfo() : _proxy_klasses(nullptr) {}
205   DumpTimeLambdaProxyClassInfo& operator=(const DumpTimeLambdaProxyClassInfo&) = delete;
206   ~DumpTimeLambdaProxyClassInfo();
207 
208   void add_proxy_klass(InstanceKlass* proxy_klass) {
209     if (_proxy_klasses == nullptr) {
210       _proxy_klasses = new (mtClassShared) GrowableArray<InstanceKlass*>(5, mtClassShared);
211     }
212     assert(_proxy_klasses != nullptr, "sanity");
213     // Try to preserve the order. get_shared_lambda_proxy_class returns shared classes in reverse order.
214     _proxy_klasses->insert_before(0, 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(
< prev index next >