[crankshaft] Fix string addition to check for max length of cons string.

BUG=chromium:678917

Review-Url: https://codereview.chromium.org/2653623002
Cr-Commit-Position: refs/heads/master@{#42621}
This commit is contained in:
jarin 2017-01-24 01:35:56 -08:00 committed by Commit bot
parent d287c81969
commit dd310b4341
2 changed files with 27 additions and 0 deletions

View File

@ -2241,6 +2241,9 @@ HValue* HGraphBuilder::BuildUncheckedStringAdd(
IfBuilder if_createcons(this);
if_createcons.If<HCompareNumericAndBranch>(
length, Add<HConstant>(ConsString::kMinLength), Token::GTE);
if_createcons.And();
if_createcons.If<HCompareNumericAndBranch>(
length, Add<HConstant>(ConsString::kMaxLength), Token::LTE);
if_createcons.Then();
{
// Create a cons string.

View File

@ -0,0 +1,24 @@
// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
s1 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
s1 += s1;
s1 += s1;
s1 += s1;
s1 += s1;
s0 = 'a';
function g() {
for (var j = 0; j < 1000000; j++) {
s0 += s1;
}
}
try {
g();
} catch (e) {
}
assertEquals('x', s0[10]);