Title: [111834] trunk/Source
- Revision
- 111834
- Author
- [email protected]
- Date
- 2012-03-23 00:14:29 -0700 (Fri, 23 Mar 2012)
Log Message
BitVector::resizeOutOfLine doesn't memset when converting an inline buffer
https://bugs.webkit.org/show_bug.cgi?id=82012
Reviewed by Filip Pizlo.
Initialize out-of-line buffers while extending an inline buffer. Also export symbols to be used in WebCore.
* wtf/BitVector.cpp:
(WTF::BitVector::resizeOutOfLine):
* wtf/BitVector.h:
(BitVector):
(OutOfLineBits):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (111833 => 111834)
--- trunk/Source/_javascript_Core/ChangeLog 2012-03-23 06:33:02 UTC (rev 111833)
+++ trunk/Source/_javascript_Core/ChangeLog 2012-03-23 07:14:29 UTC (rev 111834)
@@ -1,3 +1,18 @@
+2012-03-23 Ryosuke Niwa <[email protected]>
+
+ BitVector::resizeOutOfLine doesn't memset when converting an inline buffer
+ https://bugs.webkit.org/show_bug.cgi?id=82012
+
+ Reviewed by Filip Pizlo.
+
+ Initialize out-of-line buffers while extending an inline buffer. Also export symbols to be used in WebCore.
+
+ * wtf/BitVector.cpp:
+ (WTF::BitVector::resizeOutOfLine):
+ * wtf/BitVector.h:
+ (BitVector):
+ (OutOfLineBits):
+
2012-03-22 Michael Saboff <[email protected]>
ExecutableAllocator::memoryPressureMultiplier() might can return NaN
Modified: trunk/Source/WTF/wtf/BitVector.cpp (111833 => 111834)
--- trunk/Source/WTF/wtf/BitVector.cpp 2012-03-23 06:33:02 UTC (rev 111833)
+++ trunk/Source/WTF/wtf/BitVector.cpp 2012-03-23 07:14:29 UTC (rev 111834)
@@ -89,13 +89,14 @@
{
ASSERT(numBits > maxInlineBits());
OutOfLineBits* newOutOfLineBits = OutOfLineBits::create(numBits);
+ size_t newNumWords = newOutOfLineBits->numWords();
if (isInline()) {
// Make sure that all of the bits are zero in case we do a no-op resize.
*newOutOfLineBits->bits() = m_bitsOrPointer & ~(static_cast<uintptr_t>(1) << maxInlineBits());
+ memset(newOutOfLineBits->bits() + 1, 0, (newNumWords - 1) * sizeof(void*));
} else {
if (numBits > size()) {
size_t oldNumWords = outOfLineBits()->numWords();
- size_t newNumWords = newOutOfLineBits->numWords();
memcpy(newOutOfLineBits->bits(), outOfLineBits()->bits(), oldNumWords * sizeof(void*));
memset(newOutOfLineBits->bits() + oldNumWords, 0, (newNumWords - oldNumWords) * sizeof(void*));
} else
Modified: trunk/Source/WTF/wtf/BitVector.h (111833 => 111834)
--- trunk/Source/WTF/wtf/BitVector.h 2012-03-23 06:33:02 UTC (rev 111833)
+++ trunk/Source/WTF/wtf/BitVector.h 2012-03-23 07:14:29 UTC (rev 111834)
@@ -104,9 +104,9 @@
}
// Like ensureSize(), but supports reducing the size of the bitvector.
- void resize(size_t numBits);
+ WTF_EXPORT_PRIVATE void resize(size_t numBits);
- void clearAll();
+ WTF_EXPORT_PRIVATE void clearAll();
bool quickGet(size_t bit) const
{
@@ -193,9 +193,9 @@
uintptr_t* bits() { return bitwise_cast<uintptr_t*>(this + 1); }
const uintptr_t* bits() const { return bitwise_cast<const uintptr_t*>(this + 1); }
- static OutOfLineBits* create(size_t numBits);
+ static WTF_EXPORT_PRIVATE OutOfLineBits* create(size_t numBits);
- static void destroy(OutOfLineBits*);
+ static WTF_EXPORT_PRIVATE void destroy(OutOfLineBits*);
private:
OutOfLineBits(size_t numBits)
@@ -211,8 +211,8 @@
const OutOfLineBits* outOfLineBits() const { return bitwise_cast<const OutOfLineBits*>(m_bitsOrPointer << 1); }
OutOfLineBits* outOfLineBits() { return bitwise_cast<OutOfLineBits*>(m_bitsOrPointer << 1); }
- void resizeOutOfLine(size_t numBits);
- void setSlow(const BitVector& other);
+ WTF_EXPORT_PRIVATE void resizeOutOfLine(size_t numBits);
+ WTF_EXPORT_PRIVATE void setSlow(const BitVector& other);
uintptr_t* bits()
{
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes