497 Klass* array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } 498 499 // array class with this klass as element type 500 Klass* array_klass(TRAPS) { return array_klass_impl(false, THREAD); } 501 502 // These will return NULL instead of allocating on the heap: 503 // NB: these can block for a mutex, like other functions with TRAPS arg. 504 Klass* array_klass_or_null(int rank); 505 Klass* array_klass_or_null(); 506 507 virtual oop protection_domain() const = 0; 508 509 oop class_loader() const; 510 511 virtual oop klass_holder() const { return class_loader(); } 512 513 protected: 514 virtual Klass* array_klass_impl(bool or_null, int rank, TRAPS); 515 virtual Klass* array_klass_impl(bool or_null, TRAPS); 516 517 void set_vtable_length(int len) { _vtable_len= len; } 518 519 vtableEntry* start_of_vtable() const; 520 public: 521 Method* method_at_vtable(int index); 522 523 static ByteSize vtable_start_offset(); 524 static ByteSize vtable_length_offset() { 525 return byte_offset_of(Klass, _vtable_len); 526 } 527 528 // CDS support - remove and restore oops from metadata. Oops are not shared. 529 virtual void remove_unshareable_info(); 530 virtual void remove_java_mirror(); 531 virtual void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS); 532 533 protected: 534 // computes the subtype relationship 535 virtual bool compute_is_subtype_of(Klass* k); 536 public: | 497 Klass* array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } 498 499 // array class with this klass as element type 500 Klass* array_klass(TRAPS) { return array_klass_impl(false, THREAD); } 501 502 // These will return NULL instead of allocating on the heap: 503 // NB: these can block for a mutex, like other functions with TRAPS arg. 504 Klass* array_klass_or_null(int rank); 505 Klass* array_klass_or_null(); 506 507 virtual oop protection_domain() const = 0; 508 509 oop class_loader() const; 510 511 virtual oop klass_holder() const { return class_loader(); } 512 513 protected: 514 virtual Klass* array_klass_impl(bool or_null, int rank, TRAPS); 515 virtual Klass* array_klass_impl(bool or_null, TRAPS); 516 517 // Error handling when length > max_length 518 static void check_array_allocation_length(int length, int max_length, TRAPS); 519 520 void set_vtable_length(int len) { _vtable_len= len; } 521 522 vtableEntry* start_of_vtable() const; 523 public: 524 Method* method_at_vtable(int index); 525 526 static ByteSize vtable_start_offset(); 527 static ByteSize vtable_length_offset() { 528 return byte_offset_of(Klass, _vtable_len); 529 } 530 531 // CDS support - remove and restore oops from metadata. Oops are not shared. 532 virtual void remove_unshareable_info(); 533 virtual void remove_java_mirror(); 534 virtual void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS); 535 536 protected: 537 // computes the subtype relationship 538 virtual bool compute_is_subtype_of(Klass* k); 539 public: |