1210 void verified_entry(int framesize, int stack_bang_size, bool fp_mode_24b); |
1209 void verified_entry(int framesize, int stack_bang_size, bool fp_mode_24b); |
1211 |
1210 |
1212 // clear memory of size 'cnt' qwords, starting at 'base'. |
1211 // clear memory of size 'cnt' qwords, starting at 'base'. |
1213 void clear_mem(Register base, Register cnt, Register rtmp); |
1212 void clear_mem(Register base, Register cnt, Register rtmp); |
1214 |
1213 |
|
1214 #ifdef COMPILER2 |
|
1215 void string_indexof_char(Register str1, Register cnt1, Register ch, Register result, |
|
1216 XMMRegister vec1, XMMRegister vec2, XMMRegister vec3, Register tmp); |
|
1217 |
1215 // IndexOf strings. |
1218 // IndexOf strings. |
1216 // Small strings are loaded through stack if they cross page boundary. |
1219 // Small strings are loaded through stack if they cross page boundary. |
1217 void string_indexof(Register str1, Register str2, |
1220 void string_indexof(Register str1, Register str2, |
1218 Register cnt1, Register cnt2, |
1221 Register cnt1, Register cnt2, |
1219 int int_cnt2, Register result, |
1222 int int_cnt2, Register result, |
1220 XMMRegister vec, Register tmp); |
1223 XMMRegister vec, Register tmp, |
|
1224 int ae); |
1221 |
1225 |
1222 // IndexOf for constant substrings with size >= 8 elements |
1226 // IndexOf for constant substrings with size >= 8 elements |
1223 // which don't need to be loaded through stack. |
1227 // which don't need to be loaded through stack. |
1224 void string_indexofC8(Register str1, Register str2, |
1228 void string_indexofC8(Register str1, Register str2, |
1225 Register cnt1, Register cnt2, |
1229 Register cnt1, Register cnt2, |
1226 int int_cnt2, Register result, |
1230 int int_cnt2, Register result, |
1227 XMMRegister vec, Register tmp); |
1231 XMMRegister vec, Register tmp, |
|
1232 int ae); |
1228 |
1233 |
1229 // Smallest code: we don't need to load through stack, |
1234 // Smallest code: we don't need to load through stack, |
1230 // check string tail. |
1235 // check string tail. |
1231 |
1236 |
|
1237 // helper function for string_compare |
|
1238 void load_next_elements(Register elem1, Register elem2, Register str1, Register str2, |
|
1239 Address::ScaleFactor scale, Address::ScaleFactor scale1, |
|
1240 Address::ScaleFactor scale2, Register index, int ae); |
1232 // Compare strings. |
1241 // Compare strings. |
1233 void string_compare(Register str1, Register str2, |
1242 void string_compare(Register str1, Register str2, |
1234 Register cnt1, Register cnt2, Register result, |
1243 Register cnt1, Register cnt2, Register result, |
1235 XMMRegister vec1); |
1244 XMMRegister vec1, int ae); |
1236 |
1245 |
1237 // Compare char[] arrays. |
1246 // Search for Non-ASCII character (Negative byte value) in a byte array, |
1238 void char_arrays_equals(bool is_array_equ, Register ary1, Register ary2, |
1247 // return true if it has any and false otherwise. |
1239 Register limit, Register result, Register chr, |
1248 void has_negatives(Register ary1, Register len, |
1240 XMMRegister vec1, XMMRegister vec2); |
1249 Register result, Register tmp1, |
|
1250 XMMRegister vec1, XMMRegister vec2); |
|
1251 |
|
1252 // Compare char[] or byte[] arrays. |
|
1253 void arrays_equals(bool is_array_equ, Register ary1, Register ary2, |
|
1254 Register limit, Register result, Register chr, |
|
1255 XMMRegister vec1, XMMRegister vec2, bool is_char); |
|
1256 |
|
1257 #endif |
1241 |
1258 |
1242 // Fill primitive arrays |
1259 // Fill primitive arrays |
1243 void generate_fill(BasicType t, bool aligned, |
1260 void generate_fill(BasicType t, bool aligned, |
1244 Register to, Register value, Register count, |
1261 Register to, Register value, Register count, |
1245 Register rtmp, XMMRegister xtmp); |
1262 Register rtmp, XMMRegister xtmp); |
1330 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); |
1347 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); |
1331 // Fold 8-bit data |
1348 // Fold 8-bit data |
1332 void fold_8bit_crc32(Register crc, Register table, Register tmp); |
1349 void fold_8bit_crc32(Register crc, Register table, Register tmp); |
1333 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); |
1350 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); |
1334 |
1351 |
|
1352 // Compress char[] array to byte[]. |
|
1353 void char_array_compress(Register src, Register dst, Register len, |
|
1354 XMMRegister tmp1, XMMRegister tmp2, XMMRegister tmp3, |
|
1355 XMMRegister tmp4, Register tmp5, Register result); |
|
1356 |
|
1357 // Inflate byte[] array to char[]. |
|
1358 void byte_array_inflate(Register src, Register dst, Register len, |
|
1359 XMMRegister tmp1, Register tmp2); |
|
1360 |
1335 #undef VIRTUAL |
1361 #undef VIRTUAL |
1336 |
1362 |
1337 }; |
1363 }; |
1338 |
1364 |
1339 /** |
1365 /** |