1387 __ set_info("slow_subtype_check", dont_gc_arguments); |
1387 __ set_info("slow_subtype_check", dont_gc_arguments); |
1388 __ st_ptr(T0, SP, (-1) * wordSize); |
1388 __ st_ptr(T0, SP, (-1) * wordSize); |
1389 __ st_ptr(T1, SP, (-2) * wordSize); |
1389 __ st_ptr(T1, SP, (-2) * wordSize); |
1390 __ addiu(SP, SP, (-2) * wordSize); |
1390 __ addiu(SP, SP, (-2) * wordSize); |
1391 |
1391 |
1392 //+ Klass::secondary_supers_offset_in_bytes())); |
1392 Label miss; |
1393 __ ld_ptr(AT, A0, in_bytes( Klass::secondary_supers_offset())); |
1393 __ check_klass_subtype_slow_path(A0, A1, T0, T1, NULL, &miss); |
1394 __ lw(T1, AT, arrayOopDesc::length_offset_in_bytes()); |
1394 |
1395 __ addiu(AT, AT, arrayOopDesc::base_offset_in_bytes(T_OBJECT)); |
|
1396 |
|
1397 Label miss, hit, loop; |
|
1398 // T1:count, AT:array, A1:sub maybe supper |
|
1399 __ bind(loop); |
|
1400 __ beq(T1, R0, miss); |
|
1401 #ifndef _LP64 |
|
1402 __ delayed()->lw(T0, AT, 0); |
|
1403 #else |
|
1404 __ delayed()->ld(T0, AT, 0); |
|
1405 #endif |
|
1406 __ beq(T0, A1, hit); |
|
1407 __ delayed(); |
|
1408 __ addiu(T1, T1, -1); |
|
1409 __ b(loop); |
|
1410 __ delayed(); |
|
1411 __ addiu(AT, AT, 4); |
|
1412 |
|
1413 __ bind(hit); |
|
1414 //+ Klass::secondary_super_cache_offset_in_bytes()), eax); |
|
1415 __ st_ptr(A1, A0, |
|
1416 in_bytes( Klass::secondary_super_cache_offset())); |
|
1417 __ addiu(V0, R0, 1); |
1395 __ addiu(V0, R0, 1); |
1418 __ addiu(SP, SP, 2 * wordSize); |
1396 __ addiu(SP, SP, 2 * wordSize); |
1419 __ ld_ptr(T0, SP, (-1) * wordSize); |
1397 __ ld_ptr(T0, SP, (-1) * wordSize); |
1420 __ ld_ptr(T1, SP, (-2) * wordSize); |
1398 __ ld_ptr(T1, SP, (-2) * wordSize); |
1421 __ jr(RA); |
1399 __ jr(RA); |