1267 using Assembler::movq; 1268 void movdl(XMMRegister dst, AddressLiteral src); 1269 void movq(XMMRegister dst, AddressLiteral src); 1270 1271 // Can push value or effective address 1272 void pushptr(AddressLiteral src); 1273 1274 void pushptr(Address src) { LP64_ONLY(pushq(src)) NOT_LP64(pushl(src)); } 1275 void popptr(Address src) { LP64_ONLY(popq(src)) NOT_LP64(popl(src)); } 1276 1277 void pushoop(jobject obj); 1278 void pushklass(Metadata* obj); 1279 1280 // sign extend as need a l to ptr sized element 1281 void movl2ptr(Register dst, Address src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(movl(dst, src)); } 1282 void movl2ptr(Register dst, Register src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(if (dst != src) movl(dst, src)); } 1283 1284 // C2 compiled method's prolog code. 1285 void verified_entry(int framesize, int stack_bang_size, bool fp_mode_24b); 1286 1287 // clear memory of size 'cnt' qwords, starting at 'base'. 1288 void clear_mem(Register base, Register cnt, Register rtmp); 1289 1290 #ifdef COMPILER2 1291 void string_indexof_char(Register str1, Register cnt1, Register ch, Register result, 1292 XMMRegister vec1, XMMRegister vec2, XMMRegister vec3, Register tmp); 1293 1294 // IndexOf strings. 1295 // Small strings are loaded through stack if they cross page boundary. 1296 void string_indexof(Register str1, Register str2, 1297 Register cnt1, Register cnt2, 1298 int int_cnt2, Register result, 1299 XMMRegister vec, Register tmp, 1300 int ae); 1301 1302 // IndexOf for constant substrings with size >= 8 elements 1303 // which don't need to be loaded through stack. 1304 void string_indexofC8(Register str1, Register str2, 1305 Register cnt1, Register cnt2, 1306 int int_cnt2, Register result, 1307 XMMRegister vec, Register tmp, 1308 int ae); | 1267 using Assembler::movq; 1268 void movdl(XMMRegister dst, AddressLiteral src); 1269 void movq(XMMRegister dst, AddressLiteral src); 1270 1271 // Can push value or effective address 1272 void pushptr(AddressLiteral src); 1273 1274 void pushptr(Address src) { LP64_ONLY(pushq(src)) NOT_LP64(pushl(src)); } 1275 void popptr(Address src) { LP64_ONLY(popq(src)) NOT_LP64(popl(src)); } 1276 1277 void pushoop(jobject obj); 1278 void pushklass(Metadata* obj); 1279 1280 // sign extend as need a l to ptr sized element 1281 void movl2ptr(Register dst, Address src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(movl(dst, src)); } 1282 void movl2ptr(Register dst, Register src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(if (dst != src) movl(dst, src)); } 1283 1284 // C2 compiled method's prolog code. 1285 void verified_entry(int framesize, int stack_bang_size, bool fp_mode_24b); 1286 1287 // clear memory of size 'cnt' qwords, starting at 'base'; 1288 // if 'is_large' is set, do not try to produce short loop 1289 void clear_mem(Register base, Register cnt, Register rtmp, bool is_large); 1290 1291 #ifdef COMPILER2 1292 void string_indexof_char(Register str1, Register cnt1, Register ch, Register result, 1293 XMMRegister vec1, XMMRegister vec2, XMMRegister vec3, Register tmp); 1294 1295 // IndexOf strings. 1296 // Small strings are loaded through stack if they cross page boundary. 1297 void string_indexof(Register str1, Register str2, 1298 Register cnt1, Register cnt2, 1299 int int_cnt2, Register result, 1300 XMMRegister vec, Register tmp, 1301 int ae); 1302 1303 // IndexOf for constant substrings with size >= 8 elements 1304 // which don't need to be loaded through stack. 1305 void string_indexofC8(Register str1, Register str2, 1306 Register cnt1, Register cnt2, 1307 int int_cnt2, Register result, 1308 XMMRegister vec, Register tmp, 1309 int ae); |