ad4d79c2e3
Allow sharing of hints and modification of shared hints such that feedback can be propagated to the hints for the corresponding register, AND all alias registers. Even propagation from an inlined callee back to the caller is possible. Bug: v8:7790 Change-Id: I96b3c5e41613efa5711ab758db1c3ef7f7ae6418 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1914560 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#65139}
33 lines
633 B
JavaScript
33 lines
633 B
JavaScript
// Copyright 2019 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
|
|
|
|
var obj = Object.create(Object.create({blu: 42}));
|
|
obj.bla = 1;
|
|
|
|
function bar(o) {
|
|
return o.blu;
|
|
}
|
|
|
|
function baz(o) {
|
|
return o.bla;
|
|
}
|
|
|
|
function foo(o) {
|
|
baz(o);
|
|
%TurbofanStaticAssert(bar(o) == 42);
|
|
}
|
|
|
|
%PrepareFunctionForOptimization(bar);
|
|
%PrepareFunctionForOptimization(baz);
|
|
%PrepareFunctionForOptimization(foo);
|
|
bar({});
|
|
bar({bla: 1});
|
|
bar({blu: 1});
|
|
bar({blo: 1});
|
|
foo(obj);
|
|
%OptimizeFunctionOnNextCall(foo);
|
|
foo(obj);
|