LiteralBuffer::ExpandBuffer always grows

Upstream: https://chromium-review.googlesource.com/c/1405859

Bug: 168041375
Test: atest proxy_resolver_v8_unittest
Change-Id: I63dc386af7bebeaa217b864cd1931af79f75c53e
(cherry picked from commit 05cbe2825f00470860200896b20960b66e2549ee)
diff --git a/src/parsing/scanner.cc b/src/parsing/scanner.cc
index 781832c..38d1936 100644
--- a/src/parsing/scanner.cc
+++ b/src/parsing/scanner.cc
@@ -68,13 +68,14 @@
 }
 
 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 e592deb..02cd247 100644
--- a/src/parsing/scanner.h
+++ b/src/parsing/scanner.h
@@ -482,8 +482,7 @@
 
    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) {