equal
deleted
inserted
replaced
1773 // even though the copy_array API also performs dynamic checks to ensure |
1773 // even though the copy_array API also performs dynamic checks to ensure |
1774 // that src and dest are truly arrays (and are conformable). |
1774 // that src and dest are truly arrays (and are conformable). |
1775 // The copy_array mechanism is awkward and could be removed, but |
1775 // The copy_array mechanism is awkward and could be removed, but |
1776 // the compilers don't call this function except as a last resort, |
1776 // the compilers don't call this function except as a last resort, |
1777 // so it probably doesn't matter. |
1777 // so it probably doesn't matter. |
1778 Klass::cast(src->klass())->copy_array((arrayOopDesc*)src, src_pos, |
1778 src->klass()->copy_array((arrayOopDesc*)src, src_pos, |
1779 (arrayOopDesc*)dest, dest_pos, |
1779 (arrayOopDesc*)dest, dest_pos, |
1780 length, thread); |
1780 length, thread); |
1781 } |
1781 } |
1782 JRT_END |
1782 JRT_END |
1783 |
1783 |
1786 |
1786 |
1787 // Get target class name from the checkcast instruction |
1787 // Get target class name from the checkcast instruction |
1788 vframeStream vfst(thread, true); |
1788 vframeStream vfst(thread, true); |
1789 assert(!vfst.at_end(), "Java frame must exist"); |
1789 assert(!vfst.at_end(), "Java frame must exist"); |
1790 Bytecode_checkcast cc(vfst.method(), vfst.method()->bcp_from(vfst.bci())); |
1790 Bytecode_checkcast cc(vfst.method(), vfst.method()->bcp_from(vfst.bci())); |
1791 Klass* targetKlass = Klass::cast(vfst.method()->constants()->klass_at( |
1791 Klass* targetKlass = vfst.method()->constants()->klass_at( |
1792 cc.index(), thread)); |
1792 cc.index(), thread); |
1793 return generate_class_cast_message(objName, targetKlass->external_name()); |
1793 return generate_class_cast_message(objName, targetKlass->external_name()); |
1794 } |
1794 } |
1795 |
1795 |
1796 char* SharedRuntime::generate_class_cast_message( |
1796 char* SharedRuntime::generate_class_cast_message( |
1797 const char* objName, const char* targetKlassName, const char* desc) { |
1797 const char* objName, const char* targetKlassName, const char* desc) { |