Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (159882 => 159883)
--- trunk/Source/_javascript_Core/ChangeLog 2013-11-30 04:13:42 UTC (rev 159882)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-11-30 04:17:29 UTC (rev 159883)
@@ -1,3 +1,21 @@
+2013-11-29 Filip Pizlo <[email protected]>
+
+ FTL IC should nop-fill to make up the difference between the actual IC size and the requested patchpoint size
+ https://bugs.webkit.org/show_bug.cgi?id=124960
+
+ Reviewed by Sam Weinig.
+
+ * assembler/LinkBuffer.h:
+ (JSC::LinkBuffer::size):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::fillNops):
+ * dfg/DFGDisassembler.cpp:
+ (JSC::DFG::Disassembler::dumpHeader):
+ * ftl/FTLCompile.cpp:
+ (JSC::FTL::generateICFastPath):
+ * jit/JITDisassembler.cpp:
+ (JSC::JITDisassembler::dumpHeader):
+
2013-11-29 Julien Brianceau <[email protected]>
Use moveDoubleToInts in SpecializedThunkJIT::returnDouble for non-X86 JSVALUE32_64 ports.
Modified: trunk/Source/_javascript_Core/assembler/LinkBuffer.h (159882 => 159883)
--- trunk/Source/_javascript_Core/assembler/LinkBuffer.h 2013-11-30 04:13:42 UTC (rev 159882)
+++ trunk/Source/_javascript_Core/assembler/LinkBuffer.h 2013-11-30 04:17:29 UTC (rev 159883)
@@ -244,7 +244,7 @@
return m_code;
}
- size_t debugSize()
+ size_t size()
{
return m_size;
}
Modified: trunk/Source/_javascript_Core/assembler/X86Assembler.h (159882 => 159883)
--- trunk/Source/_javascript_Core/assembler/X86Assembler.h 2013-11-30 04:13:42 UTC (rev 159882)
+++ trunk/Source/_javascript_Core/assembler/X86Assembler.h 2013-11-30 04:17:29 UTC (rev 159883)
@@ -2159,6 +2159,11 @@
{
m_formatter.oneByteOp(OP_NOP);
}
+
+ static void fillNops(void* base, size_t size)
+ {
+ memset(base, OP_NOP, size);
+ }
// This is a no-op on x86
ALWAYS_INLINE static void cacheFlush(void*, size_t) { }
Modified: trunk/Source/_javascript_Core/dfg/DFGDisassembler.cpp (159882 => 159883)
--- trunk/Source/_javascript_Core/dfg/DFGDisassembler.cpp 2013-11-30 04:13:42 UTC (rev 159882)
+++ trunk/Source/_javascript_Core/dfg/DFGDisassembler.cpp 2013-11-30 04:17:29 UTC (rev 159883)
@@ -72,7 +72,7 @@
{
out.print("Generated DFG JIT code for ", CodeBlockWithJITType(m_graph.m_codeBlock, JITCode::DFGJIT), ", instruction count = ", m_graph.m_codeBlock->instructionCount(), ":\n");
out.print(" Optimized with execution counter = ", m_graph.m_profiledBlock->jitExecuteCounter(), "\n");
- out.print(" Code at [", RawPointer(linkBuffer.debugAddress()), ", ", RawPointer(static_cast<char*>(linkBuffer.debugAddress()) + linkBuffer.debugSize()), "):\n");
+ out.print(" Code at [", RawPointer(linkBuffer.debugAddress()), ", ", RawPointer(static_cast<char*>(linkBuffer.debugAddress()) + linkBuffer.size()), "):\n");
}
void Disassembler::append(Vector<Disassembler::DumpedOp>& result, StringPrintStream& out, CodeOrigin& previousOrigin)
Modified: trunk/Source/_javascript_Core/ftl/FTLCompile.cpp (159882 => 159883)
--- trunk/Source/_javascript_Core/ftl/FTLCompile.cpp 2013-11-30 04:13:42 UTC (rev 159882)
+++ trunk/Source/_javascript_Core/ftl/FTLCompile.cpp 2013-11-30 04:17:29 UTC (rev 159883)
@@ -132,6 +132,9 @@
// reason to do so, yet.
RELEASE_ASSERT(linkBuffer.isValid());
+ MacroAssembler::AssemblerType_T::fillNops(
+ startOfIC + linkBuffer.size(), sizeOfIC - linkBuffer.size());
+
state.finalizer->sideCodeLinkBuffer->link(
ic.m_slowPathDone, CodeLocationLabel(startOfIC + sizeOfIC));
Modified: trunk/Source/_javascript_Core/jit/JITDisassembler.cpp (159882 => 159883)
--- trunk/Source/_javascript_Core/jit/JITDisassembler.cpp 2013-11-30 04:13:42 UTC (rev 159882)
+++ trunk/Source/_javascript_Core/jit/JITDisassembler.cpp 2013-11-30 04:17:29 UTC (rev 159883)
@@ -87,7 +87,7 @@
{
out.print("Generated Baseline JIT code for ", CodeBlockWithJITType(m_codeBlock, JITCode::BaselineJIT), ", instruction count = ", m_codeBlock->instructionCount(), "\n");
out.print(" Source: ", m_codeBlock->sourceCodeOnOneLine(), "\n");
- out.print(" Code at [", RawPointer(linkBuffer.debugAddress()), ", ", RawPointer(static_cast<char*>(linkBuffer.debugAddress()) + linkBuffer.debugSize()), "):\n");
+ out.print(" Code at [", RawPointer(linkBuffer.debugAddress()), ", ", RawPointer(static_cast<char*>(linkBuffer.debugAddress()) + linkBuffer.size()), "):\n");
}
MacroAssembler::Label JITDisassembler::firstSlowLabel()