Class: Kumi::Core::Analyzer::Passes::LIR::InlineDeclarationsPass::Env

Inherits:
Object
  • Object
show all
Defined in:
lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb

Instance Method Summary collapse

Constructor Details

#initializeEnv



235
# File 'lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb', line 235

def initialize = @frames = []

Instance Method Details

#ambient_regsObject



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]] }

#axesObject



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

#popObject



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