1160 _primitive_arraycopy_cnt++;
1161 #endif
1162
1163 if (length == 0) return;
1164 // Not guaranteed to be word atomic, but that doesn't matter
1165 // for anything but an oop array, which is covered by oop_arraycopy.
1166 Copy::conjoint_jbytes(src, dst, length);
1167 JRT_END
1168
1169 JRT_LEAF(void, Runtime1::oop_arraycopy(HeapWord* src, HeapWord* dst, int num))
1170 #ifndef PRODUCT
1171 _oop_arraycopy_cnt++;
1172 #endif
1173
1174 if (num == 0) return;
1175 BarrierSet* bs = Universe::heap()->barrier_set();
1176 assert(bs->has_write_ref_array_opt(), "Barrier set must have ref array opt");
1177 assert(bs->has_write_ref_array_pre_opt(), "For pre-barrier as well.");
1178 if (UseCompressedOops) {
1179 bs->write_ref_array_pre((narrowOop*)dst, num);
1180 } else {
1181 bs->write_ref_array_pre((oop*)dst, num);
1182 }
1183 Copy::conjoint_oops_atomic((oop*) src, (oop*) dst, num);
1184 bs->write_ref_array(dst, num);
1185 JRT_END
1186
1187
1188 #ifndef PRODUCT
1189 void Runtime1::print_statistics() {
1190 tty->print_cr("C1 Runtime statistics:");
1191 tty->print_cr(" _resolve_invoke_virtual_cnt: %d", SharedRuntime::_resolve_virtual_ctr);
1192 tty->print_cr(" _resolve_invoke_opt_virtual_cnt: %d", SharedRuntime::_resolve_opt_virtual_ctr);
1193 tty->print_cr(" _resolve_invoke_static_cnt: %d", SharedRuntime::_resolve_static_ctr);
1194 tty->print_cr(" _handle_wrong_method_cnt: %d", SharedRuntime::_wrong_method_ctr);
1195 tty->print_cr(" _ic_miss_cnt: %d", SharedRuntime::_ic_miss_ctr);
1196 tty->print_cr(" _generic_arraycopy_cnt: %d", _generic_arraycopy_cnt);
1197 tty->print_cr(" _primitive_arraycopy_cnt: %d", _primitive_arraycopy_cnt);
1198 tty->print_cr(" _oop_arraycopy_cnt: %d", _oop_arraycopy_cnt);
1199 tty->print_cr(" _arraycopy_slowcase_cnt: %d", _arraycopy_slowcase_cnt);
1200
1201 tty->print_cr(" _new_type_array_slowcase_cnt: %d", _new_type_array_slowcase_cnt);
1202 tty->print_cr(" _new_object_array_slowcase_cnt: %d", _new_object_array_slowcase_cnt);
1203 tty->print_cr(" _new_instance_slowcase_cnt: %d", _new_instance_slowcase_cnt);
|
1160 _primitive_arraycopy_cnt++;
1161 #endif
1162
1163 if (length == 0) return;
1164 // Not guaranteed to be word atomic, but that doesn't matter
1165 // for anything but an oop array, which is covered by oop_arraycopy.
1166 Copy::conjoint_jbytes(src, dst, length);
1167 JRT_END
1168
1169 JRT_LEAF(void, Runtime1::oop_arraycopy(HeapWord* src, HeapWord* dst, int num))
1170 #ifndef PRODUCT
1171 _oop_arraycopy_cnt++;
1172 #endif
1173
1174 if (num == 0) return;
1175 BarrierSet* bs = Universe::heap()->barrier_set();
1176 assert(bs->has_write_ref_array_opt(), "Barrier set must have ref array opt");
1177 assert(bs->has_write_ref_array_pre_opt(), "For pre-barrier as well.");
1178 if (UseCompressedOops) {
1179 bs->write_ref_array_pre((narrowOop*)dst, num);
1180 Copy::conjoint_oops_atomic((narrowOop*) src, (narrowOop*) dst, num);
1181 } else {
1182 bs->write_ref_array_pre((oop*)dst, num);
1183 Copy::conjoint_oops_atomic((oop*) src, (oop*) dst, num);
1184 }
1185 bs->write_ref_array(dst, num);
1186 JRT_END
1187
1188
1189 #ifndef PRODUCT
1190 void Runtime1::print_statistics() {
1191 tty->print_cr("C1 Runtime statistics:");
1192 tty->print_cr(" _resolve_invoke_virtual_cnt: %d", SharedRuntime::_resolve_virtual_ctr);
1193 tty->print_cr(" _resolve_invoke_opt_virtual_cnt: %d", SharedRuntime::_resolve_opt_virtual_ctr);
1194 tty->print_cr(" _resolve_invoke_static_cnt: %d", SharedRuntime::_resolve_static_ctr);
1195 tty->print_cr(" _handle_wrong_method_cnt: %d", SharedRuntime::_wrong_method_ctr);
1196 tty->print_cr(" _ic_miss_cnt: %d", SharedRuntime::_ic_miss_ctr);
1197 tty->print_cr(" _generic_arraycopy_cnt: %d", _generic_arraycopy_cnt);
1198 tty->print_cr(" _primitive_arraycopy_cnt: %d", _primitive_arraycopy_cnt);
1199 tty->print_cr(" _oop_arraycopy_cnt: %d", _oop_arraycopy_cnt);
1200 tty->print_cr(" _arraycopy_slowcase_cnt: %d", _arraycopy_slowcase_cnt);
1201
1202 tty->print_cr(" _new_type_array_slowcase_cnt: %d", _new_type_array_slowcase_cnt);
1203 tty->print_cr(" _new_object_array_slowcase_cnt: %d", _new_object_array_slowcase_cnt);
1204 tty->print_cr(" _new_instance_slowcase_cnt: %d", _new_instance_slowcase_cnt);
|