diff options
author | Ali Ijaz Sheikh <ofrobots@google.com> | 2015-08-23 06:09:40 -0700 |
---|---|---|
committer | Rod Vagg <rod@vagg.org> | 2015-09-06 21:38:01 +1000 |
commit | 9fddd83cf9adf505bce2e2373881df0c4d41b261 (patch) | |
tree | 4272ce14c10fea496af2e78fc6debb187d613451 /deps/v8/src/string-builder.cc | |
parent | 46b7d151674d138e7ea4342d5f3ada1208b87ff2 (diff) | |
download | android-node-v8-9fddd83cf9adf505bce2e2373881df0c4d41b261.tar.gz android-node-v8-9fddd83cf9adf505bce2e2373881df0c4d41b261.tar.bz2 android-node-v8-9fddd83cf9adf505bce2e2373881df0c4d41b261.zip |
deps: upgrade V8 to 4.5.103.24
Upgrade to the latest branch-head for V8 4.5. For the full commit log see
https://github.com/v8/v8-git-mirror/commits/4.5.103.24
PR-URL: https://github.com/nodejs/node/pull/2509
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'deps/v8/src/string-builder.cc')
-rw-r--r-- | deps/v8/src/string-builder.cc | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/deps/v8/src/string-builder.cc b/deps/v8/src/string-builder.cc index 38c3188a9b..7c46e0d523 100644 --- a/deps/v8/src/string-builder.cc +++ b/deps/v8/src/string-builder.cc @@ -55,25 +55,23 @@ IncrementalStringBuilder::IncrementalStringBuilder(Isolate* isolate) } -void IncrementalStringBuilder::Accumulate() { - // Only accumulate fully written strings. Shrink first if necessary. - DCHECK_EQ(current_index_, current_part()->length()); +void IncrementalStringBuilder::Accumulate(Handle<String> new_part) { Handle<String> new_accumulator; - if (accumulator()->length() + current_part()->length() > String::kMaxLength) { + if (accumulator()->length() + new_part->length() > String::kMaxLength) { // Set the flag and carry on. Delay throwing the exception till the end. new_accumulator = factory()->empty_string(); overflowed_ = true; } else { - new_accumulator = factory() - ->NewConsString(accumulator(), current_part()) - .ToHandleChecked(); + new_accumulator = + factory()->NewConsString(accumulator(), new_part).ToHandleChecked(); } set_accumulator(new_accumulator); } void IncrementalStringBuilder::Extend() { - Accumulate(); + DCHECK_EQ(current_index_, current_part()->length()); + Accumulate(current_part()); if (part_length_ <= kMaxPartLength / kPartLengthGrowthFactor) { part_length_ *= kPartLengthGrowthFactor; } @@ -91,7 +89,7 @@ void IncrementalStringBuilder::Extend() { MaybeHandle<String> IncrementalStringBuilder::Finish() { ShrinkCurrentPart(); - Accumulate(); + Accumulate(current_part()); if (overflowed_) { THROW_NEW_ERROR(isolate_, NewInvalidStringLengthError(), String); } @@ -103,9 +101,7 @@ void IncrementalStringBuilder::AppendString(Handle<String> string) { ShrinkCurrentPart(); part_length_ = kInitialPartLength; // Allocate conservatively. Extend(); // Attach current part and allocate new part. - Handle<String> concat = - factory()->NewConsString(accumulator(), string).ToHandleChecked(); - set_accumulator(concat); -} + Accumulate(string); } -} // namespace v8::internal +} // namespace internal +} // namespace v8 |