From 4e6b3a206fa4ad8bb0b664f7674c9a70376d6e26 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 16 Jul 2012 14:51:15 +0200 Subject: Imported WebKit commit 953baa67aa07087b6ecd4199351ec554c724e27d (http://svn.webkit.org/repository/webkit/trunk@122676) --- Source/JavaScriptCore/assembler/MIPSAssembler.h | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'Source/JavaScriptCore/assembler/MIPSAssembler.h') diff --git a/Source/JavaScriptCore/assembler/MIPSAssembler.h b/Source/JavaScriptCore/assembler/MIPSAssembler.h index 7212a182c..65307d950 100644 --- a/Source/JavaScriptCore/assembler/MIPSAssembler.h +++ b/Source/JavaScriptCore/assembler/MIPSAssembler.h @@ -616,6 +616,11 @@ public: // General helpers + AssemblerLabel labelIgnoringWatchpoints() + { + return m_buffer.label(); + } + AssemblerLabel label() { return m_buffer.label(); @@ -809,6 +814,28 @@ public: #endif } + static void replaceWithLoad(void* instructionStart) + { + MIPSWord* insn = reinterpret_cast(instructionStart); + ASSERT((*insn & 0xffe00000) == 0x3c000000); // lui + insn++; + ASSERT((*insn & 0xfc0007ff) == 0x00000021); // addu + insn++; + *insn = 0x8c000000 | ((*insn) & 0x3ffffff); // lw + cacheFlush(insn, 4); + } + + static void replaceWithAddressComputation(void* instructionStart) + { + MIPSWord* insn = reinterpret_cast(instructionStart); + ASSERT((*insn & 0xffe00000) == 0x3c000000); // lui + insn++; + ASSERT((*insn & 0xfc0007ff) == 0x00000021); // addu + insn++; + *insn = 0x24000000 | ((*insn) & 0x3ffffff); // addiu + cacheFlush(insn, 4); + } + private: /* Update each jump in the buffer of newBase. */ void relocateJumps(void* oldBase, void* newBase) -- cgit v1.2.1