Follow the design guidelines for the AArch64 `CodeBufferCheckScope`.

The implementation of the scopes relies only on the `AssemblerBase` interface.
The AArch32 scopes will be updated in a separate commit.

Change-Id: Ibe0eab35f60da39fe0bcbd60a16bdc65b12e0dd5
diff --git a/src/assembler-base-vixl.h b/src/assembler-base-vixl.h
index 52a35c7..5b838d8 100644
--- a/src/assembler-base-vixl.h
+++ b/src/assembler-base-vixl.h
@@ -34,9 +34,13 @@
 
 class AssemblerBase {
  public:
-  AssemblerBase() {}
-  explicit AssemblerBase(size_t capacity) : buffer_(capacity) {}
-  AssemblerBase(byte* buffer, size_t capacity) : buffer_(buffer, capacity) {}
+  AssemblerBase() : allow_assembler_(false) {}
+  explicit AssemblerBase(size_t capacity)
+      : buffer_(capacity), allow_assembler_(false) {}
+  AssemblerBase(byte* buffer, size_t capacity)
+      : buffer_(buffer, capacity), allow_assembler_(false) {}
+
+  virtual ~AssemblerBase() {}
 
   // Finalize a code buffer of generated instructions. This function must be
   // called before executing or copying code from the buffer.
@@ -53,13 +57,19 @@
 
   size_t GetSizeOfCodeGenerated() const { return GetCursorOffset(); }
 
+  // Accessors.
   CodeBuffer* GetBuffer() { return &buffer_; }
   const CodeBuffer& GetBuffer() const { return buffer_; }
+  bool AllowAssembler() const { return allow_assembler_; }
+  void SetAllowAssembler(bool allow) { allow_assembler_ = allow; }
 
  protected:
   // Buffer where the code is emitted.
   CodeBuffer buffer_;
 
+ private:
+  bool allow_assembler_;
+
  public:
   // Deprecated public interface.