Class: Optimize::Pass
- Inherits:
-
Object
- Object
- Optimize::Pass
- Defined in:
- lib/optimize/pass.rb
Overview
Abstract base class for optimizer passes. Subclasses override #apply and optionally #name.
Direct Known Subclasses
NoopPass, Optimize::Passes::ArithReassocPass, Optimize::Passes::ConstFoldEnvPass, Optimize::Passes::ConstFoldPass, Optimize::Passes::ConstFoldTier2Pass, Optimize::Passes::DeadBranchFoldPass, Optimize::Passes::DeadStashElimPass, Optimize::Passes::IdentityElimPass, Optimize::Passes::InliningPass
Instance Method Summary collapse
-
#apply(function, type_env:, log:, object_table: nil, **_extras) ⇒ Object
Run this pass on a single IR::Function.
- #name ⇒ Object
- #one_shot? ⇒ Boolean
Instance Method Details
#apply(function, type_env:, log:, object_table: nil, **_extras) ⇒ Object
Run this pass on a single IR::Function. The pass may mutate ‘function.instructions` or `function.children` but must log any skipped optimization decisions to `log`.
14 15 16 |
# File 'lib/optimize/pass.rb', line 14 def apply(function, type_env:, log:, object_table: nil, **_extras) raise NotImplementedError end |
#name ⇒ Object
18 19 20 |
# File 'lib/optimize/pass.rb', line 18 def name self.class.name.to_s.split("::").last.sub(/Pass$/, "").downcase.to_sym end |
#one_shot? ⇒ Boolean
22 23 24 |
# File 'lib/optimize/pass.rb', line 22 def one_shot? false end |