Index: src/IceAssemblerX86BaseImpl.h |
diff --git a/src/IceAssemblerX86BaseImpl.h b/src/IceAssemblerX86BaseImpl.h |
index 0035eee2c663589d14c572843640eb8332ca95d1..212b234c68434333a5f357748f72376b921e42f0 100644 |
--- a/src/IceAssemblerX86BaseImpl.h |
+++ b/src/IceAssemblerX86BaseImpl.h |
@@ -3177,6 +3177,17 @@ void AssemblerX86Base<TraitsType>::jmp(const ConstantRelocatable *label) { |
emitInt32(-4); |
} |
+template <typename TraitsType> |
+void AssemblerX86Base<TraitsType>::jmp(const Immediate &abs_address) { |
+ AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
+ emitUint8(0xE9); |
+ AssemblerFixup *Fixup = |
+ this->createFixup(Traits::FK_PcRel, AssemblerFixup::NullSymbol); |
+ Fixup->set_addend(abs_address.value()); |
+ emitFixup(Fixup); |
+ emitInt32(abs_address.value() - 4); |
+} |
+ |
template <typename TraitsType> void AssemblerX86Base<TraitsType>::mfence() { |
AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
emitUint8(0x0F); |