diff options
| author | 2016-08-23 17:48:38 +0000 | |
|---|---|---|
| committer | 2016-08-23 17:48:38 +0000 | |
| commit | ccf15bca330f9a23337b1a4b5850f7fcc6c1bf15 (patch) | |
| tree | 8e271269eb0f3e40388311478fe441bfeb47ab47 /compiler/utils | |
| parent | ccf06d8f19a37432de4a3b768747090adfbd18ec (diff) | |
Revert "x86/x86-64: Avoid temporary for read barrier field load."
Fault handler does not recognize the instruction
F6 /0 ib TEST r/m8, imm8
so we get crashes instead of NPEs.
Bug: 29966877
Bug: 12687968
This reverts commit ccf06d8f19a37432de4a3b768747090adfbd18ec.
Change-Id: Ib7db3b59f44c0d3ed5e24a20b6c6ee596a89d709
Diffstat (limited to 'compiler/utils')
| -rw-r--r-- | compiler/utils/x86/assembler_x86.cc | 17 | ||||
| -rw-r--r-- | compiler/utils/x86/assembler_x86.h | 3 | ||||
| -rw-r--r-- | compiler/utils/x86/assembler_x86_test.cc | 36 | ||||
| -rw-r--r-- | compiler/utils/x86_64/assembler_x86_64.cc | 19 | ||||
| -rw-r--r-- | compiler/utils/x86_64/assembler_x86_64.h | 3 | ||||
| -rw-r--r-- | compiler/utils/x86_64/assembler_x86_64_test.cc | 42 |
6 files changed, 0 insertions, 120 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc index f2ef41f400..f1a991574b 100644 --- a/compiler/utils/x86/assembler_x86.cc +++ b/compiler/utils/x86/assembler_x86.cc @@ -1148,23 +1148,6 @@ void X86Assembler::testl(Register reg, const Immediate& immediate) { } -void X86Assembler::testb(const Address& dst, const Immediate& imm) { - AssemblerBuffer::EnsureCapacity ensured(&buffer_); - EmitUint8(0xF6); - EmitOperand(EAX, dst); - CHECK(imm.is_int8()); - EmitUint8(imm.value() & 0xFF); -} - - -void X86Assembler::testl(const Address& dst, const Immediate& imm) { - AssemblerBuffer::EnsureCapacity ensured(&buffer_); - EmitUint8(0xF7); - EmitOperand(0, dst); - EmitImmediate(imm); -} - - void X86Assembler::andl(Register dst, Register src) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); EmitUint8(0x23); diff --git a/compiler/utils/x86/assembler_x86.h b/compiler/utils/x86/assembler_x86.h index 2ddcd760dd..63aa4a4b8f 100644 --- a/compiler/utils/x86/assembler_x86.h +++ b/compiler/utils/x86/assembler_x86.h @@ -496,9 +496,6 @@ class X86Assembler FINAL : public Assembler { void testl(Register reg, const Immediate& imm); void testl(Register reg1, const Address& address); - void testb(const Address& dst, const Immediate& imm); - void testl(const Address& dst, const Immediate& imm); - void andl(Register dst, const Immediate& imm); void andl(Register dst, Register src); void andl(Register dst, const Address& address); diff --git a/compiler/utils/x86/assembler_x86_test.cc b/compiler/utils/x86/assembler_x86_test.cc index 61d70d714a..307e034b76 100644 --- a/compiler/utils/x86/assembler_x86_test.cc +++ b/compiler/utils/x86/assembler_x86_test.cc @@ -375,42 +375,6 @@ TEST_F(AssemblerX86Test, CmovlAddress) { DriverStr(expected, "cmovl_address"); } -TEST_F(AssemblerX86Test, TestbAddressImmediate) { - GetAssembler()->testb( - x86::Address(x86::Register(x86::EDI), x86::Register(x86::EBX), x86::TIMES_4, 12), - x86::Immediate(1)); - GetAssembler()->testb( - x86::Address(x86::Register(x86::ESP), FrameOffset(7)), - x86::Immediate(-128)); - GetAssembler()->testb( - x86::Address(x86::Register(x86::EBX), MemberOffset(130)), - x86::Immediate(127)); - const char* expected = - "testb $1, 0xc(%EDI,%EBX,4)\n" - "testb $-128, 0x7(%ESP)\n" - "testb $127, 0x82(%EBX)\n"; - - DriverStr(expected, "TestbAddressImmediate"); -} - -TEST_F(AssemblerX86Test, TestlAddressImmediate) { - GetAssembler()->testl( - x86::Address(x86::Register(x86::EDI), x86::Register(x86::EBX), x86::TIMES_4, 12), - x86::Immediate(1)); - GetAssembler()->testl( - x86::Address(x86::Register(x86::ESP), FrameOffset(7)), - x86::Immediate(-100000)); - GetAssembler()->testl( - x86::Address(x86::Register(x86::EBX), MemberOffset(130)), - x86::Immediate(77777777)); - const char* expected = - "testl $1, 0xc(%EDI,%EBX,4)\n" - "testl $-100000, 0x7(%ESP)\n" - "testl $77777777, 0x82(%EBX)\n"; - - DriverStr(expected, "TestlAddressImmediate"); -} - ///////////////// // Near labels // ///////////////// diff --git a/compiler/utils/x86_64/assembler_x86_64.cc b/compiler/utils/x86_64/assembler_x86_64.cc index 1f73aa7374..ddc824425e 100644 --- a/compiler/utils/x86_64/assembler_x86_64.cc +++ b/compiler/utils/x86_64/assembler_x86_64.cc @@ -1389,25 +1389,6 @@ void X86_64Assembler::testq(CpuRegister reg, const Address& address) { } -void X86_64Assembler::testb(const Address& dst, const Immediate& imm) { - AssemblerBuffer::EnsureCapacity ensured(&buffer_); - EmitOptionalRex32(dst); - EmitUint8(0xF6); - EmitOperand(Register::RAX, dst); - CHECK(imm.is_int8()); - EmitUint8(imm.value() & 0xFF); -} - - -void X86_64Assembler::testl(const Address& dst, const Immediate& imm) { - AssemblerBuffer::EnsureCapacity ensured(&buffer_); - EmitOptionalRex32(dst); - EmitUint8(0xF7); - EmitOperand(0, dst); - EmitImmediate(imm); -} - - void X86_64Assembler::andl(CpuRegister dst, CpuRegister src) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); EmitOptionalRex32(dst, src); diff --git a/compiler/utils/x86_64/assembler_x86_64.h b/compiler/utils/x86_64/assembler_x86_64.h index 3a4bfca6b0..a4166f965d 100644 --- a/compiler/utils/x86_64/assembler_x86_64.h +++ b/compiler/utils/x86_64/assembler_x86_64.h @@ -528,9 +528,6 @@ class X86_64Assembler FINAL : public Assembler { void testq(CpuRegister reg1, CpuRegister reg2); void testq(CpuRegister reg, const Address& address); - void testb(const Address& address, const Immediate& imm); - void testl(const Address& address, const Immediate& imm); - void andl(CpuRegister dst, const Immediate& imm); void andl(CpuRegister dst, CpuRegister src); void andl(CpuRegister reg, const Address& address); diff --git a/compiler/utils/x86_64/assembler_x86_64_test.cc b/compiler/utils/x86_64/assembler_x86_64_test.cc index 48a18760f1..36c966b3cf 100644 --- a/compiler/utils/x86_64/assembler_x86_64_test.cc +++ b/compiler/utils/x86_64/assembler_x86_64_test.cc @@ -1526,48 +1526,6 @@ TEST_F(AssemblerX86_64Test, Cmpb) { DriverStr(expected, "cmpb"); } -TEST_F(AssemblerX86_64Test, TestbAddressImmediate) { - GetAssembler()->testb( - x86_64::Address(x86_64::CpuRegister(x86_64::RDI), - x86_64::CpuRegister(x86_64::RBX), - x86_64::TIMES_4, - 12), - x86_64::Immediate(1)); - GetAssembler()->testb( - x86_64::Address(x86_64::CpuRegister(x86_64::RSP), FrameOffset(7)), - x86_64::Immediate(-128)); - GetAssembler()->testb( - x86_64::Address(x86_64::CpuRegister(x86_64::RBX), MemberOffset(130)), - x86_64::Immediate(127)); - const char* expected = - "testb $1, 0xc(%RDI,%RBX,4)\n" - "testb $-128, 0x7(%RSP)\n" - "testb $127, 0x82(%RBX)\n"; - - DriverStr(expected, "TestbAddressImmediate"); -} - -TEST_F(AssemblerX86_64Test, TestlAddressImmediate) { - GetAssembler()->testl( - x86_64::Address(x86_64::CpuRegister(x86_64::RDI), - x86_64::CpuRegister(x86_64::RBX), - x86_64::TIMES_4, - 12), - x86_64::Immediate(1)); - GetAssembler()->testl( - x86_64::Address(x86_64::CpuRegister(x86_64::RSP), FrameOffset(7)), - x86_64::Immediate(-100000)); - GetAssembler()->testl( - x86_64::Address(x86_64::CpuRegister(x86_64::RBX), MemberOffset(130)), - x86_64::Immediate(77777777)); - const char* expected = - "testl $1, 0xc(%RDI,%RBX,4)\n" - "testl $-100000, 0x7(%RSP)\n" - "testl $77777777, 0x82(%RBX)\n"; - - DriverStr(expected, "TestlAddressImmediate"); -} - class JNIMacroAssemblerX86_64Test : public JNIMacroAssemblerTest<x86_64::X86_64JNIMacroAssembler> { public: using Base = JNIMacroAssemblerTest<x86_64::X86_64JNIMacroAssembler>; |