src/cpu/mips/vm/c1_Runtime1_mips.cpp

changeset 9132
0f025dcc49cc
parent 8865
ffcdff41a92f
child 9134
dde0a270fac2
equal deleted inserted replaced
9131:de11e2b9bc23 9132:0f025dcc49cc
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);

mercurial