Class: Kumi::Core::Analyzer::Passes::LIR::InlineDeclarationsPass::Env
- Inherits:
-
Object
- Object
- Kumi::Core::Analyzer::Passes::LIR::InlineDeclarationsPass::Env
- Defined in:
- lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb
Instance Method Summary collapse
- #ambient_regs ⇒ Object
- #axes ⇒ Object
- #frames_after(depth) ⇒ Object
-
#initialize ⇒ Env
constructor
A new instance of Env.
- #pop ⇒ Object
- #push(loop_ins) ⇒ Object
- #reg_for_axis(axis) ⇒ Object
Constructor Details
#initialize ⇒ Env
235 |
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 235 def initialize = @frames = [] |
Instance Method Details
#ambient_regs ⇒ Object
237 |
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 237 def ambient_regs = @frames.flat_map { |f| [f[:el], f[:idx]] } |
#axes ⇒ Object
236 |
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 236 def axes = @frames.map { _1[:axis] } |
#frames_after(depth) ⇒ Object
254 255 256 |
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 254 def frames_after(depth) @frames[depth..] || [] end |
#pop ⇒ Object
247 |
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 247 def pop = @frames.pop |
#push(loop_ins) ⇒ Object
239 240 241 242 243 244 245 |
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 239 def push(loop_ins) @frames << { axis: loop_ins.attributes[:axis], el: loop_ins.attributes[:as_element], idx: loop_ins.attributes[:as_index] } end |
#reg_for_axis(axis) ⇒ Object
249 250 251 252 |
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 249 def reg_for_axis(axis) @frames.reverse.find { _1[:axis] == axis } || raise("no element for axis=#{axis.inspect}") end |