6321916c46
Adds a CheckString to all operand inputs of JSStringConcat. The operands are already known to be strings, so this will get eliminated in almost all cases, however, if there is a yield within the concatenation then we lose the knowledge that the previous operands are strings since the values are loaded from the generator object. Adds a test for this case. BUG=v8:6243 Change-Id: I1601a316e6efbed1c53486f1027cb0ea023ff030 Reviewed-on: https://chromium-review.googlesource.com/549301 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#46243}
16 lines
427 B
JavaScript
16 lines
427 B
JavaScript
// Copyright 2016 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
|
|
|
|
function* foo() {
|
|
var f = `foo${ yield 'yielded' }bar`;
|
|
return f;
|
|
}
|
|
|
|
%OptimizeFunctionOnNextCall(foo);
|
|
var gen = foo();
|
|
assertEquals('yielded', gen.next('unused').value);
|
|
assertEquals('foobazbar', gen.next('baz').value);
|