561 bool is_subclass_of(const Klass* k) const;
562
563 // subtype check: true if is_subclass_of, or if k is interface and receiver implements it
564 bool is_subtype_of(Klass* k) const;
565
566 public:
567 // Find LCA in class hierarchy
568 Klass *LCA( Klass *k );
569
570 // Check whether reflection/jni/jvm code is allowed to instantiate this class;
571 // if not, throw either an Error or an Exception.
572 virtual void check_valid_for_instantiation(bool throwError, TRAPS);
573
574 // array copying
575 virtual void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS);
576
577 // tells if the class should be initialized
578 virtual bool should_be_initialized() const { return false; }
579 // initializes the klass
580 virtual void initialize(TRAPS);
581 virtual Klass* find_field(Symbol* name, Symbol* signature, fieldDescriptor* fd) const;
582 virtual Method* uncached_lookup_method(const Symbol* name, const Symbol* signature,
583 OverpassLookupMode overpass_mode,
584 PrivateLookupMode = PrivateLookupMode::find) const;
585 public:
586 Method* lookup_method(const Symbol* name, const Symbol* signature) const {
587 return uncached_lookup_method(name, signature, OverpassLookupMode::find);
588 }
589
590 // array class with specific rank
591 virtual ArrayKlass* array_klass(int rank, TRAPS) = 0;
592
593 // array class with this klass as element type
594 virtual ArrayKlass* array_klass(TRAPS) = 0;
595
596 // These will return null instead of allocating on the heap:
597 virtual ArrayKlass* array_klass_or_null(int rank) = 0;
598 virtual ArrayKlass* array_klass_or_null() = 0;
599
600 virtual oop protection_domain() const = 0;
|
561 bool is_subclass_of(const Klass* k) const;
562
563 // subtype check: true if is_subclass_of, or if k is interface and receiver implements it
564 bool is_subtype_of(Klass* k) const;
565
566 public:
567 // Find LCA in class hierarchy
568 Klass *LCA( Klass *k );
569
570 // Check whether reflection/jni/jvm code is allowed to instantiate this class;
571 // if not, throw either an Error or an Exception.
572 virtual void check_valid_for_instantiation(bool throwError, TRAPS);
573
574 // array copying
575 virtual void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS);
576
577 // tells if the class should be initialized
578 virtual bool should_be_initialized() const { return false; }
579 // initializes the klass
580 virtual void initialize(TRAPS);
581 virtual void initialize_preemptable(TRAPS);
582 virtual Klass* find_field(Symbol* name, Symbol* signature, fieldDescriptor* fd) const;
583 virtual Method* uncached_lookup_method(const Symbol* name, const Symbol* signature,
584 OverpassLookupMode overpass_mode,
585 PrivateLookupMode = PrivateLookupMode::find) const;
586 public:
587 Method* lookup_method(const Symbol* name, const Symbol* signature) const {
588 return uncached_lookup_method(name, signature, OverpassLookupMode::find);
589 }
590
591 // array class with specific rank
592 virtual ArrayKlass* array_klass(int rank, TRAPS) = 0;
593
594 // array class with this klass as element type
595 virtual ArrayKlass* array_klass(TRAPS) = 0;
596
597 // These will return null instead of allocating on the heap:
598 virtual ArrayKlass* array_klass_or_null(int rank) = 0;
599 virtual ArrayKlass* array_klass_or_null() = 0;
600
601 virtual oop protection_domain() const = 0;
|