HashMapImpl needs to m_buffer.clear() in its constructor
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Sep 2016 16:50:10 +0000 (16:50 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Sep 2016 16:50:10 +0000 (16:50 +0000)
https://bugs.webkit.org/show_bug.cgi?id=161796

Reviewed by Keith Miller.

This is the second time that I'm fixing a bug because AuxiliaryBarrier does not initialize
itself. That seemed like a good idea because maybe sometimes the user knows better how to
initialize it. But, it's not worth it if it's a constant source of bugs.

So, I'm fixing it for good by making AuxiliaryBarrier::AuxiliaryBarrier() initialize its
m_value.

* runtime/AuxiliaryBarrier.h:
(JSC::AuxiliaryBarrier::AuxiliaryBarrier):
* runtime/DirectArguments.cpp:
(JSC::DirectArguments::DirectArguments):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@205746 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/AuxiliaryBarrier.h
Source/JavaScriptCore/runtime/DirectArguments.cpp

index 22fa6b9..f12ea2d 100644 (file)
@@ -1,3 +1,22 @@
+2016-09-09  Filip Pizlo  <fpizlo@apple.com>
+
+        HashMapImpl needs to m_buffer.clear() in its constructor
+        https://bugs.webkit.org/show_bug.cgi?id=161796
+
+        Reviewed by Keith Miller.
+        
+        This is the second time that I'm fixing a bug because AuxiliaryBarrier does not initialize
+        itself. That seemed like a good idea because maybe sometimes the user knows better how to
+        initialize it. But, it's not worth it if it's a constant source of bugs.
+        
+        So, I'm fixing it for good by making AuxiliaryBarrier::AuxiliaryBarrier() initialize its
+        m_value.
+
+        * runtime/AuxiliaryBarrier.h:
+        (JSC::AuxiliaryBarrier::AuxiliaryBarrier):
+        * runtime/DirectArguments.cpp:
+        (JSC::DirectArguments::DirectArguments):
+
 2016-09-09  Youenn Fablet  <youenn@apple.com>
 
         ASSERTION FAILED: promise.inherits(JSPromise::info())
index 498a145..b249df7 100644 (file)
@@ -37,8 +37,7 @@ class VM;
 template<typename T>
 class AuxiliaryBarrier {
 public:
-    // This doesn't initialize m_value because I worry about performance on PLT, or something.
-    AuxiliaryBarrier() { }
+    AuxiliaryBarrier(): m_value() { }
     
     template<typename U>
     AuxiliaryBarrier(VM&, JSCell*, U&&);
index e5b3fb5..7a0d274 100644 (file)
@@ -41,8 +41,6 @@ DirectArguments::DirectArguments(VM& vm, Structure* structure, unsigned length,
     , m_length(length)
     , m_minCapacity(capacity)
 {
-    m_overrides.clear();
-    
     // When we construct the object from C++ code, we expect the capacity to be at least as large as
     // length. JIT-allocated DirectArguments objects play evil tricks, though.
     ASSERT(capacity >= length);