hotspot/src/share/vm/runtime/sharedRuntime.cpp
changeset 14488 ab48109f7d1b
parent 13952 e3cf184080bc
child 14626 0cf4eccf130f
equal deleted inserted replaced
14486:7d079e0eedef 14488:ab48109f7d1b
  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) {