diff options
author | Toon Verwaest <verwaest@chromium.org> | 2019-01-11 11:27:18 +0100 |
---|---|---|
committer | Anis Assi <anisassi@google.com> | 2021-01-08 01:56:03 -0800 |
commit | fe979020f8fbb627e2278bef7f0986814b59baa4 (patch) | |
tree | eb831b45155d1668314d3ddf54088597d51cc3d0 | |
parent | 6e4c3459f817ab73f7ba875a74e222a815cd4f7d (diff) | |
download | v8-android-security-9.0.0_r67.tar.gz |
LiteralBuffer::ExpandBuffer always growsandroid-security-9.0.0_r68android-security-9.0.0_r67android-security-9.0.0_r66
Upstream: https://chromium-review.googlesource.com/c/1405859
Bug: 168041375
Test: atest proxy_resolver_v8_unittest
Change-Id: I63dc386af7bebeaa217b864cd1931af79f75c53e
(cherry picked from commit 05cbe2825f00470860200896b20960b66e2549ee)
-rw-r--r-- | src/parsing/scanner.cc | 9 | ||||
-rw-r--r-- | src/parsing/scanner.h | 3 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/parsing/scanner.cc b/src/parsing/scanner.cc index c1580bbe..07757ba9 100644 --- a/src/parsing/scanner.cc +++ b/src/parsing/scanner.cc @@ -67,13 +67,14 @@ Handle<String> Scanner::LiteralBuffer::Internalize(Isolate* isolate) const { } int Scanner::LiteralBuffer::NewCapacity(int min_capacity) { - int capacity = Max(min_capacity, backing_store_.length()); - int new_capacity = Min(capacity * kGrowthFactory, capacity + kMaxGrowth); - return new_capacity; + return min_capacity < (kMaxGrowth / (kGrowthFactor - 1)) + ? min_capacity * kGrowthFactor + : min_capacity + kMaxGrowth; } void Scanner::LiteralBuffer::ExpandBuffer() { - Vector<byte> new_store = Vector<byte>::New(NewCapacity(kInitialCapacity)); + int min_capacity = Max(kInitialCapacity, backing_store_.length()); + Vector<byte> new_store = Vector<byte>::New(NewCapacity(min_capacity)); MemCopy(new_store.start(), backing_store_.start(), position_); backing_store_.Dispose(); backing_store_ = new_store; diff --git a/src/parsing/scanner.h b/src/parsing/scanner.h index 9885b8ed..9cb3f117 100644 --- a/src/parsing/scanner.h +++ b/src/parsing/scanner.h @@ -419,8 +419,7 @@ class Scanner { private: static const int kInitialCapacity = 16; - static const int kGrowthFactory = 4; - static const int kMinConversionSlack = 256; + static const int kGrowthFactor = 4; static const int kMaxGrowth = 1 * MB; inline bool IsValidAscii(char code_unit) { |