diff options
Diffstat (limited to 'src/3rdparty/masm/assembler/X86Assembler.h')
-rw-r--r-- | src/3rdparty/masm/assembler/X86Assembler.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/3rdparty/masm/assembler/X86Assembler.h b/src/3rdparty/masm/assembler/X86Assembler.h index 1875ebaff0..24462ef38f 100644 --- a/src/3rdparty/masm/assembler/X86Assembler.h +++ b/src/3rdparty/masm/assembler/X86Assembler.h @@ -29,6 +29,7 @@ #if ENABLE(ASSEMBLER) && (CPU(X86) || CPU(X86_64)) #include "AssemblerBuffer.h" +#include "AbstractMacroAssembler.h" #include "JITCompilationEffort.h" #include <stdint.h> #include <wtf/Assertions.h> @@ -252,6 +253,45 @@ public: { } + template <typename LabelType> + class Jump { + template<class TemplateAssemblerType> + friend class AbstractMacroAssembler; + friend class Call; + template <typename, template <typename> class> friend class LinkBufferBase; + public: + Jump() + { + } + + Jump(AssemblerLabel jmp) + : m_label(jmp) + { + } + + LabelType label() const + { + LabelType result; + result.m_label = m_label; + return result; + } + + void link(AbstractMacroAssembler<X86Assembler>* masm) const + { + masm->m_assembler.linkJump(m_label, masm->m_assembler.label()); + } + + void linkTo(LabelType label, AbstractMacroAssembler<X86Assembler>* masm) const + { + masm->m_assembler.linkJump(m_label, label.label()); + } + + bool isSet() const { return m_label.isSet(); } + + private: + AssemblerLabel m_label; + }; + // Stack operations: void push_r(RegisterID reg) |