< prev index next >

src/hotspot/share/ci/ciObjectFactory.hpp

Print this page

 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 
< prev index next >