612 class Assembler : public AbstractAssembler {
613
614 #ifndef PRODUCT
615 static const unsigned long asm_bp;
616
617 void emit_long(jint x) {
618 if ((unsigned long)pc() == asm_bp)
619 asm volatile ("nop");
620 AbstractAssembler::emit_int32(x);
621 }
622 #else
623 void emit_long(jint x) {
624 AbstractAssembler::emit_int32(x);
625 }
626 #endif
627
628 public:
629
630 enum { instruction_size = 4 };
631
632 Address adjust(Register base, int offset, bool preIncrement) {
633 if (preIncrement)
634 return Address(Pre(base, offset));
635 else
636 return Address(Post(base, offset));
637 }
638
639 Address pre(Register base, int offset) {
640 return adjust(base, offset, true);
641 }
642
643 Address post(Register base, int offset) {
644 return adjust(base, offset, false);
645 }
646
647 Address post(Register base, Register idx) {
648 return Address(Post(base, idx));
649 }
650
651 Instruction_aarch64* current;
|
612 class Assembler : public AbstractAssembler {
613
614 #ifndef PRODUCT
615 static const unsigned long asm_bp;
616
617 void emit_long(jint x) {
618 if ((unsigned long)pc() == asm_bp)
619 asm volatile ("nop");
620 AbstractAssembler::emit_int32(x);
621 }
622 #else
623 void emit_long(jint x) {
624 AbstractAssembler::emit_int32(x);
625 }
626 #endif
627
628 public:
629
630 enum { instruction_size = 4 };
631
632 //---< calculate length of instruction >---
633 // We just use the values set above.
634 // instruction must start at passed address
635 static unsigned int instr_len(unsigned char *instr) { return instruction_size; }
636
637 //---< longest instructions >---
638 static unsigned int instr_maxlen() { return instruction_size; }
639
640 Address adjust(Register base, int offset, bool preIncrement) {
641 if (preIncrement)
642 return Address(Pre(base, offset));
643 else
644 return Address(Post(base, offset));
645 }
646
647 Address pre(Register base, int offset) {
648 return adjust(base, offset, true);
649 }
650
651 Address post(Register base, int offset) {
652 return adjust(base, offset, false);
653 }
654
655 Address post(Register base, Register idx) {
656 return Address(Post(base, idx));
657 }
658
659 Instruction_aarch64* current;
|