< prev index next >

src/hotspot/share/oops/methodData.cpp

Print this page




 412       clear_row(row);
 413     }
 414   }
 415 }
 416 
 417 #if INCLUDE_JVMCI
 418 void VirtualCallData::clean_weak_klass_links(bool always_clean) {
 419   ReceiverTypeData::clean_weak_klass_links(always_clean);
 420   for (uint row = 0; row < method_row_limit(); row++) {
 421     Method* p = method(row);
 422     if (p != NULL && (always_clean || !p->method_holder()->is_loader_alive())) {
 423       clear_method_row(row);
 424     }
 425   }
 426 }
 427 
 428 void VirtualCallData::clean_weak_method_links() {
 429   ReceiverTypeData::clean_weak_method_links();
 430   for (uint row = 0; row < method_row_limit(); row++) {
 431     Method* p = method(row);
 432     if (p != NULL && !p->on_stack()) {
 433       clear_method_row(row);
 434     }
 435   }
 436 }
 437 #endif // INCLUDE_JVMCI
 438 
 439 void ReceiverTypeData::print_receiver_data_on(outputStream* st) const {
 440   uint row;
 441   int entries = 0;
 442   for (row = 0; row < row_limit(); row++) {
 443     if (receiver(row) != NULL)  entries++;
 444   }
 445 #if INCLUDE_JVMCI
 446   st->print_cr("count(%u) nonprofiled_count(%u) entries(%u)", count(), nonprofiled_count(), entries);
 447 #else
 448   st->print_cr("count(%u) entries(%u)", count(), entries);
 449 #endif
 450   int total = count();
 451   for (row = 0; row < row_limit(); row++) {
 452     if (receiver(row) != NULL) {


1753 #endif
1754 }
1755 
1756 void MethodData::clean_method_data(bool always_clean) {
1757   ResourceMark rm;
1758   for (ProfileData* data = first_data();
1759        is_valid(data);
1760        data = next_data(data)) {
1761     data->clean_weak_klass_links(always_clean);
1762   }
1763   ParametersTypeData* parameters = parameters_type_data();
1764   if (parameters != NULL) {
1765     parameters->clean_weak_klass_links(always_clean);
1766   }
1767 
1768   CleanExtraDataKlassClosure cl(always_clean);
1769   clean_extra_data(&cl);
1770   verify_extra_data_clean(&cl);
1771 }
1772 


1773 void MethodData::clean_weak_method_links() {
1774   ResourceMark rm;
1775   for (ProfileData* data = first_data();
1776        is_valid(data);
1777        data = next_data(data)) {
1778     data->clean_weak_method_links();
1779   }
1780 
1781   CleanExtraDataMethodClosure cl;
1782   clean_extra_data(&cl);
1783   verify_extra_data_clean(&cl);
1784 }
1785 
1786 #ifdef ASSERT
1787 void MethodData::verify_clean_weak_method_links() {
1788   ResourceMark rm;
1789   for (ProfileData* data = first_data();
1790        is_valid(data);
1791        data = next_data(data)) {
1792     data->verify_clean_weak_method_links();


 412       clear_row(row);
 413     }
 414   }
 415 }
 416 
 417 #if INCLUDE_JVMCI
 418 void VirtualCallData::clean_weak_klass_links(bool always_clean) {
 419   ReceiverTypeData::clean_weak_klass_links(always_clean);
 420   for (uint row = 0; row < method_row_limit(); row++) {
 421     Method* p = method(row);
 422     if (p != NULL && (always_clean || !p->method_holder()->is_loader_alive())) {
 423       clear_method_row(row);
 424     }
 425   }
 426 }
 427 
 428 void VirtualCallData::clean_weak_method_links() {
 429   ReceiverTypeData::clean_weak_method_links();
 430   for (uint row = 0; row < method_row_limit(); row++) {
 431     Method* p = method(row);
 432     if (p != NULL && p->is_old()) {
 433       clear_method_row(row);
 434     }
 435   }
 436 }
 437 #endif // INCLUDE_JVMCI
 438 
 439 void ReceiverTypeData::print_receiver_data_on(outputStream* st) const {
 440   uint row;
 441   int entries = 0;
 442   for (row = 0; row < row_limit(); row++) {
 443     if (receiver(row) != NULL)  entries++;
 444   }
 445 #if INCLUDE_JVMCI
 446   st->print_cr("count(%u) nonprofiled_count(%u) entries(%u)", count(), nonprofiled_count(), entries);
 447 #else
 448   st->print_cr("count(%u) entries(%u)", count(), entries);
 449 #endif
 450   int total = count();
 451   for (row = 0; row < row_limit(); row++) {
 452     if (receiver(row) != NULL) {


1753 #endif
1754 }
1755 
1756 void MethodData::clean_method_data(bool always_clean) {
1757   ResourceMark rm;
1758   for (ProfileData* data = first_data();
1759        is_valid(data);
1760        data = next_data(data)) {
1761     data->clean_weak_klass_links(always_clean);
1762   }
1763   ParametersTypeData* parameters = parameters_type_data();
1764   if (parameters != NULL) {
1765     parameters->clean_weak_klass_links(always_clean);
1766   }
1767 
1768   CleanExtraDataKlassClosure cl(always_clean);
1769   clean_extra_data(&cl);
1770   verify_extra_data_clean(&cl);
1771 }
1772 
1773 // This is called during redefinition to clean all "old" redefined
1774 // methods out of MethodData for all methods.
1775 void MethodData::clean_weak_method_links() {
1776   ResourceMark rm;
1777   for (ProfileData* data = first_data();
1778        is_valid(data);
1779        data = next_data(data)) {
1780     data->clean_weak_method_links();
1781   }
1782 
1783   CleanExtraDataMethodClosure cl;
1784   clean_extra_data(&cl);
1785   verify_extra_data_clean(&cl);
1786 }
1787 
1788 #ifdef ASSERT
1789 void MethodData::verify_clean_weak_method_links() {
1790   ResourceMark rm;
1791   for (ProfileData* data = first_data();
1792        is_valid(data);
1793        data = next_data(data)) {
1794     data->verify_clean_weak_method_links();
< prev index next >