| Index: src/v8conversions.cc
|
| diff --git a/src/v8conversions.cc b/src/v8conversions.cc
|
| index 26a4868a8d2d7b7fa2ce544e239cfdb79e46be46..c6755d593cec63db62003140a5af69a752cbe56b 100644
|
| --- a/src/v8conversions.cc
|
| +++ b/src/v8conversions.cc
|
| @@ -41,40 +41,40 @@ namespace internal {
|
|
|
| namespace {
|
|
|
| -// C++-style iterator adaptor for StringCharacterStream
|
| +// C++-style iterator adaptor for StringInputBuffer
|
| // (unlike C++ iterators the end-marker has different type).
|
| -class StringCharacterStreamIterator {
|
| +class StringInputBufferIterator {
|
| public:
|
| class EndMarker {};
|
|
|
| - explicit StringCharacterStreamIterator(StringCharacterStream* stream);
|
| + explicit StringInputBufferIterator(StringInputBuffer* buffer);
|
|
|
| - uint16_t operator*() const;
|
| + int operator*() const;
|
| void operator++();
|
| bool operator==(EndMarker const&) const { return end_; }
|
| bool operator!=(EndMarker const& m) const { return !end_; }
|
|
|
| private:
|
| - StringCharacterStream* const stream_;
|
| - uint16_t current_;
|
| + StringInputBuffer* const buffer_;
|
| + int current_;
|
| bool end_;
|
| };
|
|
|
|
|
| -StringCharacterStreamIterator::StringCharacterStreamIterator(
|
| - StringCharacterStream* stream) : stream_(stream) {
|
| +StringInputBufferIterator::StringInputBufferIterator(
|
| + StringInputBuffer* buffer) : buffer_(buffer) {
|
| ++(*this);
|
| }
|
|
|
| -uint16_t StringCharacterStreamIterator::operator*() const {
|
| +int StringInputBufferIterator::operator*() const {
|
| return current_;
|
| }
|
|
|
|
|
| -void StringCharacterStreamIterator::operator++() {
|
| - end_ = !stream_->HasMore();
|
| +void StringInputBufferIterator::operator++() {
|
| + end_ = !buffer_->has_more();
|
| if (!end_) {
|
| - current_ = stream_->GetNext();
|
| + current_ = buffer_->GetNext();
|
| }
|
| }
|
| } // End anonymous namespace.
|
| @@ -83,7 +83,6 @@ void StringCharacterStreamIterator::operator++() {
|
| double StringToDouble(UnicodeCache* unicode_cache,
|
| String* str, int flags, double empty_string_val) {
|
| StringShape shape(str);
|
| - // TODO(dcarney): Use a Visitor here.
|
| if (shape.IsSequentialAscii()) {
|
| const char* begin = SeqOneByteString::cast(str)->GetChars();
|
| const char* end = begin + str->length();
|
| @@ -95,11 +94,10 @@ double StringToDouble(UnicodeCache* unicode_cache,
|
| return InternalStringToDouble(unicode_cache, begin, end, flags,
|
| empty_string_val);
|
| } else {
|
| - ConsStringIteratorOp op;
|
| - StringCharacterStream stream(str, &op);
|
| + StringInputBuffer buffer(str);
|
| return InternalStringToDouble(unicode_cache,
|
| - StringCharacterStreamIterator(&stream),
|
| - StringCharacterStreamIterator::EndMarker(),
|
| + StringInputBufferIterator(&buffer),
|
| + StringInputBufferIterator::EndMarker(),
|
| flags,
|
| empty_string_val);
|
| }
|
| @@ -110,7 +108,6 @@ double StringToInt(UnicodeCache* unicode_cache,
|
| String* str,
|
| int radix) {
|
| StringShape shape(str);
|
| - // TODO(dcarney): Use a Visitor here.
|
| if (shape.IsSequentialAscii()) {
|
| const char* begin = SeqOneByteString::cast(str)->GetChars();
|
| const char* end = begin + str->length();
|
| @@ -120,11 +117,10 @@ double StringToInt(UnicodeCache* unicode_cache,
|
| const uc16* end = begin + str->length();
|
| return InternalStringToInt(unicode_cache, begin, end, radix);
|
| } else {
|
| - ConsStringIteratorOp op;
|
| - StringCharacterStream stream(str, &op);
|
| + StringInputBuffer buffer(str);
|
| return InternalStringToInt(unicode_cache,
|
| - StringCharacterStreamIterator(&stream),
|
| - StringCharacterStreamIterator::EndMarker(),
|
| + StringInputBufferIterator(&buffer),
|
| + StringInputBufferIterator::EndMarker(),
|
| radix);
|
| }
|
| }
|
|
|