58 struct NonPermObject : public ResourceObj { 59 ciObject* _object; 60 NonPermObject* _next; 61 62 inline NonPermObject(NonPermObject* &bucket, oop key, ciObject* object); 63 ciObject* object() { return _object; } 64 NonPermObject* &next() { return _next; } 65 }; 66 private: 67 enum { NON_PERM_BUCKETS = 61 }; 68 NonPermObject* _non_perm_bucket[NON_PERM_BUCKETS]; 69 int _non_perm_count; 70 71 int find(Metadata* key, GrowableArray<ciMetadata*>* objects); 72 bool is_found_at(int index, Metadata* key, GrowableArray<ciMetadata*>* objects); 73 void insert(int index, ciMetadata* obj, GrowableArray<ciMetadata*>* objects); 74 75 ciObject* create_new_object(oop o); 76 ciMetadata* create_new_object(Metadata* o); 77 78 static bool is_equal(NonPermObject* p, oop key) { 79 return p->object()->get_oop() == key; 80 } 81 82 NonPermObject* &find_non_perm(oop key); 83 void insert_non_perm(NonPermObject* &where, oop key, ciObject* obj); 84 85 void init_ident_of(ciBaseObject* obj); 86 87 Arena* arena() { return _arena; } 88 89 void print_contents_impl(); 90 91 ciInstance* get_unloaded_instance(ciInstanceKlass* klass); 92 93 public: 94 static bool is_initialized() { return _initialized; } 95 96 static void initialize(); 97 void init_shared_objects(); | 58 struct NonPermObject : public ResourceObj { 59 ciObject* _object; 60 NonPermObject* _next; 61 62 inline NonPermObject(NonPermObject* &bucket, oop key, ciObject* object); 63 ciObject* object() { return _object; } 64 NonPermObject* &next() { return _next; } 65 }; 66 private: 67 enum { NON_PERM_BUCKETS = 61 }; 68 NonPermObject* _non_perm_bucket[NON_PERM_BUCKETS]; 69 int _non_perm_count; 70 71 int find(Metadata* key, GrowableArray<ciMetadata*>* objects); 72 bool is_found_at(int index, Metadata* key, GrowableArray<ciMetadata*>* objects); 73 void insert(int index, ciMetadata* obj, GrowableArray<ciMetadata*>* objects); 74 75 ciObject* create_new_object(oop o); 76 ciMetadata* create_new_object(Metadata* o); 77 78 void ensure_metadata_alive(ciMetadata* m); 79 80 static bool is_equal(NonPermObject* p, oop key) { 81 return p->object()->get_oop() == key; 82 } 83 84 NonPermObject* &find_non_perm(oop key); 85 void insert_non_perm(NonPermObject* &where, oop key, ciObject* obj); 86 87 void init_ident_of(ciBaseObject* obj); 88 89 Arena* arena() { return _arena; } 90 91 void print_contents_impl(); 92 93 ciInstance* get_unloaded_instance(ciInstanceKlass* klass); 94 95 public: 96 static bool is_initialized() { return _initialized; } 97 98 static void initialize(); 99 void init_shared_objects(); |