374 } 375 } 376 bool search_secondary_supers(Klass* k) const; 377 378 // Find LCA in class hierarchy 379 Klass *LCA( Klass *k ); 380 381 // Check whether reflection/jni/jvm code is allowed to instantiate this class; 382 // if not, throw either an Error or an Exception. 383 virtual void check_valid_for_instantiation(bool throwError, TRAPS); 384 385 // array copying 386 virtual void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS); 387 388 // tells if the class should be initialized 389 virtual bool should_be_initialized() const { return false; } 390 // initializes the klass 391 virtual void initialize(TRAPS); 392 // lookup operation for MethodLookupCache 393 friend class MethodLookupCache; 394 virtual Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; 395 public: 396 Method* lookup_method(Symbol* name, Symbol* signature) const { 397 return uncached_lookup_method(name, signature); 398 } 399 400 // array class with specific rank 401 Klass* array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } 402 403 // array class with this klass as element type 404 Klass* array_klass(TRAPS) { return array_klass_impl(false, THREAD); } 405 406 // These will return NULL instead of allocating on the heap: 407 // NB: these can block for a mutex, like other functions with TRAPS arg. 408 Klass* array_klass_or_null(int rank); 409 Klass* array_klass_or_null(); 410 411 virtual oop protection_domain() const = 0; 412 413 oop class_loader() const; 414 415 virtual oop klass_holder() const { return class_loader(); } 416 417 protected: | 374 } 375 } 376 bool search_secondary_supers(Klass* k) const; 377 378 // Find LCA in class hierarchy 379 Klass *LCA( Klass *k ); 380 381 // Check whether reflection/jni/jvm code is allowed to instantiate this class; 382 // if not, throw either an Error or an Exception. 383 virtual void check_valid_for_instantiation(bool throwError, TRAPS); 384 385 // array copying 386 virtual void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS); 387 388 // tells if the class should be initialized 389 virtual bool should_be_initialized() const { return false; } 390 // initializes the klass 391 virtual void initialize(TRAPS); 392 // lookup operation for MethodLookupCache 393 friend class MethodLookupCache; 394 virtual Method* uncached_lookup_method(Symbol* name, Symbol* signature, bool ignore_overpass) const; 395 public: 396 Method* lookup_method(Symbol* name, Symbol* signature) const { 397 return uncached_lookup_method(name, signature, false); 398 } 399 400 // array class with specific rank 401 Klass* array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } 402 403 // array class with this klass as element type 404 Klass* array_klass(TRAPS) { return array_klass_impl(false, THREAD); } 405 406 // These will return NULL instead of allocating on the heap: 407 // NB: these can block for a mutex, like other functions with TRAPS arg. 408 Klass* array_klass_or_null(int rank); 409 Klass* array_klass_or_null(); 410 411 virtual oop protection_domain() const = 0; 412 413 oop class_loader() const; 414 415 virtual oop klass_holder() const { return class_loader(); } 416 417 protected: |