b097c6c4f1
This add support for ConsString objects allocated inline to the escape analysis pass. The raw hash field in such strings needs special handling similar to existing raw fields. This also contains materialization code within the deoptimizer as usual. R=bmeurer@chromium.org TEST=mjsunit/regress/regress-crbug-648737 BUG=chromium:648737 Review-Url: https://codereview.chromium.org/2357153002 Cr-Commit-Position: refs/heads/master@{#39594}
25 lines
668 B
JavaScript
25 lines
668 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 --turbo --turbo-escape
|
|
|
|
function f(str) {
|
|
var s = "We turn {" + str + "} into a ConsString now";
|
|
return s.length;
|
|
}
|
|
assertEquals(33, f("a"));
|
|
assertEquals(33, f("b"));
|
|
%OptimizeFunctionOnNextCall(f);
|
|
assertEquals(33, f("c"));
|
|
|
|
function g(str) {
|
|
var s = "We also try to materalize {" + str + "} when deopting";
|
|
%DeoptimizeNow();
|
|
return s.length;
|
|
}
|
|
assertEquals(43, g("a"));
|
|
assertEquals(43, g("b"));
|
|
%OptimizeFunctionOnNextCall(g);
|
|
assertEquals(43, g("c"));
|