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