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

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

Instance Method Summary collapse

Constructor Details

#initializeEnv

Returns a new instance of Env.



41
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 41

def initialize(**) = super(frames: [], memo: Hash.new { |h, k| h[k] = {} })

Instance Method Details

#axesObject



42
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 42

def axes      = frames.map { _1[:axis] }

#collection_reg_for(axis) ⇒ Object



46
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 46

def collection_reg_for(axis) = frames.reverse.find { _1[:axis] == axis }&.dig(:collection)

#depthObject



49
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 49

def depth       = frames.length

#element_reg_for(axis) ⇒ Object



44
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 44

def element_reg_for(axis)    = frames.reverse.find { _1[:axis] == axis }&.dig(:as_element)

#index_reg_for(axis) ⇒ Object



45
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 45

def index_reg_for(axis)      = frames.reverse.find { _1[:axis] == axis }&.dig(:as_index)

#invalidate_after_depth!(_d) ⇒ Object



52
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 52

def invalidate_after_depth!(_d); end

#loop_idsObject



43
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 43

def loop_ids  = frames.map { _1[:id] }

#memo_get(cat, key) ⇒ Object



50
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 50

def memo_get(cat, key) = memo[cat][key]

#memo_set(cat, key, val) ⇒ Object



51
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 51

def memo_set(cat, key, val) = memo[cat][key] = val

#popObject



48
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 48

def pop         = frames.pop

#push(frame) ⇒ Object



47
# File 'lib/kumi/core/analyzer/passes/lir/lower_pass.rb', line 47

def push(frame) = frames << frame