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 static int metadata_compare(Metadata* const& key, ciMetadata* const& elt);
72
73 ciObject* create_new_object(oop o);
74 ciMetadata* create_new_metadata(Metadata* o);
75
76 static bool is_equal(NonPermObject* p, oop key) {
77 return p->object()->get_oop() == key;
78 }
79
80 NonPermObject* &find_non_perm(oop key);
81 void insert_non_perm(NonPermObject* &where, oop key, ciObject* obj);
82
83 void init_ident_of(ciBaseObject* obj);
84
85 Arena* arena() { return _arena; }
86
87 void print_contents_impl();
88
89 ciInstance* get_unloaded_instance(ciInstanceKlass* klass);
90
91 public:
92 static bool is_initialized() { return _initialized; }
93
94 static void initialize();
95 void init_shared_objects();
96 void remove_symbols();
97
98 ciObjectFactory(Arena* arena, int expected_size);
99
100 // Get the ciObject corresponding to some oop.
101 ciObject* get(oop key);
102 ciMetadata* get_metadata(Metadata* key);
103 ciMetadata* cached_metadata(Metadata* key);
104 ciSymbol* get_symbol(Symbol* key);
105
106 // Get the ciSymbol corresponding to one of the vmSymbols.
107 static ciSymbol* vm_symbol_at(vmSymbolID index);
108
109 // Get the ciMethod representing an unloaded/unfound method.
110 ciMethod* get_unloaded_method(ciInstanceKlass* holder,
111 ciSymbol* name,
112 ciSymbol* signature,
113 ciInstanceKlass* accessor);
114
115 // Get a ciKlass representing an unloaded klass.
116 ciKlass* get_unloaded_klass(ciKlass* accessing_klass,
117 ciSymbol* name,
118 bool create_if_not_found);
119
120 // Get a ciInstance representing an unresolved klass mirror.
121 ciInstance* get_unloaded_klass_mirror(ciKlass* type);
122
123 // Get a ciInstance representing an unresolved method handle constant.
124 ciInstance* get_unloaded_method_handle_constant(ciKlass* holder,
125 ciSymbol* name,
126 ciSymbol* signature,
127 int ref_kind);
128
|
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 static int metadata_compare(Metadata* const& key, ciMetadata* const& elt);
72
73 ciObject* create_new_object(oop o);
74 ciMetadata* create_new_metadata(Metadata* o);
75
76 static bool is_equal(NonPermObject* p, oop key) {
77 return p->object()->get_oop() == key;
78 }
79
80 NonPermObject* &find_non_perm(Handle keyHandle);
81 void insert_non_perm(NonPermObject* &where, Handle keyHandle, ciObject* obj);
82
83 void init_ident_of(ciBaseObject* obj);
84
85 Arena* arena() { return _arena; }
86
87 void print_contents_impl();
88
89 ciInstance* get_unloaded_instance(ciInstanceKlass* klass);
90
91 public:
92 static bool is_initialized() { return _initialized; }
93
94 static void initialize();
95 void init_shared_objects();
96 void remove_symbols();
97
98 ciObjectFactory(Arena* arena, int expected_size);
99
100 // Get the ciObject corresponding to some oop.
101 ciObject* get(oop key);
102 ciMetadata* get_metadata(Metadata* key);
103 ciMetadata* cached_metadata(Metadata* key);
104 ciSymbol* get_symbol(Symbol* key);
105
106 // Get the ciSymbol corresponding to one of the vmSymbols.
107 static ciSymbol* vm_symbol_at(vmSymbolID index);
108
109 // Called on every new object made.
110 void notice_new_object(ciBaseObject* new_object);
111
112 // Get the ciMethod representing an unloaded/unfound method.
113 ciMethod* get_unloaded_method(ciInstanceKlass* holder,
114 ciSymbol* name,
115 ciSymbol* signature,
116 ciInstanceKlass* accessor);
117
118 // Get a ciKlass representing an unloaded klass.
119 ciKlass* get_unloaded_klass(ciKlass* accessing_klass,
120 ciSymbol* name,
121 bool create_if_not_found);
122
123 // Get a ciInstance representing an unresolved klass mirror.
124 ciInstance* get_unloaded_klass_mirror(ciKlass* type);
125
126 // Get a ciInstance representing an unresolved method handle constant.
127 ciInstance* get_unloaded_method_handle_constant(ciKlass* holder,
128 ciSymbol* name,
129 ciSymbol* signature,
130 int ref_kind);
131
|