diff options
Diffstat (limited to 'compiler/utils')
| -rw-r--r-- | compiler/utils/arm64/assembler_arm64.h | 7 | ||||
| -rw-r--r-- | compiler/utils/assembler.h | 1 | ||||
| -rw-r--r-- | compiler/utils/assembler_test.h | 13 | ||||
| -rw-r--r-- | compiler/utils/x86/assembler_x86.h | 11 | ||||
| -rw-r--r-- | compiler/utils/x86_64/assembler_x86_64.h | 10 | ||||
| -rw-r--r-- | compiler/utils/x86_64/assembler_x86_64_test.cc | 4 |
6 files changed, 17 insertions, 29 deletions
diff --git a/compiler/utils/arm64/assembler_arm64.h b/compiler/utils/arm64/assembler_arm64.h index c144991cfc..1b1d121725 100644 --- a/compiler/utils/arm64/assembler_arm64.h +++ b/compiler/utils/arm64/assembler_arm64.h @@ -219,12 +219,13 @@ class Arm64Assembler FINAL : public Assembler { void AddConstant(XRegister rd, int32_t value, vixl::Condition cond = vixl::al); void AddConstant(XRegister rd, XRegister rn, int32_t value, vixl::Condition cond = vixl::al); - // Vixl assembler. - vixl::MacroAssembler* const vixl_masm_; - // List of exception blocks to generate at the end of the code cache. std::vector<Arm64Exception*> exception_blocks_; + public: + // Vixl assembler. + vixl::MacroAssembler* const vixl_masm_; + // Used for testing. friend class Arm64ManagedRegister_VixlRegisters_Test; }; diff --git a/compiler/utils/assembler.h b/compiler/utils/assembler.h index 91b8d8ab9a..2b0c94c9e0 100644 --- a/compiler/utils/assembler.h +++ b/compiler/utils/assembler.h @@ -118,6 +118,7 @@ class Label { friend class arm::ArmAssembler; friend class arm::Arm32Assembler; friend class arm::Thumb2Assembler; + friend class arm64::Arm64Assembler; friend class mips::MipsAssembler; friend class x86::X86Assembler; friend class x86_64::X86_64Assembler; diff --git a/compiler/utils/assembler_test.h b/compiler/utils/assembler_test.h index 5bfa462d79..91237ae910 100644 --- a/compiler/utils/assembler_test.h +++ b/compiler/utils/assembler_test.h @@ -24,7 +24,6 @@ #include <cstdio> #include <cstdlib> #include <fstream> -#include <iostream> #include <iterator> #include <sys/stat.h> @@ -118,9 +117,8 @@ class AssemblerTest : public testing::Test { std::vector<int64_t> imms = CreateImmediateValues(imm_bytes); for (auto reg : registers) { for (int64_t imm : imms) { - Imm* new_imm = CreateImmediate(imm); - (assembler_.get()->*f)(*reg, *new_imm); - delete new_imm; + Imm new_imm = CreateImmediate(imm); + (assembler_.get()->*f)(*reg, new_imm); std::string base = fmt; size_t reg_index = base.find("{reg}"); @@ -154,9 +152,8 @@ class AssemblerTest : public testing::Test { std::string str; std::vector<int64_t> imms = CreateImmediateValues(imm_bytes); for (int64_t imm : imms) { - Imm* new_imm = CreateImmediate(imm); - (assembler_.get()->*f)(*new_imm); - delete new_imm; + Imm new_imm = CreateImmediate(imm); + (assembler_.get()->*f)(new_imm); std::string base = fmt; size_t imm_index = base.find("{imm}"); @@ -333,7 +330,7 @@ class AssemblerTest : public testing::Test { } // Create an immediate from the specific value. - virtual Imm* CreateImmediate(int64_t imm_value) = 0; + virtual Imm CreateImmediate(int64_t imm_value) = 0; private: // Driver() assembles and compares the results. If the results are not equal and we have a diff --git a/compiler/utils/x86/assembler_x86.h b/compiler/utils/x86/assembler_x86.h index c7eada34f5..b5bf31bbd6 100644 --- a/compiler/utils/x86/assembler_x86.h +++ b/compiler/utils/x86/assembler_x86.h @@ -29,7 +29,7 @@ namespace art { namespace x86 { -class Immediate { +class Immediate : public ValueObject { public: explicit Immediate(int32_t value) : value_(value) {} @@ -47,7 +47,7 @@ class Immediate { }; -class Operand { +class Operand : public ValueObject { public: uint8_t mod() const { return (encoding_at(0) >> 6) & 3; @@ -129,8 +129,6 @@ class Operand { } friend class X86Assembler; - - DISALLOW_COPY_AND_ASSIGN(Operand); }; @@ -168,7 +166,6 @@ class Address : public Operand { } } - Address(Register index, ScaleFactor scale, int32_t disp) { CHECK_NE(index, ESP); // Illegal addressing mode. SetModRM(0, ESP); @@ -205,14 +202,12 @@ class Address : public Operand { private: Address() {} - - DISALLOW_COPY_AND_ASSIGN(Address); }; class X86Assembler FINAL : public Assembler { public: - explicit X86Assembler() {} + explicit X86Assembler() : cfi_cfa_offset_(0), cfi_pc_(0) {} virtual ~X86Assembler() {} /* diff --git a/compiler/utils/x86_64/assembler_x86_64.h b/compiler/utils/x86_64/assembler_x86_64.h index 7e5859cc45..92b81ec2e7 100644 --- a/compiler/utils/x86_64/assembler_x86_64.h +++ b/compiler/utils/x86_64/assembler_x86_64.h @@ -36,7 +36,7 @@ namespace x86_64 { // // Note: As we support cross-compilation, the value type must be int64_t. Please be aware of // conversion rules in expressions regarding negation, especially size_t on 32b. -class Immediate { +class Immediate : public ValueObject { public: explicit Immediate(int64_t value) : value_(value) {} @@ -54,12 +54,10 @@ class Immediate { private: const int64_t value_; - - DISALLOW_COPY_AND_ASSIGN(Immediate); }; -class Operand { +class Operand : public ValueObject { public: uint8_t mod() const { return (encoding_at(0) >> 6) & 3; @@ -157,8 +155,6 @@ class Operand { } friend class X86_64Assembler; - - DISALLOW_COPY_AND_ASSIGN(Operand); }; @@ -247,8 +243,6 @@ class Address : public Operand { private: Address() {} - - DISALLOW_COPY_AND_ASSIGN(Address); }; diff --git a/compiler/utils/x86_64/assembler_x86_64_test.cc b/compiler/utils/x86_64/assembler_x86_64_test.cc index 37a09328fa..18c5cbcbc6 100644 --- a/compiler/utils/x86_64/assembler_x86_64_test.cc +++ b/compiler/utils/x86_64/assembler_x86_64_test.cc @@ -72,8 +72,8 @@ class AssemblerX86_64Test : public AssemblerTest<x86_64::X86_64Assembler, x86_64 return registers_; } - x86_64::Immediate* CreateImmediate(int64_t imm_value) OVERRIDE { - return new x86_64::Immediate(imm_value); + x86_64::Immediate CreateImmediate(int64_t imm_value) OVERRIDE { + return x86_64::Immediate(imm_value); } private: |