diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2012-04-17 11:03:39 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-26 08:55:55 +0200 |
commit | 227e72d1bba70d518639996aab4146b060507cd6 (patch) | |
tree | 723564e760e94a7d205a3d3300c44192e1d2f2e1 /src/3rdparty/v8/src/preparser-api.cc | |
parent | 5b1fcb16da41f711f27f2e8ff84de8b70a30b645 (diff) | |
download | qtjsbackend-227e72d1bba70d518639996aab4146b060507cd6.tar.gz |
Updated V8 from git://github.com/v8/v8.git to 57f8959fb264354ba1a2e5118db512f588917061
Update V8 source to version 3.10.1.
* Added optimizations and stability improvements on all platforms.
* Various performance improvements.
* Cleanup ScopeInfo and SerializedScopeInfo.
* Introduce extended mode.
* Implemented performance improvements to the incremental garbage
collector.
* Fixed handling of arrays in DefineOwnProperty. (issue 1756)
* Fixed GCC 4.7 warnings.
* Performance improvements for large Smi-only arrays.
* Reduce the space used by the stack for the profiling thread.
* Reduced memory use immediately after starting V8.
* Fixed VFP detection through compiler defines. (issue 1996)
* Remove static initializers in v8. (issue 1859)
* Optimized boot-up memory use.
* Optimized regular expressions.
Change-Id: I2dad3092612de279179950dae4dd43daf0463a9f
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Diffstat (limited to 'src/3rdparty/v8/src/preparser-api.cc')
-rw-r--r-- | src/3rdparty/v8/src/preparser-api.cc | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/3rdparty/v8/src/preparser-api.cc b/src/3rdparty/v8/src/preparser-api.cc index 1bca9a3..6e8556a 100644 --- a/src/3rdparty/v8/src/preparser-api.cc +++ b/src/3rdparty/v8/src/preparser-api.cc @@ -46,10 +46,10 @@ namespace v8 { namespace internal { // UTF16Buffer based on a v8::UnicodeInputStream. -class InputStreamUTF16Buffer : public UC16CharacterStream { +class InputStreamUtf16Buffer : public Utf16CharacterStream { public: - /* The InputStreamUTF16Buffer maintains an internal buffer - * that is filled in chunks from the UC16CharacterStream. + /* The InputStreamUtf16Buffer maintains an internal buffer + * that is filled in chunks from the Utf16CharacterStream. * It also maintains unlimited pushback capability, but optimized * for small pushbacks. * The pushback_buffer_ pointer points to the limit of pushbacks @@ -60,8 +60,8 @@ class InputStreamUTF16Buffer : public UC16CharacterStream { * new buffer. When this buffer is read to the end again, the cursor is * switched back to the internal buffer */ - explicit InputStreamUTF16Buffer(v8::UnicodeInputStream* stream) - : UC16CharacterStream(), + explicit InputStreamUtf16Buffer(v8::UnicodeInputStream* stream) + : Utf16CharacterStream(), stream_(stream), pushback_buffer_(buffer_), pushback_buffer_end_cache_(NULL), @@ -70,7 +70,7 @@ class InputStreamUTF16Buffer : public UC16CharacterStream { buffer_cursor_ = buffer_end_ = buffer_ + kPushBackSize; } - virtual ~InputStreamUTF16Buffer() { + virtual ~InputStreamUtf16Buffer() { if (pushback_buffer_backing_ != NULL) { DeleteArray(pushback_buffer_backing_); } @@ -127,12 +127,18 @@ class InputStreamUTF16Buffer : public UC16CharacterStream { uc16* buffer_start = buffer_ + kPushBackSize; buffer_cursor_ = buffer_end_ = buffer_start; while ((value = stream_->Next()) >= 0) { - if (value > static_cast<int32_t>(unibrow::Utf8::kMaxThreeByteChar)) { - value = unibrow::Utf8::kBadChar; + if (value > + static_cast<int32_t>(unibrow::Utf16::kMaxNonSurrogateCharCode)) { + buffer_start[buffer_end_++ - buffer_start] = + unibrow::Utf16::LeadSurrogate(value); + buffer_start[buffer_end_++ - buffer_start] = + unibrow::Utf16::TrailSurrogate(value); + } else { + // buffer_end_ is a const pointer, but buffer_ is writable. + buffer_start[buffer_end_++ - buffer_start] = static_cast<uc16>(value); } - // buffer_end_ is a const pointer, but buffer_ is writable. - buffer_start[buffer_end_++ - buffer_start] = static_cast<uc16>(value); - if (buffer_end_ == buffer_ + kPushBackSize + kBufferSize) break; + // Stop one before the end of the buffer in case we get a surrogate pair. + if (buffer_end_ <= buffer_ + 1 + kPushBackSize + kBufferSize) break; } return buffer_end_ > buffer_start; } @@ -179,7 +185,7 @@ UnicodeInputStream::~UnicodeInputStream() { } PreParserData Preparse(UnicodeInputStream* input, size_t max_stack) { - internal::InputStreamUTF16Buffer buffer(input); + internal::InputStreamUtf16Buffer buffer(input); uintptr_t stack_limit = reinterpret_cast<uintptr_t>(&buffer) - max_stack; internal::UnicodeCache unicode_cache; internal::Scanner scanner(&unicode_cache); |