// Copyright 2019 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. #ifndef V8_COMPILER_SCHEDULED_MACHINE_LOWERING_H_ #define V8_COMPILER_SCHEDULED_MACHINE_LOWERING_H_ #include "src/compiler/graph-assembler.h" #include "src/compiler/memory-lowering.h" #include "src/compiler/select-lowering.h" namespace v8 { namespace internal { namespace compiler { class NodeOriginTable; class Schedule; class SourcePositionTable; // Performs machine lowering on an already scheduled graph. class ScheduledMachineLowering final { public: ScheduledMachineLowering(JSGraph* js_graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, PoisoningMitigationLevel poison_level); ~ScheduledMachineLowering() = default; void Run(); private: bool LowerNode(Node* node); JSGraphAssembler* gasm() { return &graph_assembler_; } Schedule* schedule() { return schedule_; } Schedule* schedule_; JSGraphAssembler graph_assembler_; SelectLowering select_lowering_; MemoryLowering memory_lowering_; ZoneVector reducers_; SourcePositionTable* source_positions_; NodeOriginTable* node_origins_; }; } // namespace compiler } // namespace internal } // namespace v8 #endif // V8_COMPILER_SCHEDULED_MACHINE_LOWERING_H_