524 virtual int oop_size(oop obj) const = 0;
525
526 // Size of klass in word size.
527 virtual int size() const = 0;
528 #if INCLUDE_SERVICES
529 virtual void collect_statistics(KlassSizeStats *sz) const;
530 #endif
531
532 // Returns the Java name for a class (Resource allocated)
533 // For arrays, this returns the name of the element with a leading '['.
534 // For classes, this returns the name with the package separators
535 // turned into '.'s.
536 const char* external_name() const;
537 // Returns the name for a class (Resource allocated) as the class
538 // would appear in a signature.
539 // For arrays, this returns the name of the element with a leading '['.
540 // For classes, this returns the name with a leading 'L' and a trailing ';'
541 // and the package separators as '/'.
542 virtual const char* signature_name() const;
543
544 const char* class_loader_and_module_name() const;
545
546 // Returns "interface", "abstract class" or "class".
547 const char* external_kind() const;
548
549 // type testing operations
550 #ifdef ASSERT
551 protected:
552 virtual bool is_instance_klass_slow() const { return false; }
553 virtual bool is_array_klass_slow() const { return false; }
554 virtual bool is_objArray_klass_slow() const { return false; }
555 virtual bool is_typeArray_klass_slow() const { return false; }
556 #endif // ASSERT
557 public:
558
559 // Fast non-virtual versions
560 #ifndef ASSERT
561 #define assert_same_query(xval, xcheck) xval
562 #else
563 private:
|
524 virtual int oop_size(oop obj) const = 0;
525
526 // Size of klass in word size.
527 virtual int size() const = 0;
528 #if INCLUDE_SERVICES
529 virtual void collect_statistics(KlassSizeStats *sz) const;
530 #endif
531
532 // Returns the Java name for a class (Resource allocated)
533 // For arrays, this returns the name of the element with a leading '['.
534 // For classes, this returns the name with the package separators
535 // turned into '.'s.
536 const char* external_name() const;
537 // Returns the name for a class (Resource allocated) as the class
538 // would appear in a signature.
539 // For arrays, this returns the name of the element with a leading '['.
540 // For classes, this returns the name with a leading 'L' and a trailing ';'
541 // and the package separators as '/'.
542 virtual const char* signature_name() const;
543
544 // Returns a descriptive string as "<class loader name>/<module>/class name".
545 // This is the format used in stack traces and similar. Based on
546 // external_name().
547 const char* class_loader_and_module_name() const;
548
549 // Returns "interface", "abstract class" or "class".
550 const char* external_kind() const;
551
552 // type testing operations
553 #ifdef ASSERT
554 protected:
555 virtual bool is_instance_klass_slow() const { return false; }
556 virtual bool is_array_klass_slow() const { return false; }
557 virtual bool is_objArray_klass_slow() const { return false; }
558 virtual bool is_typeArray_klass_slow() const { return false; }
559 #endif // ASSERT
560 public:
561
562 // Fast non-virtual versions
563 #ifndef ASSERT
564 #define assert_same_query(xval, xcheck) xval
565 #else
566 private:
|