c77622318d
String::SlowFlatten assumed that ConsStrings with empty first parts have flattened strings as their second part. TurboFan, however, can create ConsStrings with empty first parts and arbitrary second parts. With this CL we call String::Flatten on the second part of a ConsString if the first part is empty, but only when String::Flatten would not call String::SlowFlatten. R=jkummerow@chromium.org BUG=chromium:696651 Change-Id: I9acb681de1be695e1ec2f6f6d28b9e4dc4344e98 Reviewed-on: https://chromium-review.googlesource.com/448457 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#43513}
23 lines
541 B
JavaScript
23 lines
541 B
JavaScript
// 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.
|
|
|
|
// Flags: --allow-natives-syntax --turbo
|
|
|
|
function get_a() { return "aaaaaaaaaaaaaa"; }
|
|
function get_b() { return "bbbbbbbbbbbbbb"; }
|
|
|
|
function get_string() {
|
|
return get_a() + get_b();
|
|
}
|
|
|
|
function prefix(s) {
|
|
return s + get_string();
|
|
}
|
|
|
|
prefix("");
|
|
prefix("");
|
|
%OptimizeFunctionOnNextCall(prefix);
|
|
var s = prefix("");
|
|
assertFalse(s === "aaaaaaaaaaaaaabbbbbbbbbbbbbc");
|