< prev index next >

src/hotspot/share/cds/runTimeClassInfo.hpp

Print this page

247   //                               0x0110   fields from Klass ...
248   static RunTimeClassInfo** info_pointer_addr(InstanceKlass* klass) {
249     return &((RunTimeClassInfo**)klass)[-1];
250   }
251 
252 public:
253   static RunTimeClassInfo* get_for(InstanceKlass* klass) {
254     assert(klass->is_shared(), "don't call for non-shared class");
255     return *info_pointer_addr(klass);
256   }
257   static void set_for(InstanceKlass* klass, RunTimeClassInfo* record) {
258     assert(ArchiveBuilder::current()->is_in_buffer_space(klass), "must be");
259     assert(ArchiveBuilder::current()->is_in_buffer_space(record), "must be");
260     *info_pointer_addr(klass) = record;
261     ArchivePtrMarker::mark_pointer(info_pointer_addr(klass));
262   }
263 
264   // Used by RunTimeSharedDictionary to implement OffsetCompactHashtable::EQUALS
265   static inline bool EQUALS(
266        const RunTimeClassInfo* value, Symbol* key, int len_unused) {

267     return (value->klass()->name() == key);



268   }
269 };
270 
271 class RunTimeSharedDictionary : public OffsetCompactHashtable<
272   Symbol*,
273   const RunTimeClassInfo*,
274   RunTimeClassInfo::EQUALS> {};
275 #endif // SHARE_CDS_RUNTIMECLASSINFO_HPP

247   //                               0x0110   fields from Klass ...
248   static RunTimeClassInfo** info_pointer_addr(InstanceKlass* klass) {
249     return &((RunTimeClassInfo**)klass)[-1];
250   }
251 
252 public:
253   static RunTimeClassInfo* get_for(InstanceKlass* klass) {
254     assert(klass->is_shared(), "don't call for non-shared class");
255     return *info_pointer_addr(klass);
256   }
257   static void set_for(InstanceKlass* klass, RunTimeClassInfo* record) {
258     assert(ArchiveBuilder::current()->is_in_buffer_space(klass), "must be");
259     assert(ArchiveBuilder::current()->is_in_buffer_space(record), "must be");
260     *info_pointer_addr(klass) = record;
261     ArchivePtrMarker::mark_pointer(info_pointer_addr(klass));
262   }
263 
264   // Used by RunTimeSharedDictionary to implement OffsetCompactHashtable::EQUALS
265   static inline bool EQUALS(
266        const RunTimeClassInfo* value, Symbol* key, int len_unused) {
267 #if INCLUDE_CDS
268     return (value->klass()->name() == key);
269 #else
270     return false;
271 #endif
272   }
273 };
274 
275 class RunTimeSharedDictionary : public OffsetCompactHashtable<
276   Symbol*,
277   const RunTimeClassInfo*,
278   RunTimeClassInfo::EQUALS> {};
279 #endif // SHARE_CDS_RUNTIMECLASSINFO_HPP
< prev index next >