Title: [94922] trunk/Source/_javascript_Core
Revision
94922
Author
[email protected]
Date
2011-09-11 00:08:25 -0700 (Sun, 11 Sep 2011)

Log Message

ARM and MIPS assemblers still refer to executable pools.
https://bugs.webkit.org/show_bug.cgi?id=67903

Patch by Filip Pizlo <[email protected]> on 2011-09-11
Reviewed by Csaba Osztrogonác.

* assembler/ARMAssembler.cpp:
(JSC::ARMAssembler::executableCopy):
* assembler/ARMAssembler.h:
* assembler/AssemblerBufferWithConstantPool.h:
* assembler/MIPSAssembler.h:
(JSC::MIPSAssembler::executableCopy):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (94921 => 94922)


--- trunk/Source/_javascript_Core/ChangeLog	2011-09-11 07:06:45 UTC (rev 94921)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-09-11 07:08:25 UTC (rev 94922)
@@ -1,3 +1,17 @@
+2011-09-11  Filip Pizlo  <[email protected]>
+
+        ARM and MIPS assemblers still refer to executable pools.
+        https://bugs.webkit.org/show_bug.cgi?id=67903
+
+        Reviewed by Csaba Osztrogonác.
+
+        * assembler/ARMAssembler.cpp:
+        (JSC::ARMAssembler::executableCopy):
+        * assembler/ARMAssembler.h:
+        * assembler/AssemblerBufferWithConstantPool.h:
+        * assembler/MIPSAssembler.h:
+        (JSC::MIPSAssembler::executableCopy):
+
 2011-09-08  Filip Pizlo  <[email protected]>
 
         The executable allocator makes it difficult to free individual

Modified: trunk/Source/_javascript_Core/assembler/ARMAssembler.cpp (94921 => 94922)


--- trunk/Source/_javascript_Core/assembler/ARMAssembler.cpp	2011-09-11 07:06:45 UTC (rev 94921)
+++ trunk/Source/_javascript_Core/assembler/ARMAssembler.cpp	2011-09-11 07:08:25 UTC (rev 94922)
@@ -343,14 +343,15 @@
     fdtr_u(isLoad, srcDst, ARMRegisters::S0, 0);
 }
 
-void* ARMAssembler::executableCopy(JSGlobalData& globalData, ExecutablePool* allocator)
+PassRefPtr<ExecutableMemoryHandle> ARMAssembler::executableCopy(JSGlobalData& globalData)
 {
     // 64-bit alignment is required for next constant pool and JIT code as well
     m_buffer.flushWithoutBarrier(true);
     if (!m_buffer.isAligned(8))
         bkpt(0);
 
-    char* data = "" allocator));
+    RefPtr<ExecutableMemoryHandle> result = m_buffer.executableCopy(globalData);
+    char* data = ""
 
     for (Jumps::Iterator iter = m_jumps.begin(); iter != m_jumps.end(); ++iter) {
         // The last bit is set if the constant must be placed on constant pool.
@@ -370,7 +371,7 @@
         }
     }
 
-    return data;
+    return result;
 }
 
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/assembler/ARMAssembler.h (94921 => 94922)


--- trunk/Source/_javascript_Core/assembler/ARMAssembler.h	2011-09-11 07:06:45 UTC (rev 94921)
+++ trunk/Source/_javascript_Core/assembler/ARMAssembler.h	2011-09-11 07:08:25 UTC (rev 94922)
@@ -679,7 +679,7 @@
             return loadBranchTarget(ARMRegisters::pc, cc, useConstantPool);
         }
 
-        void* executableCopy(JSGlobalData&, ExecutablePool* allocator);
+        PassRefPtr<ExecutableMemoryHandle> executableCopy(JSGlobalData&);
 
 #ifndef NDEBUG
         unsigned debugOffset() { return m_buffer.debugOffset(); }

Modified: trunk/Source/_javascript_Core/assembler/AssemblerBufferWithConstantPool.h (94921 => 94922)


--- trunk/Source/_javascript_Core/assembler/AssemblerBufferWithConstantPool.h	2011-09-11 07:06:45 UTC (rev 94921)
+++ trunk/Source/_javascript_Core/assembler/AssemblerBufferWithConstantPool.h	2011-09-11 07:08:25 UTC (rev 94922)
@@ -195,10 +195,10 @@
         putIntegralUnchecked(value.low);
     }
 
-    void* executableCopy(JSGlobalData& globalData, ExecutablePool* allocator)
+    PassRefPtr<ExecutableMemoryHandle> executableCopy(JSGlobalData& globalData)
     {
         flushConstantPool(false);
-        return AssemblerBuffer::executableCopy(globalData, allocator);
+        return AssemblerBuffer::executableCopy(globalData);
     }
 
     void putShortWithConstantInt(uint16_t insn, uint32_t constant, bool isReusable = false)

Modified: trunk/Source/_javascript_Core/assembler/MIPSAssembler.h (94921 => 94922)


--- trunk/Source/_javascript_Core/assembler/MIPSAssembler.h	2011-09-11 07:06:45 UTC (rev 94921)
+++ trunk/Source/_javascript_Core/assembler/MIPSAssembler.h	2011-09-11 07:08:25 UTC (rev 94922)
@@ -645,14 +645,14 @@
         return m_buffer.codeSize();
     }
 
-    void* executableCopy(JSGlobalData& globalData, ExecutablePool* allocator)
+    PassRefPtr<ExecutableMemoryHandle> executableCopy(JSGlobalData& globalData)
     {
-        void *result = m_buffer.executableCopy(globalData, allocator);
+        RefPtr<ExecutableMemoryHandle> result = m_buffer.executableCopy(globalData);
         if (!result)
             return 0;
 
-        relocateJumps(m_buffer.data(), result);
-        return result;
+        relocateJumps(m_buffer.data(), result->start());
+        return result.release();
     }
 
 #ifndef NDEBUG
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to