833 // Unconditional atomic increment.
834 void atomic_incl(Address counter_addr);
835 void atomic_incl(AddressLiteral counter_addr, Register scr = rscratch1);
836 #ifdef _LP64
837 void atomic_incq(Address counter_addr);
838 void atomic_incq(AddressLiteral counter_addr, Register scr = rscratch1);
839 #endif
840 void atomic_incptr(AddressLiteral counter_addr, Register scr = rscratch1) { LP64_ONLY(atomic_incq(counter_addr, scr)) NOT_LP64(atomic_incl(counter_addr, scr)) ; }
841 void atomic_incptr(Address counter_addr) { LP64_ONLY(atomic_incq(counter_addr)) NOT_LP64(atomic_incl(counter_addr)) ; }
842
843 void lea(Register dst, AddressLiteral adr);
844 void lea(Address dst, AddressLiteral adr);
845 void lea(Register dst, Address adr) { Assembler::lea(dst, adr); }
846
847 void leal32(Register dst, Address src) { leal(dst, src); }
848
849 // Import other testl() methods from the parent class or else
850 // they will be hidden by the following overriding declaration.
851 using Assembler::testl;
852 void testl(Register dst, AddressLiteral src);
853 using Assembler::testq;
854 void testq(Register dst, AddressLiteral src);
855
856 void orptr(Register dst, Address src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
857 void orptr(Register dst, Register src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
858 void orptr(Register dst, int32_t src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
859 void orptr(Address dst, int32_t imm32) { LP64_ONLY(orq(dst, imm32)) NOT_LP64(orl(dst, imm32)); }
860
861 void testptr(Register src, int32_t imm32) { LP64_ONLY(testq(src, imm32)) NOT_LP64(testl(src, imm32)); }
862 void testptr(Register src1, Address src2) { LP64_ONLY(testq(src1, src2)) NOT_LP64(testl(src1, src2)); }
863 void testptr(Register src1, Register src2);
864
865 void xorptr(Register dst, Register src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
866 void xorptr(Register dst, Address src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
867
868 // Calls
869
870 void call(Label& L, relocInfo::relocType rtype);
871 void call(Register entry);
872
873 // NOTE: this call transfers to the effective address of entry NOT
874 // the address contained by entry. This is because this is more natural
875 // for jumps/calls.
876 void call(AddressLiteral entry);
877
878 // Emit the CompiledIC call idiom
879 void ic_call(address entry, jint method_index = 0);
880
881 // Jumps
|
833 // Unconditional atomic increment.
834 void atomic_incl(Address counter_addr);
835 void atomic_incl(AddressLiteral counter_addr, Register scr = rscratch1);
836 #ifdef _LP64
837 void atomic_incq(Address counter_addr);
838 void atomic_incq(AddressLiteral counter_addr, Register scr = rscratch1);
839 #endif
840 void atomic_incptr(AddressLiteral counter_addr, Register scr = rscratch1) { LP64_ONLY(atomic_incq(counter_addr, scr)) NOT_LP64(atomic_incl(counter_addr, scr)) ; }
841 void atomic_incptr(Address counter_addr) { LP64_ONLY(atomic_incq(counter_addr)) NOT_LP64(atomic_incl(counter_addr)) ; }
842
843 void lea(Register dst, AddressLiteral adr);
844 void lea(Address dst, AddressLiteral adr);
845 void lea(Register dst, Address adr) { Assembler::lea(dst, adr); }
846
847 void leal32(Register dst, Address src) { leal(dst, src); }
848
849 // Import other testl() methods from the parent class or else
850 // they will be hidden by the following overriding declaration.
851 using Assembler::testl;
852 void testl(Register dst, AddressLiteral src);
853
854 void orptr(Register dst, Address src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
855 void orptr(Register dst, Register src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
856 void orptr(Register dst, int32_t src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
857 void orptr(Address dst, int32_t imm32) { LP64_ONLY(orq(dst, imm32)) NOT_LP64(orl(dst, imm32)); }
858
859 void testptr(Register src, int32_t imm32) { LP64_ONLY(testq(src, imm32)) NOT_LP64(testl(src, imm32)); }
860 void testptr(Register src1, Address src2) { LP64_ONLY(testq(src1, src2)) NOT_LP64(testl(src1, src2)); }
861 void testptr(Register src1, Register src2);
862
863 void xorptr(Register dst, Register src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
864 void xorptr(Register dst, Address src) { LP64_ONLY(xorq(dst, src)) NOT_LP64(xorl(dst, src)); }
865
866 // Calls
867
868 void call(Label& L, relocInfo::relocType rtype);
869 void call(Register entry);
870
871 // NOTE: this call transfers to the effective address of entry NOT
872 // the address contained by entry. This is because this is more natural
873 // for jumps/calls.
874 void call(AddressLiteral entry);
875
876 // Emit the CompiledIC call idiom
877 void ic_call(address entry, jint method_index = 0);
878
879 // Jumps
|