< prev index next >

src/cpu/sparc/vm/macroAssembler_sparc.hpp

Print this page




1416     st(G0, SP, G3_scratch);
1417   }
1418 
1419   // Writes to stack successive pages until offset reached to check for
1420   // stack overflow + shadow pages.  Clobbers tsp and scratch registers.
1421   void bang_stack_size(Register Rsize, Register Rtsp, Register Rscratch);
1422 
1423   virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset);
1424 
1425   void verify_tlab();
1426 
1427   Condition negate_condition(Condition cond);
1428 
1429   // Helper functions for statistics gathering.
1430   // Conditionally (non-atomically) increments passed counter address, preserving condition codes.
1431   void cond_inc(Condition cond, address counter_addr, Register Rtemp1, Register Rtemp2);
1432   // Unconditional increment.
1433   void inc_counter(address counter_addr, Register Rtmp1, Register Rtmp2);
1434   void inc_counter(int*    counter_addr, Register Rtmp1, Register Rtmp2);
1435 
1436   // Compare char[] arrays aligned to 4 bytes.
1437   void char_arrays_equals(Register ary1, Register ary2,
1438                           Register limit, Register result,
1439                           Register chr1, Register chr2, Label& Ldone);





















1440   // Use BIS for zeroing
1441   void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1442 
1443   // Update CRC-32[C] with a byte value according to constants in table
1444   void update_byte_crc32(Register crc, Register val, Register table);
1445 
1446   // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1447   void reverse_bytes_32(Register src, Register dst, Register tmp);
1448   void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1449   void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1450 
1451 #undef VIRTUAL
1452 };
1453 
1454 /**
1455  * class SkipIfEqual:
1456  *
1457  * Instantiating this class will result in assembly code being output that will
1458  * jump around any code emitted between the creation of the instance and it's
1459  * automatic destruction at the end of a scope block, depending on the value of


1416     st(G0, SP, G3_scratch);
1417   }
1418 
1419   // Writes to stack successive pages until offset reached to check for
1420   // stack overflow + shadow pages.  Clobbers tsp and scratch registers.
1421   void bang_stack_size(Register Rsize, Register Rtsp, Register Rscratch);
1422 
1423   virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset);
1424 
1425   void verify_tlab();
1426 
1427   Condition negate_condition(Condition cond);
1428 
1429   // Helper functions for statistics gathering.
1430   // Conditionally (non-atomically) increments passed counter address, preserving condition codes.
1431   void cond_inc(Condition cond, address counter_addr, Register Rtemp1, Register Rtemp2);
1432   // Unconditional increment.
1433   void inc_counter(address counter_addr, Register Rtmp1, Register Rtmp2);
1434   void inc_counter(int*    counter_addr, Register Rtmp1, Register Rtmp2);
1435 
1436 #ifdef COMPILER2
1437   // Compress char[] to byte[] by compressing 16 bytes at once. Return 0 on failure.
1438   void string_compress_16(Register src, Register dst, Register cnt, Register result,
1439                           Register tmp1, Register tmp2, Register tmp3, Register tmp4,
1440                           FloatRegister ftmp1, FloatRegister ftmp2, FloatRegister ftmp3, Label& Ldone);
1441 
1442   // Compress char[] to byte[]. Return 0 on failure.
1443   void string_compress(Register src, Register dst, Register cnt, Register tmp, Register result, Label& Ldone);
1444 
1445   // Inflate byte[] to char[] by inflating 16 bytes at once.
1446   void string_inflate_16(Register src, Register dst, Register cnt, Register tmp,
1447                          FloatRegister ftmp1, FloatRegister ftmp2, FloatRegister ftmp3, FloatRegister ftmp4, Label& Ldone);
1448 
1449   // Inflate byte[] to char[].
1450   void string_inflate(Register src, Register dst, Register cnt, Register tmp, Label& Ldone);
1451 
1452   void string_compare(Register str1, Register str2,
1453                       Register cnt1, Register cnt2,
1454                       Register tmp1, Register tmp2,
1455                       Register result, int ae);
1456 
1457   void array_equals(bool is_array_equ, Register ary1, Register ary2,
1458                     Register limit, Register tmp, Register result, bool is_byte);
1459 #endif
1460 
1461   // Use BIS for zeroing
1462   void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1463 
1464   // Update CRC-32[C] with a byte value according to constants in table
1465   void update_byte_crc32(Register crc, Register val, Register table);
1466 
1467   // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1468   void reverse_bytes_32(Register src, Register dst, Register tmp);
1469   void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1470   void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1471 
1472 #undef VIRTUAL
1473 };
1474 
1475 /**
1476  * class SkipIfEqual:
1477  *
1478  * Instantiating this class will result in assembly code being output that will
1479  * jump around any code emitted between the creation of the instance and it's
1480  * automatic destruction at the end of a scope block, depending on the value of
< prev index next >