Title: [165021] trunk/Source/_javascript_Core
Revision
165021
Author
msab...@apple.com
Date
2014-03-03 16:49:19 -0800 (Mon, 03 Mar 2014)

Log Message

Crash in JIT code while watching a video @ storyboard.tumblr.com
https://bugs.webkit.org/show_bug.cgi?id=129635

Reviewed by Filip Pizlo.

Clear m_set before we set bits in the TempRegisterSet(const RegisterSet& other)
construtor.

* jit/TempRegisterSet.cpp:
(JSC::TempRegisterSet::TempRegisterSet): Clear map before setting it.
* jit/TempRegisterSet.h:
(JSC::TempRegisterSet::TempRegisterSet): Use new clearAll() helper.
(JSC::TempRegisterSet::clearAll): New private helper.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (165020 => 165021)


--- trunk/Source/_javascript_Core/ChangeLog	2014-03-04 00:45:15 UTC (rev 165020)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-03-04 00:49:19 UTC (rev 165021)
@@ -1,3 +1,19 @@
+2014-03-03  Michael Saboff  <msab...@apple.com>
+
+        Crash in JIT code while watching a video @ storyboard.tumblr.com
+        https://bugs.webkit.org/show_bug.cgi?id=129635
+
+        Reviewed by Filip Pizlo.
+
+        Clear m_set before we set bits in the TempRegisterSet(const RegisterSet& other)
+        construtor.
+
+        * jit/TempRegisterSet.cpp:
+        (JSC::TempRegisterSet::TempRegisterSet): Clear map before setting it.
+        * jit/TempRegisterSet.h:
+        (JSC::TempRegisterSet::TempRegisterSet): Use new clearAll() helper.
+        (JSC::TempRegisterSet::clearAll): New private helper.
+
 2014-03-03  Benjamin Poulain  <benja...@webkit.org>
 
         [x86] Improve code generation of byte test

Modified: trunk/Source/_javascript_Core/jit/TempRegisterSet.cpp (165020 => 165021)


--- trunk/Source/_javascript_Core/jit/TempRegisterSet.cpp	2014-03-04 00:45:15 UTC (rev 165020)
+++ trunk/Source/_javascript_Core/jit/TempRegisterSet.cpp	2014-03-04 00:49:19 UTC (rev 165021)
@@ -35,6 +35,8 @@
 
 TempRegisterSet::TempRegisterSet(const RegisterSet& other)
 {
+    clearAll();
+
     for (unsigned i = GPRInfo::numberOfRegisters; i--;) {
         GPRReg reg = GPRInfo::toRegister(i);
         if (other.get(reg))

Modified: trunk/Source/_javascript_Core/jit/TempRegisterSet.h (165020 => 165021)


--- trunk/Source/_javascript_Core/jit/TempRegisterSet.h	2014-03-04 00:45:15 UTC (rev 165020)
+++ trunk/Source/_javascript_Core/jit/TempRegisterSet.h	2014-03-04 00:49:19 UTC (rev 165021)
@@ -39,8 +39,7 @@
 public:
     TempRegisterSet()
     {
-        for (unsigned i = numberOfBytesInTempRegisterSet; i--;)
-            m_set[i] = 0;
+        clearAll();
     }
     
     TempRegisterSet(const RegisterSet&);
@@ -162,6 +161,12 @@
     }
     
 private:
+    void clearAll()
+    {
+        for (unsigned i = numberOfBytesInTempRegisterSet; i--;)
+            m_set[i] = 0;
+    }
+
     void setBit(unsigned i)
     {
         ASSERT(i < totalNumberOfRegisters);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to