< prev index next >

src/hotspot/share/ci/ciObjectFactory.hpp

Print this page

 61     NonPermObject* _next;
 62 
 63     inline NonPermObject(NonPermObject* &bucket, oop key, ciObject* object);
 64     ciObject*     object()  { return _object; }
 65     NonPermObject* &next()  { return _next; }
 66   };
 67 private:
 68   enum { NON_PERM_BUCKETS = 61 };
 69   NonPermObject* _non_perm_bucket[NON_PERM_BUCKETS];
 70   int _non_perm_count;
 71 
 72   static int metadata_compare(Metadata* const& key, ciMetadata* const& elt);
 73 
 74   ciObject* create_new_object(oop o);
 75   ciMetadata* create_new_metadata(Metadata* o);
 76 
 77   static bool is_equal(NonPermObject* p, oop key) {
 78     return p->object()->get_oop() == key;
 79   }
 80 
 81   NonPermObject* &find_non_perm(oop key);
 82   void insert_non_perm(NonPermObject* &where, oop key, ciObject* obj);
 83 
 84   void init_ident_of(ciBaseObject* obj);
 85 
 86   Arena* arena() { return _arena; }
 87 
 88   void print_contents_impl();
 89 
 90   ciInstance* get_unloaded_instance(ciInstanceKlass* klass);
 91 
 92 public:
 93   static bool is_initialized() { return _initialized; }
 94 
 95   static void initialize();
 96   void init_shared_objects();
 97   void remove_symbols();
 98 
 99   ciObjectFactory(Arena* arena, int expected_size);
100 
101   // Get the ciObject corresponding to some oop.
102   ciObject* get(oop key);
103   ciMetadata* get_metadata(Metadata* key);
104   ciMetadata* cached_metadata(Metadata* key);
105   ciSymbol* get_symbol(Symbol* key);
106 
107   // Get the ciSymbol corresponding to one of the vmSymbols.
108   static ciSymbol* vm_symbol_at(vmSymbolID index);
109 



110   // Get the ciMethod representing an unloaded/unfound method.
111   ciMethod* get_unloaded_method(ciInstanceKlass* holder,
112                                 ciSymbol*        name,
113                                 ciSymbol*        signature,
114                                 ciInstanceKlass* accessor);
115 
116   // Get a ciKlass representing an unloaded klass.
117   ciKlass* get_unloaded_klass(ciKlass* accessing_klass,
118                               ciSymbol* name,
119                               bool create_if_not_found);
120 
121   // Get a ciInstance representing an unresolved klass mirror.
122   ciInstance* get_unloaded_klass_mirror(ciKlass* type);
123 
124   // Get a ciInstance representing an unresolved method handle constant.
125   ciInstance* get_unloaded_method_handle_constant(ciKlass*  holder,
126                                                   ciSymbol* name,
127                                                   ciSymbol* signature,
128                                                   int       ref_kind);
129 

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