Title: [157433] trunk/Source/_javascript_Core
Revision
157433
Author
[email protected]
Date
2013-10-14 17:05:45 -0700 (Mon, 14 Oct 2013)

Log Message

DFG PutById IC should use the ConcurrentJITLocker since it's now dealing with IC's that get read by the compiler thread
https://bugs.webkit.org/show_bug.cgi?id=122786

Reviewed by Mark Hahnenberg.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::resetStub): Resetting a stub should acquire the lock since this is observable from the thread; but we should only acquire the lock if we're resetting outside of GC.
* jit/Repatch.cpp:
(JSC::repatchPutByID): Doing the PutById patching should hold the lock.
(JSC::buildPutByIdList): Ditto.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (157432 => 157433)


--- trunk/Source/_javascript_Core/ChangeLog	2013-10-15 00:02:52 UTC (rev 157432)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-10-15 00:05:45 UTC (rev 157433)
@@ -1,3 +1,16 @@
+2013-10-14  Filip Pizlo  <[email protected]>
+
+        DFG PutById IC should use the ConcurrentJITLocker since it's now dealing with IC's that get read by the compiler thread
+        https://bugs.webkit.org/show_bug.cgi?id=122786
+
+        Reviewed by Mark Hahnenberg.
+
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::resetStub): Resetting a stub should acquire the lock since this is observable from the thread; but we should only acquire the lock if we're resetting outside of GC.
+        * jit/Repatch.cpp:
+        (JSC::repatchPutByID): Doing the PutById patching should hold the lock.
+        (JSC::buildPutByIdList): Ditto.
+
 2013-10-14  Nadav Rotem  <[email protected]>
 
         Add FTL support for LogicalNot(string)

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (157432 => 157433)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2013-10-15 00:02:52 UTC (rev 157432)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2013-10-15 00:05:45 UTC (rev 157433)
@@ -2362,6 +2362,8 @@
     if (stubInfo.accessType == access_unset)
         return;
     
+    ConcurrentJITLocker locker(m_lock);
+    
     RepatchBuffer repatchBuffer(this);
     resetStubInternal(repatchBuffer, stubInfo);
 }

Modified: trunk/Source/_javascript_Core/jit/Repatch.cpp (157432 => 157433)


--- trunk/Source/_javascript_Core/jit/Repatch.cpp	2013-10-15 00:02:52 UTC (rev 157432)
+++ trunk/Source/_javascript_Core/jit/Repatch.cpp	2013-10-15 00:05:45 UTC (rev 157433)
@@ -999,6 +999,8 @@
 
 void repatchPutByID(ExecState* exec, JSValue baseValue, const Identifier& propertyName, const PutPropertySlot& slot, StructureStubInfo& stubInfo, PutKind putKind)
 {
+    ConcurrentJITLocker locker(exec->codeBlock()->m_lock);
+    
     bool cached = tryCachePutByID(exec, baseValue, propertyName, slot, stubInfo, putKind);
     if (!cached)
         repatchCall(exec->codeBlock(), stubInfo.callReturnLocation, appropriateGenericPutByIdFunction(slot, putKind));
@@ -1092,6 +1094,8 @@
 
 void buildPutByIdList(ExecState* exec, JSValue baseValue, const Identifier& propertyName, const PutPropertySlot& slot, StructureStubInfo& stubInfo, PutKind putKind)
 {
+    ConcurrentJITLocker locker(exec->codeBlock()->m_lock);
+    
     bool cached = tryBuildPutByIdList(exec, baseValue, propertyName, slot, stubInfo, putKind);
     if (!cached)
         repatchCall(exec->codeBlock(), stubInfo.callReturnLocation, appropriateGenericPutByIdFunction(slot, putKind));
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to