216 _buckets = 0;
217 _entries = 0;
218 }
219
220 void init(address base_address, u4 entry_count, u4 bucket_count, u4* buckets, u4* entries) {
221 _base_address = base_address;
222 _bucket_count = bucket_count;
223 _entry_count = entry_count;
224 _buckets = buckets;
225 _entries = entries;
226 }
227
228 template <class I> inline void iterate(const I& iterator);
229
230 bool exists(u4 value);
231
232 // For reading from/writing to the CDS archive
233 void serialize(SerializeClosure* soc);
234
235 inline bool empty() {
236 return (_entry_count==0);
237 }
238 };
239
240 template <class T, class N> class CompactHashtable : public SimpleCompactHashtable {
241 friend class VMStructs;
242
243 public:
244 enum CompactHashtableType {
245 _symbol_table = 0,
246 _string_table = 1
247 };
248
249 private:
250 u4 _type;
251
252 inline Symbol* decode_entry(CompactHashtable<Symbol*, char>* const t,
253 u4 offset, const char* name, int len);
254
255 inline oop decode_entry(CompactHashtable<oop, char>* const t,
256 u4 offset, const char* name, int len);
|
216 _buckets = 0;
217 _entries = 0;
218 }
219
220 void init(address base_address, u4 entry_count, u4 bucket_count, u4* buckets, u4* entries) {
221 _base_address = base_address;
222 _bucket_count = bucket_count;
223 _entry_count = entry_count;
224 _buckets = buckets;
225 _entries = entries;
226 }
227
228 template <class I> inline void iterate(const I& iterator);
229
230 bool exists(u4 value);
231
232 // For reading from/writing to the CDS archive
233 void serialize(SerializeClosure* soc);
234
235 inline bool empty() {
236 return (_entry_count == 0);
237 }
238 };
239
240 template <class T, class N> class CompactHashtable : public SimpleCompactHashtable {
241 friend class VMStructs;
242
243 public:
244 enum CompactHashtableType {
245 _symbol_table = 0,
246 _string_table = 1
247 };
248
249 private:
250 u4 _type;
251
252 inline Symbol* decode_entry(CompactHashtable<Symbol*, char>* const t,
253 u4 offset, const char* name, int len);
254
255 inline oop decode_entry(CompactHashtable<oop, char>* const t,
256 u4 offset, const char* name, int len);
|