summaryrefslogtreecommitdiffstats
path: root/compiler/utils/assembler.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/utils/assembler.h')
-rw-r--r--compiler/utils/assembler.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/compiler/utils/assembler.h b/compiler/utils/assembler.h
index cd4fc12e33..c23fd440dc 100644
--- a/compiler/utils/assembler.h
+++ b/compiler/utils/assembler.h
@@ -24,6 +24,7 @@
#include "arm/constants_arm.h"
#include "mips/constants_mips.h"
#include "x86/constants_x86.h"
+#include "x86_64/constants_x86_64.h"
#include "instruction_set.h"
#include "managed_register.h"
#include "memory_region.h"
@@ -47,6 +48,26 @@ namespace mips {
namespace x86 {
class X86Assembler;
}
+namespace x86_64 {
+ class X86_64Assembler;
+}
+
+class ExternalLabel {
+ public:
+ ExternalLabel(const char* name, uword address)
+ : name_(name), address_(address) {
+ DCHECK(name != nullptr);
+ }
+
+ const char* name() const { return name_; }
+ uword address() const {
+ return address_;
+ }
+
+ private:
+ const char* name_;
+ const uword address_;
+};
class Label {
public:
@@ -95,6 +116,7 @@ class Label {
friend class arm::ArmAssembler;
friend class mips::MipsAssembler;
friend class x86::X86Assembler;
+ friend class x86_64::X86_64Assembler;
DISALLOW_COPY_AND_ASSIGN(Label);
};
@@ -335,7 +357,7 @@ class Assembler {
// Emit code that will create an activation on the stack
virtual void BuildFrame(size_t frame_size, ManagedRegister method_reg,
const std::vector<ManagedRegister>& callee_save_regs,
- const std::vector<ManagedRegister>& entry_spills) = 0;
+ const ManagedRegisterEntrySpills& entry_spills) = 0;
// Emit code that will remove an activation from the stack
virtual void RemoveFrame(size_t frame_size,