AArch64: Add ARM64 Assembler
This patch adds the ARM64 Assembler and ManagedRegister backend.
The implementation of the Arm64Assembler class is based on VIXL (a
programmatic A64 Assembler - see external/vixl ).
Change-Id: I842fd574637a953c19631eedf26f6c70d9ed7f9e
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
diff --git a/compiler/utils/assembler.h b/compiler/utils/assembler.h
index 53f3375..f02c20f 100644
--- a/compiler/utils/assembler.h
+++ b/compiler/utils/assembler.h
@@ -316,13 +316,13 @@
static Assembler* Create(InstructionSet instruction_set);
// Emit slow paths queued during assembly
- void EmitSlowPaths() { buffer_.EmitSlowPaths(this); }
+ virtual void EmitSlowPaths() { buffer_.EmitSlowPaths(this); }
// Size of generated code
- size_t CodeSize() const { return buffer_.Size(); }
+ virtual size_t CodeSize() const { return buffer_.Size(); }
// Copy instructions out of assembly buffer into the given region of memory
- void FinalizeInstructions(const MemoryRegion& region) {
+ virtual void FinalizeInstructions(const MemoryRegion& region) {
buffer_.FinalizeInstructions(region);
}