7c0e200373
With lazy feedback allocation, we don't have feedback vectors when function starts executing. If we mark the function on the first execution we would be missing feedback for the initial part of the function and hence the optimized code will not be useful. This cl resets the optimization markers on OSR if the invocation count of the function is less than 1. We may still do wasted optimizations if the function is hot enough for optimizing but not for OSRing. In the long term we may want to fix it differently. This fix covers the most common cases in benchmarks. Bug: chromium:987523 Change-Id: I1cfe82e6b9f95278b77c99b77d4b981828b5c0ab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1739373 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#63124}
20 lines
437 B
JavaScript
20 lines
437 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: --opt --interrupt-budget=100 --budget-for-feedback-vector-allocation=10 --allow-natives-syntax
|
|
|
|
function f() {
|
|
let s = 0;
|
|
for (let i = 0; i < 10; i++) {
|
|
s += i;
|
|
}
|
|
return s;
|
|
}
|
|
|
|
%PrepareFunctionForOptimization(f);
|
|
f();
|
|
f();
|
|
f();
|
|
assertOptimized(f);
|