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
|