< prev index next >

src/cpu/ppc/vm/macroAssembler_ppc.hpp

Print this page
rev 12397 : 8170991: PPC64: Bad code for initialization of short arrays
Summary: Implement special ClearArray nodes to improve initialization.
Reviewed-by:


 738   }
 739   inline void trap_range_check_le(Register a, int si16);
 740   static bool is_trap_range_check_le(int x) {
 741     return is_twi(x, traptoEqual | traptoLessThanUnsigned, -1/*any reg*/);
 742   }
 743   inline void trap_range_check_g(Register a, int si16);
 744   static bool is_trap_range_check_g(int x) {
 745     return is_twi(x, traptoGreaterThanUnsigned, -1/*any reg*/);
 746   }
 747   inline void trap_range_check_ge(Register a, Register b);
 748   inline void trap_range_check_ge(Register a, int si16);
 749   static bool is_trap_range_check_ge(int x) {
 750     return (is_tw (x, traptoEqual | traptoGreaterThanUnsigned, -1/*any reg*/, -1/*any reg*/) ||
 751             is_twi(x, traptoEqual | traptoGreaterThanUnsigned, -1/*any reg*/)                  );
 752   }
 753   static bool is_trap_range_check(int x) {
 754     return is_trap_range_check_l(x) || is_trap_range_check_le(x) ||
 755            is_trap_range_check_g(x) || is_trap_range_check_ge(x);
 756   }
 757 
 758   void clear_memory_doubleword(Register base_ptr, Register cnt_dwords, Register tmp = R0);


 759 
 760 #ifdef COMPILER2
 761   // Intrinsics for CompactStrings
 762   // Compress char[] to byte[] by compressing 16 bytes at once.
 763   void string_compress_16(Register src, Register dst, Register cnt,
 764                           Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,
 765                           Label& Lfailure);
 766 
 767   // Compress char[] to byte[]. cnt must be positive int.
 768   void string_compress(Register src, Register dst, Register cnt, Register tmp, Label& Lfailure);
 769 
 770   // Inflate byte[] to char[] by inflating 16 bytes at once.
 771   void string_inflate_16(Register src, Register dst, Register cnt,
 772                          Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5);
 773 
 774   // Inflate byte[] to char[]. cnt must be positive int.
 775   void string_inflate(Register src, Register dst, Register cnt, Register tmp);
 776 
 777   void string_compare(Register str1, Register str2, Register cnt1, Register cnt2,
 778                       Register tmp1, Register result, int ae);




 738   }
 739   inline void trap_range_check_le(Register a, int si16);
 740   static bool is_trap_range_check_le(int x) {
 741     return is_twi(x, traptoEqual | traptoLessThanUnsigned, -1/*any reg*/);
 742   }
 743   inline void trap_range_check_g(Register a, int si16);
 744   static bool is_trap_range_check_g(int x) {
 745     return is_twi(x, traptoGreaterThanUnsigned, -1/*any reg*/);
 746   }
 747   inline void trap_range_check_ge(Register a, Register b);
 748   inline void trap_range_check_ge(Register a, int si16);
 749   static bool is_trap_range_check_ge(int x) {
 750     return (is_tw (x, traptoEqual | traptoGreaterThanUnsigned, -1/*any reg*/, -1/*any reg*/) ||
 751             is_twi(x, traptoEqual | traptoGreaterThanUnsigned, -1/*any reg*/)                  );
 752   }
 753   static bool is_trap_range_check(int x) {
 754     return is_trap_range_check_l(x) || is_trap_range_check_le(x) ||
 755            is_trap_range_check_g(x) || is_trap_range_check_ge(x);
 756   }
 757 
 758   void clear_memory_unrolled(Register base_ptr, int cnt_dwords, Register tmp = R0, int offset = 0);
 759   void clear_memory_constlen(Register base_ptr, int cnt_dwords, Register tmp = R0);
 760   void clear_memory_doubleword(Register base_ptr, Register cnt_dwords, Register tmp = R0, long const_cnt = -1);
 761 
 762 #ifdef COMPILER2
 763   // Intrinsics for CompactStrings
 764   // Compress char[] to byte[] by compressing 16 bytes at once.
 765   void string_compress_16(Register src, Register dst, Register cnt,
 766                           Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,
 767                           Label& Lfailure);
 768 
 769   // Compress char[] to byte[]. cnt must be positive int.
 770   void string_compress(Register src, Register dst, Register cnt, Register tmp, Label& Lfailure);
 771 
 772   // Inflate byte[] to char[] by inflating 16 bytes at once.
 773   void string_inflate_16(Register src, Register dst, Register cnt,
 774                          Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5);
 775 
 776   // Inflate byte[] to char[]. cnt must be positive int.
 777   void string_inflate(Register src, Register dst, Register cnt, Register tmp);
 778 
 779   void string_compare(Register str1, Register str2, Register cnt1, Register cnt2,
 780                       Register tmp1, Register result, int ae);


< prev index next >