Changeset 65834 in webkit
- Timestamp:
- Aug 23, 2010 2:59:00 PM (14 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r65827 r65834 1 2010-08-23 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Gavin Barraclough. 4 5 JSON.stringify is much slower than Firefox on particular pathological input 6 https://bugs.webkit.org/show_bug.cgi?id=44456 7 8 Make StringBuilder::reserveCapacity reserve additional space so we don't end up 9 repeatedly copying the entire result string. 10 11 * runtime/StringBuilder.h: 12 (JSC::StringBuilder::append): 13 (JSC::StringBuilder::reserveCapacity): 14 1 15 2010-08-23 Jian Li <jianli@chromium.org> 2 16 -
trunk/JavaScriptCore/runtime/StringBuilder.h
r65177 r65834 45 45 void append(const char* str, size_t len) 46 46 { 47 buffer.reserveCapacity(buffer.size() + len);47 reserveCapacity(buffer.size() + len); 48 48 for (size_t i = 0; i < len; i++) 49 49 buffer.append(static_cast<unsigned char>(str[i])); … … 61 61 62 62 bool isEmpty() { return buffer.isEmpty(); } 63 void reserveCapacity(size_t newCapacity) { buffer.reserveCapacity(newCapacity); } 63 void reserveCapacity(size_t newCapacity) 64 { 65 if (newCapacity < buffer.capacity()) 66 return; 67 buffer.reserveCapacity(std::max(newCapacity, buffer.capacity() + buffer.capacity() / 4 + 1)); 68 } 64 69 void resize(size_t size) { buffer.resize(size); } 65 70 size_t size() const { return buffer.size(); }
Note: See TracChangeset
for help on using the changeset viewer.