Ignore:
Timestamp:
Jan 28, 2006, 8:12:59 PM (19 years ago)
Author:
mjs
Message:

Reviewed by Dave Hyatt.


  • JavaScriptCore.xcodeproj/project.pbxproj:
  • kjs/internal.cpp: (KJS::Parser::saveNewNode): Apply Vector. (KJS::clearNewNodes): ditto
  • kjs/number_object.cpp: (integer_part_noexp): ditto (char_sequence): ditto
  • kjs/ustring.cpp: (KJS::UString::UTF8String): ditto
  • kxmlcore/HashMap.h: (KXMLCore::deleteAllValues): Tweaked this to only apply to HashMap, other versions are useful for other containers.
  • kxmlcore/Vector.h: Added. Implemented a Vector class, which should be usable for all Array/QVector style purposes, and also as a stack buffer with oversize handling. Also some helper classes to make vector operations as efficient as possible for POD types and for simple non-PODs like RefPtr. (KXMLCore::): (KXMLCore::VectorTypeOperations::destruct): (KXMLCore::VectorTypeOperations::initialize): (KXMLCore::VectorTypeOperations::move): (KXMLCore::VectorTypeOperations::uninitializedCopy): (KXMLCore::VectorTypeOperations::uninitializedFill): (KXMLCore::VectorBuffer::VectorBuffer): (KXMLCore::VectorBuffer::~VectorBuffer): (KXMLCore::VectorBuffer::deallocateBuffer): (KXMLCore::VectorBuffer::inlineBuffer): (KXMLCore::Vector::Vector): (KXMLCore::Vector::~Vector): (KXMLCore::Vector::size): (KXMLCore::Vector::capacity): (KXMLCore::Vector::isEmpty): (KXMLCore::Vector::at): (KXMLCore::Vector::operator[]): (KXMLCore::Vector::data): (KXMLCore::Vector::operator T*): (KXMLCore::Vector::operator const T*): (KXMLCore::Vector::begin): (KXMLCore::Vector::end): (KXMLCore::Vector::clear): (KXMLCore::Vector::fill): (KXMLCore::Vector::operator=): (KXMLCore::::Vector): (KXMLCore::::operator): (KXMLCore::::fill): (KXMLCore::::expandCapacity): (KXMLCore::::resize): (KXMLCore::::reserveCapacity): (KXMLCore::::append): (KXMLCore::deleteAllValues):
  • kxmlcore/VectorTraits.h: Added. (KXMLCore::VectorTraits): Traits to enable making Vector efficient for simple types.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/ustring.cpp

    r12317 r12435  
    4141#include "dtoa.h"
    4242
    43 #include <algorithm>
     43#include <kxmlcore/Vector.h>
    4444
    4545using std::max;
     
    13041304  // Allocate a buffer big enough to hold all the characters.
    13051305  const int length = size();
    1306   const unsigned bufferSize = length * 3;
    1307   char fixedSizeBuffer[1024];
    1308   char *buffer;
    1309   if (bufferSize > sizeof(fixedSizeBuffer)) {
    1310     buffer = new char [bufferSize];
    1311   } else {
    1312     buffer = fixedSizeBuffer;
    1313   }
     1306  Vector<char, 1024> buffer(length * 3);
    13141307
    13151308  // Convert to runs of 8-bit characters.
    1316   char *p = buffer;
     1309  char *p = buffer.begin();
    13171310  const UChar *d = data();
    13181311  for (int i = 0; i != length; ++i) {
     
    13391332  // Return the result as a C string.
    13401333  CString result(buffer, p - buffer);
    1341   if (buffer != fixedSizeBuffer) {
    1342     delete [] buffer;
    1343   }
     1334
    13441335  return result;
    13451336}
Note: See TracChangeset for help on using the changeset viewer.