Class: Kumi::Core::Analyzer::Passes::LIR::LowerPass::Env
- Inherits:
-
Struct
- Object
- Struct
- Kumi::Core::Analyzer::Passes::LIR::LowerPass::Env
- Defined in:
- lib/kumi/core/analyzer/passes/lir/lower_pass.rb
Instance Method Summary collapse
- #axes ⇒ Object
- #collection_reg_for(axis) ⇒ Object
- #depth ⇒ Object
- #element_reg_for(axis) ⇒ Object
- #index_reg_for(axis) ⇒ Object
-
#initialize ⇒ Env
constructor
A new instance of Env.
- #invalidate_after_depth!(_d) ⇒ Object
- #loop_ids ⇒ Object
- #memo_get(cat, key) ⇒ Object
- #memo_set(cat, key, val) ⇒ Object
- #pop ⇒ Object
- #push(frame) ⇒ Object
Constructor Details
#initialize ⇒ Env
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
#axes ⇒ Object
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) |
#depth ⇒ Object
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_ids ⇒ Object
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 |
#pop ⇒ Object
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 |