3458 byte_offset = (uint64_t)dest.target() & 0xfff;
3459 _adrp(reg1, dest.target());
3460 }
3461 }
3462
3463 bool MacroAssembler::use_acq_rel_for_volatile_fields() {
3464 #ifdef PRODUCT
3465 return false;
3466 #else
3467 return UseAcqRelForVolatileFields;
3468 #endif
3469 }
3470
3471 void MacroAssembler::build_frame(int framesize) {
3472 if (framesize == 0) {
3473 // Is this even possible?
3474 stp(rfp, lr, Address(pre(sp, -2 * wordSize)));
3475 } else if (framesize < ((1 << 9) + 2 * wordSize)) {
3476 sub(sp, sp, framesize);
3477 stp(rfp, lr, Address(sp, framesize - 2 * wordSize));
3478 } else {
3479 stp(rfp, lr, Address(pre(sp, -2 * wordSize)));
3480 if (framesize < ((1 << 12) + 2 * wordSize))
3481 sub(sp, sp, framesize - 2 * wordSize);
3482 else {
3483 mov(rscratch1, framesize - 2 * wordSize);
3484 sub(sp, sp, rscratch1);
3485 }
3486 }
3487 }
3488
3489 void MacroAssembler::remove_frame(int framesize) {
3490 if (framesize == 0) {
3491 ldp(rfp, lr, Address(post(sp, 2 * wordSize)));
3492 } else if (framesize < ((1 << 9) + 2 * wordSize)) {
3493 ldp(rfp, lr, Address(sp, framesize - 2 * wordSize));
3494 add(sp, sp, framesize);
3495 } else {
3496 if (framesize < ((1 << 12) + 2 * wordSize))
3497 add(sp, sp, framesize - 2 * wordSize);
3498 else {
3499 mov(rscratch1, framesize - 2 * wordSize);
|
3458 byte_offset = (uint64_t)dest.target() & 0xfff;
3459 _adrp(reg1, dest.target());
3460 }
3461 }
3462
3463 bool MacroAssembler::use_acq_rel_for_volatile_fields() {
3464 #ifdef PRODUCT
3465 return false;
3466 #else
3467 return UseAcqRelForVolatileFields;
3468 #endif
3469 }
3470
3471 void MacroAssembler::build_frame(int framesize) {
3472 if (framesize == 0) {
3473 // Is this even possible?
3474 stp(rfp, lr, Address(pre(sp, -2 * wordSize)));
3475 } else if (framesize < ((1 << 9) + 2 * wordSize)) {
3476 sub(sp, sp, framesize);
3477 stp(rfp, lr, Address(sp, framesize - 2 * wordSize));
3478 if (FramePointer) add(rfp, sp, framesize - 2 * wordSize);
3479 } else {
3480 stp(rfp, lr, Address(pre(sp, -2 * wordSize)));
3481 if (FramePointer) mov(rfp, sp);
3482 if (framesize < ((1 << 12) + 2 * wordSize))
3483 sub(sp, sp, framesize - 2 * wordSize);
3484 else {
3485 mov(rscratch1, framesize - 2 * wordSize);
3486 sub(sp, sp, rscratch1);
3487 }
3488 }
3489 }
3490
3491 void MacroAssembler::remove_frame(int framesize) {
3492 if (framesize == 0) {
3493 ldp(rfp, lr, Address(post(sp, 2 * wordSize)));
3494 } else if (framesize < ((1 << 9) + 2 * wordSize)) {
3495 ldp(rfp, lr, Address(sp, framesize - 2 * wordSize));
3496 add(sp, sp, framesize);
3497 } else {
3498 if (framesize < ((1 << 12) + 2 * wordSize))
3499 add(sp, sp, framesize - 2 * wordSize);
3500 else {
3501 mov(rscratch1, framesize - 2 * wordSize);
|