Commit 791e085d authored by Leszek Swirski's avatar Leszek Swirski Committed by Commit Bot

[sparkplug] Add always_sparkplug variant

Add an always_sparkplug testing variant, and fix a couple of issues it
found.

Bug: v8:11420
Change-Id: I7d87a41e3413f40271a0140118531f075d633b23
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773047Reviewed-by: 's avatarPatrick Thier <pthier@chromium.org>
Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73529}
parent baa83b38
......@@ -1410,6 +1410,7 @@ bool CompileAllWithBaseline(Isolate* isolate,
Handle<SharedFunctionInfo> shared_info = finalize_data.function_handle();
IsCompiledScope is_compiled_scope(*shared_info, isolate);
if (!is_compiled_scope.is_compiled()) continue;
if (!CanCompileWithBaseline(isolate, shared_info)) continue;
if (!CompileSharedWithBaseline(isolate, shared_info, flag,
&is_compiled_scope)) {
return false;
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax --sparkplug
// Flags: --allow-natives-syntax --sparkplug --no-always-sparkplug
// Tier-up across Realms
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax --super-ic --sparkplug
// Flags: --allow-natives-syntax --super-ic --sparkplug --no-always-sparkplug
export let exported = 17;
import imported from 'test-baseline-module-helper.mjs';
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax --super-ic --sparkplug
// Flags: --allow-natives-syntax --super-ic --sparkplug --no-always-sparkplug
function run(f, ...args) {
try { f(...args); } catch (e) {}
......
......@@ -193,6 +193,9 @@ var isInterpreted;
// Returns true if given function in baseline.
var isBaseline;
// Returns true if given function in unoptimized (interpreted or baseline).
var isUnoptimized;
// Returns true if given function is optimized.
var isOptimized;
......@@ -681,8 +684,7 @@ var prettyPrinted;
return;
}
var is_optimized = (opt_status & V8OptimizationStatus.kOptimized) !== 0;
var is_baseline = (opt_status & V8OptimizationStatus.kBaseline) !== 0;
assertFalse(is_optimized && !is_baseline, name_opt);
assertFalse(is_optimized, name_opt);
}
assertOptimized = function assertOptimized(
......@@ -745,6 +747,10 @@ var prettyPrinted;
(opt_status & V8OptimizationStatus.kBaseline) !== 0;
}
isUnoptimized = function isUnoptimized(fun) {
return isInterpreted(fun) || isBaseline(fun);
}
isOptimized = function isOptimized(fun) {
var opt_status = OptimizationStatus(fun, "");
assertTrue((opt_status & V8OptimizationStatus.kIsFunction) !== 0,
......
......@@ -25,7 +25,7 @@ assertFalse(isNeverOptimize());
if (i == 1) {
// f must be interpreted code.
assertTrue(isInterpreted(f));
assertTrue(isUnoptimized(f));
// Run twice (i = 0, 1), then tier-up.
%OptimizeFunctionOnNextCall(f);
......
......@@ -23,5 +23,7 @@ assertOptimized = () => {};
isNeverOptimize = () => {};
isAlwaysOptimize = () => {};
isInterpreted = () => {};
isBaseline = () => {};
isUnoptimized = () => {};
isOptimized = () => {};
isTurboFanned = () => {};
......@@ -89,6 +89,10 @@ try {
isInterpreted = function isInterpreted() {}
isBaseline = function isBaseline() {}
isUnoptimized = function isUnoptimized() {}
isOptimized = function isOptimized() {}
isTurboFanned = function isTurboFanned() {}
......
......@@ -15,6 +15,7 @@ ALL_VARIANT_FLAGS = {
"experimental_regexp": [["--default-to-experimental-regexp-engine"]],
"jitless": [["--jitless"]],
"sparkplug": [["--sparkplug"]],
"always_sparkplug": [[ "--always-sparkplug" ]],
"minor_mc": [["--minor-mc"]],
"no_lfa": [["--no-lazy-feedback-allocation"]],
# No optimization means disable all optimizations. OptimizeFunctionOnNextCall
......@@ -61,7 +62,8 @@ INCOMPATIBLE_FLAGS_PER_VARIANT = {
"stress_js_bg_compile_wasm_code_gc": ["--no-stress-background-compile", "--parallel-compile-tasks"],
"stress": ["--no-stress-opt", "--always-opt", "--no-always-opt", "--liftoff", "--max-inlined-bytecode-size=*",
"--max-inlined-bytecode-size-cumulative=*", "--stress-inline"],
"sparkplug": ["--jitless"],
"sparkplug": ["--jitless", "--no-sparkplug" ],
"always_sparkplug": [ "--jitless", "--no-sparkplug", "--no-always-sparkplug" ],
"turboprop": ["--interrupt-budget=*", "--no-turbo-direct-heap-access", "--no-turboprop"],
"turboprop_as_toptier": ["--interrupt-budget=*", "--no-turbo-direct-heap-access", "--no-turboprop", "--no-turboprop-as-toptier"],
"code_serializer": ["--cache=after-execute", "--cache=full-code-cache", "--cache=none"],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment