Subzero: Do class definition cleanups for assembler files too.

Similar to https://codereview.chromium.org/656123003/, but cover some of
the assembler files which were avoided to avoid conflicts.

BUG=none
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/643903006
diff --git a/src/IceMemoryRegion.cpp b/src/IceMemoryRegion.cpp
index 9c42940..ccfd3cf 100644
--- a/src/IceMemoryRegion.cpp
+++ b/src/IceMemoryRegion.cpp
@@ -1,10 +1,11 @@
+//===- subzero/src/IceMemoryRegion.cpp - Memory region --------------------===//
 // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 //
 // Modified by the Subzero authors.
 //
-//===- subzero/src/IceMemoryRegion.cpp - Memory region --------------------===//
+//===----------------------------------------------------------------------===//
 //
 //                        The Subzero Code Generator
 //
diff --git a/src/IceMemoryRegion.h b/src/IceMemoryRegion.h
index 2a55a41..b1069a9 100644
--- a/src/IceMemoryRegion.h
+++ b/src/IceMemoryRegion.h
@@ -1,10 +1,11 @@
+//===- subzero/src/IceMemoryRegion.h - Memory region ------------*- C++ -*-===//
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 //
 // Modified by the Subzero authors.
 //
-//===- subzero/src/IceMemoryRegion.h - Memory region ------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 //                        The Subzero Code Generator
 //
@@ -30,14 +31,10 @@
 // of the region.
 class MemoryRegion {
 public:
+  MemoryRegion(const MemoryRegion &other) = default;
+  MemoryRegion &operator=(const MemoryRegion &other) = default;
   MemoryRegion() : pointer_(NULL), size_(0) {}
   MemoryRegion(void *pointer, size_t size) : pointer_(pointer), size_(size) {}
-  MemoryRegion(const MemoryRegion &other) { *this = other; }
-  MemoryRegion &operator=(const MemoryRegion &other) {
-    pointer_ = other.pointer_;
-    size_ = other.size_;
-    return *this;
-  }
 
   void *pointer() const { return pointer_; }
   size_t size() const { return size_; }
diff --git a/src/assembler.cpp b/src/assembler.cpp
index a169aff..6f2ec81 100644
--- a/src/assembler.cpp
+++ b/src/assembler.cpp
@@ -1,10 +1,11 @@
+//===- subzero/src/assembler.cpp - Assembler base class -------------------===//
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 //
 // Modified by the Subzero authors.
 //
-//===- subzero/src/assembler.cpp - Assembler base class -------------------===//
+//===----------------------------------------------------------------------===//
 //
 //                        The Subzero Code Generator
 //
@@ -27,7 +28,7 @@
   return result;
 }
 
-#if defined(DEBUG)
+#ifndef NDEBUG
 AssemblerBuffer::EnsureCapacity::EnsureCapacity(AssemblerBuffer *buffer) {
   if (buffer->cursor() >= buffer->limit())
     buffer->ExtendCapacity();
@@ -53,7 +54,7 @@
   intptr_t delta = gap_ - ComputeGap();
   assert(delta <= kMinimumGap);
 }
-#endif
+#endif // !NDEBUG
 
 AssemblerBuffer::AssemblerBuffer(Assembler &assembler) : assembler_(assembler) {
   const intptr_t OneKB = 1024;
@@ -61,10 +62,10 @@
   contents_ = NewContents(assembler_, kInitialBufferCapacity);
   cursor_ = contents_;
   limit_ = ComputeLimit(contents_, kInitialBufferCapacity);
-#if defined(DEBUG)
+#ifndef NDEBUG
   has_ensured_capacity_ = false;
   fixups_processed_ = false;
-#endif
+#endif // !NDEBUG
 
   // Verify internal state.
   assert(Capacity() == kInitialBufferCapacity);
@@ -93,9 +94,9 @@
 
   // Process fixups in the instructions.
   ProcessFixups(instructions);
-#if defined(DEBUG)
+#ifndef NDEBUG
   fixups_processed_ = true;
-#endif
+#endif // !NDEBUG
 }
 
 void AssemblerBuffer::ExtendCapacity() {
diff --git a/src/assembler.h b/src/assembler.h
index 46cf010..d769b3a 100644
--- a/src/assembler.h
+++ b/src/assembler.h
@@ -1,10 +1,11 @@
+//===- subzero/src/assembler.h - Integrated assembler -----------*- C++ -*-===//
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 //
 // Modified by the Subzero authors.
 //
-//===- subzero/src/assembler.h - Integrated assembler -----------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 //                        The Subzero Code Generator
 //
@@ -40,6 +41,9 @@
 // information that needs to be processed before finalizing the code
 // into executable memory.
 class AssemblerFixup {
+  AssemblerFixup(const AssemblerFixup &) = delete;
+  AssemblerFixup &operator=(const AssemblerFixup &) = delete;
+
 public:
   virtual void Process(const MemoryRegion &region, intptr_t position) = 0;
 
@@ -64,13 +68,14 @@
 
   void set_position(intptr_t position) { position_ = position; }
 
-  AssemblerFixup(const AssemblerFixup &) = delete;
-  AssemblerFixup &operator=(const AssemblerFixup &) = delete;
   friend class AssemblerBuffer;
 };
 
 // Assembler buffers are used to emit binary code. They grow on demand.
 class AssemblerBuffer {
+  AssemblerBuffer(const AssemblerBuffer &) = delete;
+  AssemblerBuffer &operator=(const AssemblerBuffer &) = delete;
+
 public:
   AssemblerBuffer(Assembler &);
   ~AssemblerBuffer();
@@ -118,8 +123,11 @@
 //     AssemblerBuffer::EnsureCapacity ensured(&buffer);
 //     ... emit bytes for single instruction ...
 
-#if defined(DEBUG)
+#ifndef NDEBUG
   class EnsureCapacity {
+    EnsureCapacity(const EnsureCapacity &) = delete;
+    EnsureCapacity &operator=(const EnsureCapacity &) = delete;
+
   public:
     explicit EnsureCapacity(AssemblerBuffer *buffer);
     ~EnsureCapacity();
@@ -133,8 +141,11 @@
 
   bool has_ensured_capacity_;
   bool HasEnsuredCapacity() const { return has_ensured_capacity_; }
-#else
+#else  // NDEBUG
   class EnsureCapacity {
+    EnsureCapacity(const EnsureCapacity &) = delete;
+    EnsureCapacity &operator=(const EnsureCapacity &) = delete;
+
   public:
     explicit EnsureCapacity(AssemblerBuffer *buffer) {
       if (buffer->cursor() >= buffer->limit())
@@ -146,7 +157,7 @@
   // asserting that the user of the assembler buffer has ensured the
   // capacity needed for emitting, we add a dummy method in non-debug mode.
   bool HasEnsuredCapacity() const { return true; }
-#endif
+#endif // NDEBUG
 
   // Returns the position in the instruction stream.
   intptr_t GetPosition() const { return cursor_ - contents_; }
@@ -165,9 +176,9 @@
   uintptr_t limit_;
   Assembler &assembler_;
   std::vector<AssemblerFixup *> fixups_;
-#if defined(DEBUG)
+#ifndef NDEBUG
   bool fixups_processed_;
-#endif
+#endif // !NDEBUG
 
   uintptr_t cursor() const { return cursor_; }
   uintptr_t limit() const { return limit_; }
@@ -191,6 +202,9 @@
 };
 
 class Assembler {
+  Assembler(const Assembler &) = delete;
+  Assembler &operator=(const Assembler &) = delete;
+
 public:
   Assembler() {}
   ~Assembler() {}
@@ -212,9 +226,6 @@
 
 private:
   llvm::BumpPtrAllocator Allocator;
-
-  Assembler(const Assembler &) = delete;
-  Assembler &operator=(const Assembler &) = delete;
 };
 
 } // end of namespace Ice
diff --git a/src/assembler_ia32.cpp b/src/assembler_ia32.cpp
index 9042cf1..2b80820 100644
--- a/src/assembler_ia32.cpp
+++ b/src/assembler_ia32.cpp
@@ -1,10 +1,11 @@
+//===- subzero/src/assembler_ia32.cpp - Assembler for x86-32  -------------===//
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 //
 // Modified by the Subzero authors.
 //
-//===- subzero/src/assembler_ia32.cpp - Assembler for x86-32  -------------===//
+//===----------------------------------------------------------------------===//
 //
 //                        The Subzero Code Generator
 //
@@ -26,6 +27,9 @@
 namespace x86 {
 
 class DirectCallRelocation : public AssemblerFixup {
+  DirectCallRelocation(const DirectCallRelocation &) = delete;
+  DirectCallRelocation &operator=(const DirectCallRelocation &) = delete;
+
 public:
   static DirectCallRelocation *create(Assembler *Asm, FixupKind Kind,
                                       const ConstantRelocatable *Sym) {
@@ -2320,6 +2324,11 @@
   EmitOperand(reg, addr);
 }
 
+void AssemblerX86::EmitSegmentOverride(uint8_t prefix) {
+  AssemblerBuffer::EnsureCapacity ensured(&buffer_);
+  EmitUint8(prefix);
+}
+
 void AssemblerX86::Align(intptr_t alignment, intptr_t offset) {
   assert(llvm::isPowerOf2_32(alignment));
   intptr_t pos = offset + buffer_.GetPosition();
diff --git a/src/assembler_ia32.h b/src/assembler_ia32.h
index 6ad8fae..bb3f0ab 100644
--- a/src/assembler_ia32.h
+++ b/src/assembler_ia32.h
@@ -1,10 +1,11 @@
+//===- subzero/src/assembler_ia32.h - Assembler for x86-32 ------*- C++ -*-===//
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 //
 // Modified by the Subzero authors.
 //
-//===- subzero/src/assembler_ia32.h - Assembler for x86-32 ----------------===//
+//===----------------------------------------------------------------------===//
 //
 //                        The Subzero Code Generator
 //
@@ -45,6 +46,9 @@
 enum ScaleFactor { TIMES_1 = 0, TIMES_2 = 1, TIMES_4 = 2, TIMES_8 = 3 };
 
 class DisplacementRelocation : public AssemblerFixup {
+  DisplacementRelocation(const DisplacementRelocation &) = delete;
+  DisplacementRelocation &operator=(const DisplacementRelocation &) = delete;
+
 public:
   static DisplacementRelocation *create(Assembler *Asm, FixupKind Kind,
                                         const ConstantRelocatable *Sym) {
@@ -61,17 +65,15 @@
 private:
   DisplacementRelocation(FixupKind Kind, const ConstantRelocatable *Sym)
       : AssemblerFixup(Kind, Sym) {}
-  DisplacementRelocation(const DisplacementRelocation &) = delete;
-  DisplacementRelocation &operator=(const DisplacementRelocation &) = delete;
 };
 
 class Immediate {
+  Immediate(const Immediate &) = delete;
+  Immediate &operator=(const Immediate &) = delete;
+
 public:
   explicit Immediate(int32_t value) : value_(value), fixup_(NULL) {}
 
-  explicit Immediate(const Immediate &other)
-      : value_(other.value_), fixup_(other.fixup_) {}
-
   explicit Immediate(AssemblerFixup *fixup)
       : value_(fixup->value()->getOffset()), fixup_(fixup) {
     // Use the Offset in the "value" for now. If the symbol is part of
@@ -98,6 +100,17 @@
 
 class Operand {
 public:
+  Operand(const Operand &other) : length_(other.length_), fixup_(other.fixup_) {
+    memmove(&encoding_[0], &other.encoding_[0], other.length_);
+  }
+
+  Operand &operator=(const Operand &other) {
+    length_ = other.length_;
+    fixup_ = other.fixup_;
+    memmove(&encoding_[0], &other.encoding_[0], other.length_);
+    return *this;
+  }
+
   uint8_t mod() const { return (encoding_at(0) >> 6) & 3; }
 
   GPRRegister rm() const {
@@ -128,17 +141,6 @@
 
   AssemblerFixup *fixup() const { return fixup_; }
 
-  Operand(const Operand &other) : length_(other.length_), fixup_(other.fixup_) {
-    memmove(&encoding_[0], &other.encoding_[0], other.length_);
-  }
-
-  Operand &operator=(const Operand &other) {
-    length_ = other.length_;
-    fixup_ = other.fixup_;
-    memmove(&encoding_[0], &other.encoding_[0], other.length_);
-    return *this;
-  }
-
 protected:
   Operand() : length_(0), fixup_(NULL) {} // Needed by subclass Address.
 
@@ -194,6 +196,13 @@
 
 class Address : public Operand {
 public:
+  Address(const Address &other) : Operand(other) {}
+
+  Address &operator=(const Address &other) {
+    Operand::operator=(other);
+    return *this;
+  }
+
   Address(GPRRegister base, int32_t disp) {
     if (disp == 0 && base != RegX8632::Encoded_Reg_ebp) {
       SetModRM(0, base);
@@ -236,13 +245,6 @@
     }
   }
 
-  Address(const Address &other) : Operand(other) {}
-
-  Address &operator=(const Address &other) {
-    Operand::operator=(other);
-    return *this;
-  }
-
   static Address Absolute(const uintptr_t addr) {
     Address result;
     result.SetModRM(0, RegX8632::Encoded_Reg_ebp);
@@ -270,13 +272,16 @@
 };
 
 class Label {
+  Label(const Label &) = delete;
+  Label &operator=(const Label &) = delete;
+
 public:
   Label() : position_(0), num_unresolved_(0) {
-#ifdef DEBUG
+#ifndef NDEBUG
     for (int i = 0; i < kMaxUnresolvedBranches; i++) {
       unresolved_near_positions_[i] = -1;
     }
-#endif // DEBUG
+#endif // !NDEBUG
   }
 
   ~Label() {
@@ -346,11 +351,12 @@
   intptr_t unresolved_near_positions_[kMaxUnresolvedBranches];
 
   friend class AssemblerX86;
-  Label(const Label &) = delete;
-  Label &operator=(const Label &) = delete;
 };
 
 class AssemblerX86 : public Assembler {
+  AssemblerX86(const AssemblerX86 &) = delete;
+  AssemblerX86 &operator=(const AssemblerX86 &) = delete;
+
 public:
   explicit AssemblerX86(bool use_far_branches = false) : buffer_(*this) {
     // This mode is only needed and implemented for MIPS and ARM.
@@ -800,7 +806,7 @@
     cmpxchg(Ty, address, reg);
   }
 
-  void EmitSegmentOverride(uint8_t prefix) { EmitUint8(prefix); }
+  void EmitSegmentOverride(uint8_t prefix);
 
   intptr_t PreferredLoopAlignment() { return 16; }
   void Align(intptr_t alignment, intptr_t offset);
@@ -843,9 +849,6 @@
                         GPRRegister shifter);
 
   AssemblerBuffer buffer_;
-
-  AssemblerX86(const AssemblerX86 &) = delete;
-  AssemblerX86 &operator=(const AssemblerX86 &) = delete;
 };
 
 inline void AssemblerX86::EmitUint8(uint8_t value) {