[wasm][debug] Stage --debug-in-liftoff behind --future

There are only three tests with differing behaviour if Liftoff is used
for debugging.
This CL thus stages the --debug-in-liftoff flag behind --future (tested
by the "future" variant) and excludes the three tests.
This allows us to test the other (already working) tests for
regressions, and iteratively shrinking down the list of failing tests.

Drive-by: Tier down modules in tests before testing debugging features
to avoid hitting a DCHECK in Liftoff recompilation for debugging.

R=thibaudm@chromium.org, ecmziegler@chromium.org

Bug: v8:10351
Change-Id: I3b1dd1a29258ecf13c1f60020fb06358005558d4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2122021
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66889}
This commit is contained in:
Clemens Backes 2020-03-26 18:44:50 +01:00 committed by Commit Bot
parent f2d0550a84
commit 0f4d68dac9
5 changed files with 19 additions and 0 deletions

View File

@ -721,6 +721,7 @@ DEFINE_INT(wasm_tier_mask_for_testing, 0,
DEFINE_BOOL(debug_in_liftoff, false,
"use Liftoff instead of the C++ interpreter for debugging "
"WebAssembly (experimental)")
DEFINE_IMPLICATION(future, debug_in_liftoff)
DEFINE_BOOL(validate_asm, true, "validate asm.js modules before compiling")
DEFINE_BOOL(suppress_asm_messages, false,

View File

@ -139,6 +139,7 @@ class BreakHandler : public debug::DebugDelegate {
Handle<BreakPoint> SetBreakpoint(WasmRunnerBase* runner, int function_index,
int byte_offset,
int expected_set_byte_offset = -1) {
runner->TierDown();
int func_offset =
runner->builder().GetFunctionAt(function_index)->code.offset();
int code_offset = func_offset + byte_offset;

View File

@ -49,6 +49,7 @@ class TestCode {
}
Handle<BreakPoint> BreakOnReturn(WasmRunnerBase* runner) {
runner->TierDown();
uint32_t return_offset_in_function = FindReturn();
int function_index = compiler_->function_index();

View File

@ -258,6 +258,8 @@ class TestingModuleBuilder {
void SetExecutable() { native_module_->SetExecutable(true); }
void TierDown() { native_module_->TierDown(isolate_); }
enum AssumeDebugging : bool { kDebug = true, kNoDebug = false };
CompilationEnv CreateCompilationEnv(AssumeDebugging = kNoDebug);
@ -444,6 +446,8 @@ class WasmRunnerBase : public HandleAndZoneScope {
bool interpret() { return builder_.interpret(); }
void TierDown() { builder_.TierDown(); }
template <typename ReturnType, typename... ParamTypes>
FunctionSig* CreateSig() {
return WasmRunnerBase::CreateSig<ReturnType, ParamTypes...>(&zone_);

View File

@ -16,6 +16,18 @@
'debugger/script-on-after-compile-snapshot': [SKIP],
}], # ALWAYS
##############################################################################
['variant == future', {
# https://crbug.com/v8/10351
# --debug-in-liftoff is staged behind --future, but still shows some
# differences to the old behaviour (in particular, anyref is not
# implemented in Liftoff yet).
# TODO(clemensb/thibaudm): Get this list to zero and remove this block.
'debugger/wasm-scope-info-liftoff': [FAIL],
'debugger/wasm-stepping-in-from-js': [FAIL],
'debugger/wasm-anyref-global': [FAIL],
}],
##############################################################################
['system == android', {
# https://crbug.com/v8/8197