comparison src/share/vm/prims/jvmtiRedefineClasses.cpp @ 12101:ff2520b97b00

8023547: com/sun/jdi/RedefineMulti.sh fails with IllegalArgumentException after JDK-8021948 . Summary: Need to check if the constant pool mapping returns 0. Reviewed-by: coleenp, sspitsyn
author jiangli
date Thu, 22 Aug 2013 19:27:42 -0400
parents e22ee8e7ae62
children ff8a09595db3 b2e698d2276c
comparison
equal deleted inserted replaced
12098:669d9a235486 12101:ff2520b97b00
1552 THREAD)) { 1552 THREAD)) {
1553 // propagate failure back to caller 1553 // propagate failure back to caller
1554 return false; 1554 return false;
1555 } 1555 }
1556 1556
1557 // rewrite sourc file name index: 1557 // rewrite source file name index:
1558 u2 source_file_name_idx = scratch_class->source_file_name_index(); 1558 u2 source_file_name_idx = scratch_class->source_file_name_index();
1559 if (source_file_name_idx != 0) { 1559 if (source_file_name_idx != 0) {
1560 u2 new_source_file_name_idx = find_new_index(source_file_name_idx); 1560 u2 new_source_file_name_idx = find_new_index(source_file_name_idx);
1561 scratch_class->set_source_file_name_index(new_source_file_name_idx); 1561 if (new_source_file_name_idx != 0) {
1562 scratch_class->set_source_file_name_index(new_source_file_name_idx);
1563 }
1562 } 1564 }
1563 1565
1564 // rewrite class generic signature index: 1566 // rewrite class generic signature index:
1565 u2 generic_signature_index = scratch_class->generic_signature_index(); 1567 u2 generic_signature_index = scratch_class->generic_signature_index();
1566 if (generic_signature_index != 0) { 1568 if (generic_signature_index != 0) {
1567 u2 new_generic_signature_index = find_new_index(generic_signature_index); 1569 u2 new_generic_signature_index = find_new_index(generic_signature_index);
1568 scratch_class->set_generic_signature_index(new_generic_signature_index); 1570 if (new_generic_signature_index != 0) {
1571 scratch_class->set_generic_signature_index(new_generic_signature_index);
1572 }
1569 } 1573 }
1570 1574
1571 return true; 1575 return true;
1572 } // end rewrite_cp_refs() 1576 } // end rewrite_cp_refs()
1573 1577
1735 const int len = method->method_parameters_length(); 1739 const int len = method->method_parameters_length();
1736 MethodParametersElement* elem = method->method_parameters_start(); 1740 MethodParametersElement* elem = method->method_parameters_start();
1737 1741
1738 for (int i = 0; i < len; i++) { 1742 for (int i = 0; i < len; i++) {
1739 const u2 cp_index = elem[i].name_cp_index; 1743 const u2 cp_index = elem[i].name_cp_index;
1740 elem[i].name_cp_index = find_new_index(cp_index); 1744 const u2 new_cp_index = find_new_index(cp_index);
1745 if (new_cp_index != 0) {
1746 elem[i].name_cp_index = new_cp_index;
1747 }
1741 } 1748 }
1742 } 1749 }
1743 } // end rewrite_cp_refs_in_method() 1750 } // end rewrite_cp_refs_in_method()
1744 1751
1745 1752