[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:
parent
d287c81969
commit
dd310b4341
@ -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.
|
||||
|
24
test/mjsunit/regress/regress-678917.js
Normal file
24
test/mjsunit/regress/regress-678917.js
Normal 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]);
|
Loading…
Reference in New Issue
Block a user