Snap for 7214043 from b5d9334de81ccae3b0a378fbcf9b2e236b659caf to r-keystone-qcom-release
Change-Id: I3bedfb5325c6685b43314b9349265ecafa422df0
diff --git a/src/messages.h b/src/messages.h
index 030fc0b..e94ce16 100644
--- a/src/messages.h
+++ b/src/messages.h
@@ -695,7 +695,7 @@
T(TooManyArguments, \
"Too many arguments in function call (only 65535 allowed)") \
T(TooManyParameters, \
- "Too many parameters in function definition (only 65535 allowed)") \
+ "Too many parameters in function definition (only 65534 allowed)") \
T(TooManySpreads, \
"Literal containing too many nested spreads (up to 65534 allowed)") \
T(TooManyVariables, "Too many variables declared (only 4194303 allowed)") \
diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h
index 9d13724..60d5e11 100644
--- a/src/parsing/parser-base.h
+++ b/src/parsing/parser-base.h
@@ -3830,7 +3830,8 @@
if (peek() != Token::RPAREN) {
while (true) {
- if (parameters->arity > Code::kMaxArguments) {
+ // Add one since we're going to be adding a parameter.
+ if (parameters->arity + 1 > Code::kMaxArguments) {
ReportMessage(MessageTemplate::kTooManyParameters);
*ok = false;
return;
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) {