< prev index next >

src/share/vm/oops/instanceKlass.hpp

Print this page




1289   void set_init_thread(Thread *thread)  { _init_thread = thread; }
1290 
1291   // The RedefineClasses() API can cause new method idnums to be needed
1292   // which will cause the caches to grow. Safety requires different
1293   // cache management logic if the caches can grow instead of just
1294   // going from NULL to non-NULL.
1295   bool idnum_can_increment() const      { return has_been_redefined(); }
1296   inline jmethodID* methods_jmethod_ids_acquire() const;
1297   inline void release_set_methods_jmethod_ids(jmethodID* jmeths);
1298 
1299   // Lock during initialization
1300 public:
1301   // Lock for (1) initialization; (2) access to the ConstantPool of this class.
1302   // Must be one per class and it has to be a VM internal object so java code
1303   // cannot lock it (like the mirror).
1304   // It has to be an object not a Mutex because it's held through java calls.
1305   oop init_lock() const;
1306 private:
1307   void fence_and_clear_init_lock();
1308 
1309   // Static methods that are used to implement member methods where an exposed this pointer
1310   // is needed due to possible GCs
1311   static bool link_class_impl                           (InstanceKlass* this_k, bool throw_verifyerror, TRAPS);
1312   static bool verify_code                               (InstanceKlass* this_k, bool throw_verifyerror, TRAPS);
1313   static void initialize_impl                           (InstanceKlass* this_k, TRAPS);
1314   static void initialize_super_interfaces               (InstanceKlass* this_k, TRAPS);
1315   static void eager_initialize_impl                     (InstanceKlass* this_k);
1316   static void set_initialization_state_and_notify_impl  (InstanceKlass* this_k, ClassState state, TRAPS);
1317   static void call_class_initializer_impl               (InstanceKlass* this_k, TRAPS);
1318   static Klass* array_klass_impl                        (InstanceKlass* this_k, bool or_null, int n, TRAPS);
1319   static void do_local_static_fields_impl               (InstanceKlass* this_k, void f(fieldDescriptor* fd, Handle, TRAPS), Handle, TRAPS);
1320   /* jni_id_for_impl for jfieldID only */
1321   static JNIid* jni_id_for_impl                         (InstanceKlass* this_k, int offset);
1322 
1323   // Returns the array class for the n'th dimension
1324   Klass* array_klass_impl(bool or_null, int n, TRAPS);
1325 
1326   // Returns the array class with this class as element type
1327   Klass* array_klass_impl(bool or_null, TRAPS);
1328 
1329   // find a local method (returns NULL if not found)
1330   Method* find_method_impl(const Symbol* name,
1331                            const Symbol* signature,
1332                            OverpassLookupMode overpass_mode,
1333                            StaticLookupMode static_mode,
1334                            PrivateLookupMode private_mode) const;
1335 
1336   static Method* find_method_impl(const Array<Method*>* methods,
1337                                   const Symbol* name,
1338                                   const Symbol* signature,
1339                                   OverpassLookupMode overpass_mode,
1340                                   StaticLookupMode static_mode,
1341                                   PrivateLookupMode private_mode);




1289   void set_init_thread(Thread *thread)  { _init_thread = thread; }
1290 
1291   // The RedefineClasses() API can cause new method idnums to be needed
1292   // which will cause the caches to grow. Safety requires different
1293   // cache management logic if the caches can grow instead of just
1294   // going from NULL to non-NULL.
1295   bool idnum_can_increment() const      { return has_been_redefined(); }
1296   inline jmethodID* methods_jmethod_ids_acquire() const;
1297   inline void release_set_methods_jmethod_ids(jmethodID* jmeths);
1298 
1299   // Lock during initialization
1300 public:
1301   // Lock for (1) initialization; (2) access to the ConstantPool of this class.
1302   // Must be one per class and it has to be a VM internal object so java code
1303   // cannot lock it (like the mirror).
1304   // It has to be an object not a Mutex because it's held through java calls.
1305   oop init_lock() const;
1306 private:
1307   void fence_and_clear_init_lock();
1308 
1309   bool link_class_impl                           (bool throw_verifyerror, TRAPS);
1310   bool verify_code                               (bool throw_verifyerror, TRAPS);
1311   void initialize_impl                           (TRAPS);
1312   void initialize_super_interfaces               (TRAPS);
1313   void eager_initialize_impl                     ();
1314   void set_initialization_state_and_notify_impl  (ClassState state, TRAPS);
1315   void call_class_initializer_impl               (TRAPS);
1316   void do_local_static_fields_impl               (void f(fieldDescriptor* fd, Handle, TRAPS), Handle, TRAPS);



1317   /* jni_id_for_impl for jfieldID only */
1318   JNIid* jni_id_for_impl                         (int offset);
1319 
1320   // Returns the array class for the n'th dimension
1321   Klass* array_klass_impl(bool or_null, int n, TRAPS);
1322 
1323   // Returns the array class with this class as element type
1324   Klass* array_klass_impl(bool or_null, TRAPS);
1325 
1326   // find a local method (returns NULL if not found)
1327   Method* find_method_impl(const Symbol* name,
1328                            const Symbol* signature,
1329                            OverpassLookupMode overpass_mode,
1330                            StaticLookupMode static_mode,
1331                            PrivateLookupMode private_mode) const;
1332 
1333   static Method* find_method_impl(const Array<Method*>* methods,
1334                                   const Symbol* name,
1335                                   const Symbol* signature,
1336                                   OverpassLookupMode overpass_mode,
1337                                   StaticLookupMode static_mode,
1338                                   PrivateLookupMode private_mode);


< prev index next >