Changeset 94640 in webkit for trunk/Source/JavaScriptCore
- Timestamp:
- Sep 6, 2011, 10:43:09 PM (14 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r94632 r94640 1 2011-09-06 Xianzhu Wang <[email protected]> 2 3 Replace usages of Vector<UChar> with existing StringBuilder 4 https://bugs.webkit.org/show_bug.cgi?id=67079 5 6 Reviewed by Gavin Barraclough. 7 8 This is part of work to support 8-bit string buffers. 9 Adds StringBuilder::characters() because the original Vector<UChar>::data() 10 is widely used. 11 Sets the minimum size of buffer to 16 to prevent possible performance 12 regression. Further performance investigation should be done in 13 https://bugs.webkit.org/show_bug.cgi?id=67084. 14 15 * wtf/Forward.h: 16 * wtf/text/StringBuilder.cpp: 17 (WTF::StringBuilder::appendUninitialized): Sets minimum buffer size to 16 bytes. 18 * wtf/text/StringBuilder.h: 19 (WTF::StringBuilder::operator[]): 20 (WTF::StringBuilder::characters): Added. 21 1 22 2011-09-06 Mark Hahnenberg <[email protected]> 2 23 -
trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp
r94627 r94640 36 36 37 37 using namespace WTF::double_conversion; 38 39 // To avoid conflict with WTF::StringBuilder. 40 typedef WTF::double_conversion::StringBuilder DoubleConversionStringBuilder; 38 41 39 42 namespace JSC { … … 349 352 // Round if the argument is not undefined, always format as exponential. 350 353 char buffer[WTF::NumberToStringBufferLength]; 351 StringBuilder builder(buffer, WTF::NumberToStringBufferLength);354 DoubleConversionStringBuilder builder(buffer, WTF::NumberToStringBufferLength); 352 355 const DoubleToStringConverter& converter = DoubleToStringConverter::EcmaScriptConverter(); 353 356 builder.Reset(); … … 388 391 389 392 char buffer[WTF::NumberToStringBufferLength]; 390 StringBuilder builder(buffer, WTF::NumberToStringBufferLength);393 DoubleConversionStringBuilder builder(buffer, WTF::NumberToStringBufferLength); 391 394 const DoubleToStringConverter& converter = DoubleToStringConverter::EcmaScriptConverter(); 392 395 builder.Reset(); … … 426 429 427 430 char buffer[WTF::NumberToStringBufferLength]; 428 StringBuilder builder(buffer, WTF::NumberToStringBufferLength);431 DoubleConversionStringBuilder builder(buffer, WTF::NumberToStringBufferLength); 429 432 const DoubleToStringConverter& converter = DoubleToStringConverter::EcmaScriptConverter(); 430 433 builder.Reset(); -
trunk/Source/JavaScriptCore/wtf/Forward.h
r74936 r94640 41 41 class String; 42 42 class StringBuffer; 43 class StringBuilder; 43 44 class StringImpl; 44 45 } … … 60 61 using WTF::String; 61 62 using WTF::StringBuffer; 63 using WTF::StringBuilder; 62 64 using WTF::StringImpl; 63 65 -
trunk/Source/JavaScriptCore/wtf/text/StringBuilder.cpp
r69683 r94640 30 30 31 31 namespace WTF { 32 33 static const unsigned minimumCapacity = 16; 32 34 33 35 void StringBuilder::reifyString() … … 127 129 128 130 // We need to realloc the buffer. 129 allocateBuffer(m_buffer->characters(), std::max(requiredLength, m_buffer->length() * 2));131 allocateBuffer(m_buffer->characters(), std::max(requiredLength, std::max(minimumCapacity, m_buffer->length() * 2))); 130 132 } else { 131 133 ASSERT(m_string.length() == m_length); 132 allocateBuffer(m_string.characters(), std::max(requiredLength, requiredLength * 2));134 allocateBuffer(m_string.characters(), std::max(requiredLength, std::max(minimumCapacity, m_length * 2))); 133 135 } 134 136 -
trunk/Source/JavaScriptCore/wtf/text/StringBuilder.h
r94336 r94640 109 109 { 110 110 ASSERT(i < m_length); 111 return characters()[i]; 112 } 113 114 const UChar* characters() const 115 { 116 if (!m_length) 117 return 0; 111 118 if (!m_string.isNull()) 112 return m_string [i];119 return m_string.characters(); 113 120 ASSERT(m_buffer); 114 return (*m_buffer)[i];121 return m_buffer->characters(); 115 122 } 116 123
Note:
See TracChangeset
for help on using the changeset viewer.