1268 void set_init_thread(Thread *thread) { _init_thread = thread; } 1269 1270 // The RedefineClasses() API can cause new method idnums to be needed 1271 // which will cause the caches to grow. Safety requires different 1272 // cache management logic if the caches can grow instead of just 1273 // going from NULL to non-NULL. 1274 bool idnum_can_increment() const { return has_been_redefined(); } 1275 inline jmethodID* methods_jmethod_ids_acquire() const; 1276 inline void release_set_methods_jmethod_ids(jmethodID* jmeths); 1277 1278 // Lock during initialization 1279 public: 1280 // Lock for (1) initialization; (2) access to the ConstantPool of this class. 1281 // Must be one per class and it has to be a VM internal object so java code 1282 // cannot lock it (like the mirror). 1283 // It has to be an object not a Mutex because it's held through java calls. 1284 oop init_lock() const; 1285 private: 1286 void fence_and_clear_init_lock(); 1287 1288 bool link_class_impl (bool throw_verifyerror, TRAPS); 1289 bool verify_code (bool throw_verifyerror, TRAPS); 1290 void initialize_impl (TRAPS); 1291 void initialize_super_interfaces (TRAPS); 1292 void eager_initialize_impl (); 1293 /* jni_id_for_impl for jfieldID only */ 1294 JNIid* jni_id_for_impl (int offset); 1295 1296 // Returns the array class for the n'th dimension 1297 Klass* array_klass_impl(bool or_null, int n, TRAPS); 1298 1299 // Returns the array class with this class as element type 1300 Klass* array_klass_impl(bool or_null, TRAPS); 1301 1302 // find a local method (returns NULL if not found) 1303 Method* find_method_impl(const Symbol* name, 1304 const Symbol* signature, 1305 OverpassLookupMode overpass_mode, 1306 StaticLookupMode static_mode, 1307 PrivateLookupMode private_mode) const; 1308 1309 static Method* find_method_impl(const Array<Method*>* methods, | 1268 void set_init_thread(Thread *thread) { _init_thread = thread; } 1269 1270 // The RedefineClasses() API can cause new method idnums to be needed 1271 // which will cause the caches to grow. Safety requires different 1272 // cache management logic if the caches can grow instead of just 1273 // going from NULL to non-NULL. 1274 bool idnum_can_increment() const { return has_been_redefined(); } 1275 inline jmethodID* methods_jmethod_ids_acquire() const; 1276 inline void release_set_methods_jmethod_ids(jmethodID* jmeths); 1277 1278 // Lock during initialization 1279 public: 1280 // Lock for (1) initialization; (2) access to the ConstantPool of this class. 1281 // Must be one per class and it has to be a VM internal object so java code 1282 // cannot lock it (like the mirror). 1283 // It has to be an object not a Mutex because it's held through java calls. 1284 oop init_lock() const; 1285 private: 1286 void fence_and_clear_init_lock(); 1287 1288 bool link_class_impl (TRAPS); 1289 bool verify_code (TRAPS); 1290 void initialize_impl (TRAPS); 1291 void initialize_super_interfaces (TRAPS); 1292 void eager_initialize_impl (); 1293 /* jni_id_for_impl for jfieldID only */ 1294 JNIid* jni_id_for_impl (int offset); 1295 1296 // Returns the array class for the n'th dimension 1297 Klass* array_klass_impl(bool or_null, int n, TRAPS); 1298 1299 // Returns the array class with this class as element type 1300 Klass* array_klass_impl(bool or_null, TRAPS); 1301 1302 // find a local method (returns NULL if not found) 1303 Method* find_method_impl(const Symbol* name, 1304 const Symbol* signature, 1305 OverpassLookupMode overpass_mode, 1306 StaticLookupMode static_mode, 1307 PrivateLookupMode private_mode) const; 1308 1309 static Method* find_method_impl(const Array<Method*>* methods, |