Title: [159883] trunk/Source/_javascript_Core
Revision
159883
Author
[email protected]
Date
2013-11-29 20:17:29 -0800 (Fri, 29 Nov 2013)

Log Message

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):

Modified Paths

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()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to