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.