[turbofan] Remove an incorrect DCHECK

Due to an optimization in how resumable functions are compiled, we can
actually see another Oddball type as StrictEquality inputs. I'm giving
up on getting the DCHECK right and removing it entirely.

Bug: chromium:1102683
Change-Id: Ia210777c66641e898e96900713710a51ebed311d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2287494
Auto-Submit: Georg Neis <neis@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68735}
This commit is contained in:
Georg Neis 2020-07-08 12:48:30 +02:00 committed by Commit Bot
parent 459b9aeff9
commit c681125cf9
2 changed files with 20 additions and 4 deletions

View File

@ -1251,10 +1251,6 @@ Type OperationTyper::StrictEqual(Type lhs, Type rhs) {
// Types are equal and are inhabited only by a single semantic value,
// which is not nan due to the earlier check.
DCHECK(lhs.Is(rhs));
// TODO(neis): The last condition in this DCHECK is due the unittest
// throwing arbitrary types at the typer. This is not easy to fix.
DCHECK(lhs.Is(Type::NonInternal()) || lhs.Is(Type::Hole()) ||
FLAG_testing_d8_test_runner);
return singleton_true();
}
if ((lhs.Is(Type::Unique()) || rhs.Is(Type::Unique())) && !lhs.Maybe(rhs)) {

View File

@ -0,0 +1,20 @@
// Copyright 2020 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
async function foo() {
for (let i = 0; i < 1; i++) {
while (i !== i) {
await 42;
function unused() {}
return;
}
}
}
%PrepareFunctionForOptimization(foo);
foo();
%OptimizeFunctionOnNextCall(foo);
foo();