Title: [101658] trunk/Source/_javascript_Core
Revision
101658
Author
[email protected]
Date
2011-12-01 04:42:08 -0800 (Thu, 01 Dec 2011)

Log Message

MacroAssemblerMIPS does not implement readCallTarget
https://bugs.webkit.org/show_bug.cgi?id=73432

Patch by Chao-ying Fu <[email protected]> on 2011-12-01
Reviewed by Zoltan Herczeg.

* assembler/MIPSAssembler.h:
(JSC::MIPSAssembler::readCallTarget):
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::readCallTarget):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (101657 => 101658)


--- trunk/Source/_javascript_Core/ChangeLog	2011-12-01 12:17:20 UTC (rev 101657)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-12-01 12:42:08 UTC (rev 101658)
@@ -1,3 +1,15 @@
+2011-12-01  Chao-ying Fu  <[email protected]>
+
+        MacroAssemblerMIPS does not implement readCallTarget
+        https://bugs.webkit.org/show_bug.cgi?id=73432
+
+        Reviewed by Zoltan Herczeg.
+
+        * assembler/MIPSAssembler.h:
+        (JSC::MIPSAssembler::readCallTarget):
+        * assembler/MacroAssemblerMIPS.h:
+        (JSC::MacroAssemblerMIPS::readCallTarget):
+
 2011-12-01  Noel Gordon  <[email protected]>
 
         [chromium] Remove wtf/qt/ThreadingQt.cpp from the gyp projects

Modified: trunk/Source/_javascript_Core/assembler/MIPSAssembler.h (101657 => 101658)


--- trunk/Source/_javascript_Core/assembler/MIPSAssembler.h	2011-12-01 12:17:20 UTC (rev 101657)
+++ trunk/Source/_javascript_Core/assembler/MIPSAssembler.h	2011-12-01 12:42:08 UTC (rev 101658)
@@ -772,6 +772,18 @@
         return reinterpret_cast<void*>(readInt32(from));
     }
 
+    static void* readCallTarget(void* from)
+    {
+        MIPSWord* insn = reinterpret_cast<MIPSWord*>(from);
+        insn -= 4;
+        ASSERT((*insn & 0xffe00000) == 0x3c000000); // lui
+        int32_t result = (*insn & 0x0000ffff) << 16;
+        insn++;
+        ASSERT((*insn & 0xfc000000) == 0x34000000); // ori
+        result |= *insn & 0x0000ffff;
+        return reinterpret_cast<void*>(result);
+    }
+
 private:
     /* Update each jump in the buffer of newBase.  */
     void relocateJumps(void* oldBase, void* newBase)

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (101657 => 101658)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2011-12-01 12:17:20 UTC (rev 101657)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2011-12-01 12:42:08 UTC (rev 101658)
@@ -1815,6 +1815,11 @@
         m_assembler.nop();
     }
 
+    static FunctionPtr readCallTarget(CodeLocationCall call)
+    {
+        return FunctionPtr(reinterpret_cast<void(*)()>(MIPSAssembler::readCallTarget(call.dataLocation())));
+    }
+
 private:
     // If m_fixedWidth is true, we will generate a fixed number of instructions.
     // Otherwise, we can emit any number of instructions.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to