Index: src/x64/macro-assembler-x64.h |
diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h |
index 35369118751d8ff4faca4577305cd0f101e9a296..1757c35f919a54043fa73eb617f524c4370fd052 100644 |
--- a/src/x64/macro-assembler-x64.h |
+++ b/src/x64/macro-assembler-x64.h |
@@ -74,7 +74,7 @@ class MacroAssembler: public Assembler { |
void LoadRoot(Register destination, Heap::RootListIndex index); |
void CompareRoot(Register with, Heap::RootListIndex index); |
- void CompareRoot(Operand with, Heap::RootListIndex index); |
+ void CompareRoot(const Operand& with, Heap::RootListIndex index); |
void PushRoot(Heap::RootListIndex index); |
void StoreRoot(Register source, Heap::RootListIndex index); |
@@ -596,6 +596,12 @@ class MacroAssembler: public Assembler { |
void Call(ExternalReference ext); |
void Call(Handle<Code> code_object, RelocInfo::Mode rmode); |
+ // Emit call to the code we are currently generating. |
+ void CallSelf() { |
+ Handle<Code> self(reinterpret_cast<Code**>(CodeObject().location())); |
+ Call(self, RelocInfo::CODE_TARGET); |
+ } |
+ |
// Non-x64 instructions. |
// Push/pop all general purpose registers. |
// Does not push rsp/rbp nor any of the assembler's special purpose registers |