756 // Helper functions for statistics gathering.
757 // Conditionally (atomically, on MPs) increments passed counter address, preserving condition codes.
758 void cond_inc32(Condition cond, AddressLiteral counter_addr);
759 // Unconditional atomic increment.
760 void atomic_incl(AddressLiteral counter_addr);
761
762 void lea(Register dst, AddressLiteral adr);
763 void lea(Address dst, AddressLiteral adr);
764 void lea(Register dst, Address adr) { Assembler::lea(dst, adr); }
765
766 void leal32(Register dst, Address src) { leal(dst, src); }
767
768 // Import other testl() methods from the parent class or else
769 // they will be hidden by the following overriding declaration.
770 using Assembler::testl;
771 void testl(Register dst, AddressLiteral src);
772
773 void orptr(Register dst, Address src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
774 void orptr(Register dst, Register src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
775 void orptr(Register dst, int32_t src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
776
777 void testptr(Register src, int32_t imm32) { LP64_ONLY(testq(src, imm32)) NOT_LP64(testl(src, imm32)); }
778 void testptr(Register src1, Register src2);
779
780 void xorptr(Register dst, Register src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
781 void xorptr(Register dst, Address src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
782
783 // Calls
784
785 void call(Label& L, relocInfo::relocType rtype);
786 void call(Register entry);
787
788 // NOTE: this call tranfers to the effective address of entry NOT
789 // the address contained by entry. This is because this is more natural
790 // for jumps/calls.
791 void call(AddressLiteral entry);
792
793 // Emit the CompiledIC call idiom
794 void ic_call(address entry);
795
|
756 // Helper functions for statistics gathering.
757 // Conditionally (atomically, on MPs) increments passed counter address, preserving condition codes.
758 void cond_inc32(Condition cond, AddressLiteral counter_addr);
759 // Unconditional atomic increment.
760 void atomic_incl(AddressLiteral counter_addr);
761
762 void lea(Register dst, AddressLiteral adr);
763 void lea(Address dst, AddressLiteral adr);
764 void lea(Register dst, Address adr) { Assembler::lea(dst, adr); }
765
766 void leal32(Register dst, Address src) { leal(dst, src); }
767
768 // Import other testl() methods from the parent class or else
769 // they will be hidden by the following overriding declaration.
770 using Assembler::testl;
771 void testl(Register dst, AddressLiteral src);
772
773 void orptr(Register dst, Address src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
774 void orptr(Register dst, Register src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
775 void orptr(Register dst, int32_t src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
776 void orptr(Address dst, int32_t imm32) { LP64_ONLY(orq(dst, imm32)) NOT_LP64(orl(dst, imm32)); }
777
778 void testptr(Register src, int32_t imm32) { LP64_ONLY(testq(src, imm32)) NOT_LP64(testl(src, imm32)); }
779 void testptr(Register src1, Register src2);
780
781 void xorptr(Register dst, Register src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
782 void xorptr(Register dst, Address src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
783
784 // Calls
785
786 void call(Label& L, relocInfo::relocType rtype);
787 void call(Register entry);
788
789 // NOTE: this call tranfers to the effective address of entry NOT
790 // the address contained by entry. This is because this is more natural
791 // for jumps/calls.
792 void call(AddressLiteral entry);
793
794 // Emit the CompiledIC call idiom
795 void ic_call(address entry);
796
|