Commit 081114b5 authored by Ross McIlroy's avatar Ross McIlroy Committed by Commit Bot

[TurboProp] Use GraphAssembler to track effect/control in linearizer.

Updates the EffectControlLinerizer to feed all nodes it processes
through the GraphAssembler. This is required to enable the GraphAssembler
to maintain the schedule for TurboProp, but also means we can avoid
keeping track of the current effect and control nodes in the
EffectControlLinearizer and use the GraphAssembler for that instead.

Also modifies EffectControlLinearizer to avoid accessing the basic block
while lowering nodes, since a basic block updating GraphAssembler could
modify the current block. Once lowered, we finalizes GraphAssembler to
provide the updated basic block for which the original control should be
processed.

BUG=v8:9684

Change-Id: Ibe7f396e15f8bebf35b9c50d56c245cbc92547f5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1842453
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64528}
parent 7ebde180
This diff is collapsed.
......@@ -670,6 +670,7 @@ void GraphAssembler::ConnectUnreachableToEnd() {
Node* throw_node =
graph()->NewNode(common()->Throw(), current_effect_, current_control_);
NodeProperties::MergeControlToEnd(graph(), common(), throw_node);
current_effect_ = current_control_ = jsgraph()->Dead();
if (block_updater_) {
block_updater_->AddThrow(throw_node);
}
......
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