Class: MilkTea::ControlFlow::Liveness
- Inherits:
-
Object
- Object
- MilkTea::ControlFlow::Liveness
- Defined in:
- lib/milk_tea/core/control_flow/liveness.rb
Defined Under Namespace
Classes: Result
Class Method Summary collapse
Class Method Details
.solve(graph) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/milk_tea/core/control_flow/liveness.rb', line 8 def self.solve(graph) result = Dataflow.solve( graph, direction: :backward, initial: -> { Set.new }, join: lambda do |states| states.reduce(Set.new) { |acc, state| acc | state } end, transfer: lambda do |node, live_out| node.reads | (live_out - node.writes) end, ) Result.new(live_in: result.in_states, live_out: result.out_states) end |