mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
chore: cherry-pick d4ddf645c3ca from chromium (#23747)
* chore: cherry-pick d4ddf645c3ca from chromium * update patches * [turbofan] Turn some DCHECKs into CHECKs in Schedule methods Bug: chromium:1076708 Change-Id: I7f065791310606e11fe89936a36f0fe7cb0d38e7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2182639 Auto-Submit: Georg Neis <neis@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#67576} Co-authored-by: Electron Bot <anonymous@electronjs.org>
This commit is contained in:
@@ -11,3 +11,5 @@ objects_fix_memory_leak_in_prototypeusers_add.patch
|
||||
fix_build_deprecated_attirbute_for_older_msvc_versions.patch
|
||||
use_context_of_then_function_for_promiseresolvethenablejob.patch
|
||||
merged_regexp_reserve_space_for_all_registers_in_interpreter.patch
|
||||
cherry-pick-d4ddf645c3ca.patch
|
||||
turn_some_dchecks_into_checks_in_schedule_methods.patch
|
||||
|
||||
30
patches/v8/cherry-pick-d4ddf645c3ca.patch
Normal file
30
patches/v8/cherry-pick-d4ddf645c3ca.patch
Normal file
@@ -0,0 +1,30 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Tebbi <tebbi@chromium.org>
|
||||
Date: Tue, 5 May 2020 14:19:52 +0200
|
||||
Subject: fix bug in DeadCodeElimination
|
||||
|
||||
Bug: chromium:1076708
|
||||
Change-Id: I88a5eae0e562e32f1915deff3c4150ec4be14c6c
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2181266
|
||||
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
|
||||
Commit-Queue: Georg Neis <neis@chromium.org>
|
||||
Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
|
||||
Reviewed-by: Georg Neis <neis@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/master@{#67564}
|
||||
|
||||
diff --git a/src/compiler/dead-code-elimination.cc b/src/compiler/dead-code-elimination.cc
|
||||
index f39e6cabfbeb3e4fdd95a36d619c14adb6d5d956..bab6b7b506e368b7b4219015cc34a84b156ccd2d 100644
|
||||
--- a/src/compiler/dead-code-elimination.cc
|
||||
+++ b/src/compiler/dead-code-elimination.cc
|
||||
@@ -317,7 +317,10 @@ Reduction DeadCodeElimination::ReduceDeoptimizeOrReturnOrTerminateOrTailCall(
|
||||
node->opcode() == IrOpcode::kTailCall);
|
||||
Reduction reduction = PropagateDeadControl(node);
|
||||
if (reduction.Changed()) return reduction;
|
||||
- if (FindDeadInput(node) != nullptr) {
|
||||
+ // Terminate nodes are not part of actual control flow, so they should never
|
||||
+ // be replaced with Throw.
|
||||
+ if (node->opcode() != IrOpcode::kTerminate &&
|
||||
+ FindDeadInput(node) != nullptr) {
|
||||
Node* effect = NodeProperties::GetEffectInput(node, 0);
|
||||
Node* control = NodeProperties::GetControlInput(node, 0);
|
||||
if (effect->opcode() != IrOpcode::kUnreachable) {
|
||||
@@ -0,0 +1,108 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Georg Neis <neis@chromium.org>
|
||||
Date: Tue, 5 May 2020 20:11:02 +0200
|
||||
Subject: Turn some DCHECKs into CHECKs in Schedule methods
|
||||
|
||||
Bug: chromium:1076708
|
||||
Change-Id: I7f065791310606e11fe89936a36f0fe7cb0d38e7
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2182639
|
||||
Auto-Submit: Georg Neis <neis@chromium.org>
|
||||
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
|
||||
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/master@{#67576}
|
||||
|
||||
diff --git a/src/compiler/schedule.cc b/src/compiler/schedule.cc
|
||||
index 8bdcef511b6ad9e42e54661e8b676170ac6ebe69..cc3243cb2e1b2080c208f8d4c72e1f450e33cf7c 100644
|
||||
--- a/src/compiler/schedule.cc
|
||||
+++ b/src/compiler/schedule.cc
|
||||
@@ -218,7 +218,7 @@ void Schedule::AddNode(BasicBlock* block, Node* node) {
|
||||
}
|
||||
|
||||
void Schedule::AddGoto(BasicBlock* block, BasicBlock* succ) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
block->set_control(BasicBlock::kGoto);
|
||||
AddSuccessor(block, succ);
|
||||
}
|
||||
@@ -243,7 +243,7 @@ bool IsPotentiallyThrowingCall(IrOpcode::Value opcode) {
|
||||
|
||||
void Schedule::AddCall(BasicBlock* block, Node* call, BasicBlock* success_block,
|
||||
BasicBlock* exception_block) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
DCHECK(IsPotentiallyThrowingCall(call->opcode()));
|
||||
block->set_control(BasicBlock::kCall);
|
||||
AddSuccessor(block, success_block);
|
||||
@@ -253,7 +253,7 @@ void Schedule::AddCall(BasicBlock* block, Node* call, BasicBlock* success_block,
|
||||
|
||||
void Schedule::AddBranch(BasicBlock* block, Node* branch, BasicBlock* tblock,
|
||||
BasicBlock* fblock) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
DCHECK_EQ(IrOpcode::kBranch, branch->opcode());
|
||||
block->set_control(BasicBlock::kBranch);
|
||||
AddSuccessor(block, tblock);
|
||||
@@ -263,7 +263,7 @@ void Schedule::AddBranch(BasicBlock* block, Node* branch, BasicBlock* tblock,
|
||||
|
||||
void Schedule::AddSwitch(BasicBlock* block, Node* sw, BasicBlock** succ_blocks,
|
||||
size_t succ_count) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
DCHECK_EQ(IrOpcode::kSwitch, sw->opcode());
|
||||
block->set_control(BasicBlock::kSwitch);
|
||||
for (size_t index = 0; index < succ_count; ++index) {
|
||||
@@ -273,28 +273,28 @@ void Schedule::AddSwitch(BasicBlock* block, Node* sw, BasicBlock** succ_blocks,
|
||||
}
|
||||
|
||||
void Schedule::AddTailCall(BasicBlock* block, Node* input) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
block->set_control(BasicBlock::kTailCall);
|
||||
SetControlInput(block, input);
|
||||
if (block != end()) AddSuccessor(block, end());
|
||||
}
|
||||
|
||||
void Schedule::AddReturn(BasicBlock* block, Node* input) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
block->set_control(BasicBlock::kReturn);
|
||||
SetControlInput(block, input);
|
||||
if (block != end()) AddSuccessor(block, end());
|
||||
}
|
||||
|
||||
void Schedule::AddDeoptimize(BasicBlock* block, Node* input) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
block->set_control(BasicBlock::kDeoptimize);
|
||||
SetControlInput(block, input);
|
||||
if (block != end()) AddSuccessor(block, end());
|
||||
}
|
||||
|
||||
void Schedule::AddThrow(BasicBlock* block, Node* input) {
|
||||
- DCHECK_EQ(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, block->control());
|
||||
block->set_control(BasicBlock::kThrow);
|
||||
SetControlInput(block, input);
|
||||
if (block != end()) AddSuccessor(block, end());
|
||||
@@ -302,8 +302,8 @@ void Schedule::AddThrow(BasicBlock* block, Node* input) {
|
||||
|
||||
void Schedule::InsertBranch(BasicBlock* block, BasicBlock* end, Node* branch,
|
||||
BasicBlock* tblock, BasicBlock* fblock) {
|
||||
- DCHECK_NE(BasicBlock::kNone, block->control());
|
||||
- DCHECK_EQ(BasicBlock::kNone, end->control());
|
||||
+ CHECK_NE(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, end->control());
|
||||
end->set_control(block->control());
|
||||
block->set_control(BasicBlock::kBranch);
|
||||
MoveSuccessors(block, end);
|
||||
@@ -317,8 +317,8 @@ void Schedule::InsertBranch(BasicBlock* block, BasicBlock* end, Node* branch,
|
||||
|
||||
void Schedule::InsertSwitch(BasicBlock* block, BasicBlock* end, Node* sw,
|
||||
BasicBlock** succ_blocks, size_t succ_count) {
|
||||
- DCHECK_NE(BasicBlock::kNone, block->control());
|
||||
- DCHECK_EQ(BasicBlock::kNone, end->control());
|
||||
+ CHECK_NE(BasicBlock::kNone, block->control());
|
||||
+ CHECK_EQ(BasicBlock::kNone, end->control());
|
||||
end->set_control(block->control());
|
||||
block->set_control(BasicBlock::kSwitch);
|
||||
MoveSuccessors(block, end);
|
||||
Reference in New Issue
Block a user