Class: Optimize::Pass

Inherits:
Object
  • Object
show all
Defined in:
lib/optimize/pass.rb

Overview

Abstract base class for optimizer passes. Subclasses override #apply and optionally #name.

Instance Method Summary collapse

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`.

Parameters:

Raises:

  • (NotImplementedError)


14
15
16
# File 'lib/optimize/pass.rb', line 14

def apply(function, type_env:, log:, object_table: nil, **_extras)
  raise NotImplementedError
end

#nameObject



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

Returns:

  • (Boolean)


22
23
24
# File 'lib/optimize/pass.rb', line 22

def one_shot?
  false
end