Commit f53406da authored by Ross McIlroy's avatar Ross McIlroy Committed by V8 LUCI CQ

[Turboprop] Don't do scheduled effect-control-linearization.

Moves back to the same approach as TurboFan of keeping the graph
unscheduled during effect control linearization and later backend
phases and only scheduling the graph immediately before instruction
selection. This gives better code generation, though at a small cost
of more background optimization time.

BUG=v8:9684

Change-Id: I4fb32b5d332e977ca480ac9cceff955750ddd320
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2999091
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Auto-Submit: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: 's avatarSantiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75535}
parent f6196f0f
...@@ -29,6 +29,7 @@ bool CanAllocate(const Node* node) { ...@@ -29,6 +29,7 @@ bool CanAllocate(const Node* node) {
case IrOpcode::kDebugBreak: case IrOpcode::kDebugBreak:
case IrOpcode::kDeoptimizeIf: case IrOpcode::kDeoptimizeIf:
case IrOpcode::kDeoptimizeUnless: case IrOpcode::kDeoptimizeUnless:
case IrOpcode::kDynamicCheckMapsWithDeoptUnless:
case IrOpcode::kEffectPhi: case IrOpcode::kEffectPhi:
case IrOpcode::kIfException: case IrOpcode::kIfException:
case IrOpcode::kLoad: case IrOpcode::kLoad:
......
...@@ -2923,17 +2923,23 @@ bool PipelineImpl::OptimizeGraphForMidTier(Linkage* linkage) { ...@@ -2923,17 +2923,23 @@ bool PipelineImpl::OptimizeGraphForMidTier(Linkage* linkage) {
data->InitializeFrameData(linkage->GetIncomingDescriptor()); data->InitializeFrameData(linkage->GetIncomingDescriptor());
ComputeScheduledGraph(); Run<EffectControlLinearizationPhase>();
RunPrintAndVerify(EffectControlLinearizationPhase::phase_name(), true);
Run<ScheduledEffectControlLinearizationPhase>(); Run<LateOptimizationPhase>();
RunPrintAndVerify(ScheduledEffectControlLinearizationPhase::phase_name(), RunPrintAndVerify(LateOptimizationPhase::phase_name(), true);
true);
// Optimize memory access and allocation operations.
Run<MemoryOptimizationPhase>();
RunPrintAndVerify(MemoryOptimizationPhase::phase_name(), true);
data->source_positions()->RemoveDecorator(); data->source_positions()->RemoveDecorator();
if (data->info()->trace_turbo_json()) { if (data->info()->trace_turbo_json()) {
data->node_origins()->RemoveDecorator(); data->node_origins()->RemoveDecorator();
} }
ComputeScheduledGraph();
return SelectInstructions(linkage); return SelectInstructions(linkage);
} }
......
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